connect[Linux C函式]

connect[Linux C函式]

本函式用於創建與指定外部連線埠的連線。s參數指定一個未連線的數據報或流類套接口。如套接口未被捆綁,則系統賦給本地關聯一個唯一的值,且設定套接口為已捆綁。請注意若名字結構中的地址域為全零的話,則connect()將返回WSAEADDRNOTAVAIL錯誤。

對於流類套接口(SOCK_STREAM類型),利用名字來與一個遠程主機建立連線,一旦套接口調用成功返回,它就能收發數據了。對於數據報類套接口(SOCK_DGRAM類型),則設定成一個預設的目的地址,並用它來進行後續的send()與recv()調用。

基本信息

相關函式

connect(建立socket連線)

socket,bind,listen

表頭檔案

#include<sys/types.h>

#include<sys/socket.h>

定義函式

int connect (int sockfd, struct sockaddr * serv_addr, int addrlen);

函式說明

connect()用來將參數sockfd 的socket 連至參數serv_addr 指定的網路地址。結構sockaddr請參考bind()。參數addrlen為sockaddr的結構長度。

參數

參數一:套接字描述符

參數二:指向數據結構sockaddr的指針,其中包括目的連線埠和IP位址

參數三:參數二sockaddr的長度,可以通過sizeof(struct sockaddr)獲得

返回值

成功則返回0,失敗返回非0,錯誤碼GetLastError()。

錯誤代碼

EBADF 參數sockfd 非合法socket處理代碼

EFAULT 參數serv_addr指針指向無法存取的記憶體空間

ENOTSOCK 參數sockfd為一檔案描述詞,非socket。

EISCONN 參數sockfd的socket已是連線狀態

ECONNREFUSED 連線要求被server端拒絕。

ETIMEDOUT 企圖連線的操作超過限定時間仍未有回響。

ENETUNREACH 無法傳送數據包至指定的主機。

EAFNOSUPPORT sockaddr結構的sa_family不正確。

EALREADY socket為不可阻斷且先前的連線操作還未完成。

範例

相關詞條

相關搜尋

熱門詞條

聯絡我們