connect()用于建立與指定socket的連接。
創(chuàng)新互聯(lián)公司主營秦安網站建設的網絡公司,主營網站建設方案,app軟件定制開發(fā),秦安h5微信小程序定制開發(fā)搭建,秦安網站營銷推廣歡迎秦安等地區(qū)企業(yè)咨詢頭文件: #include
函數(shù)原型: int connect(int s, const struct sockaddr * name, int namelen);
參數(shù):
s:標識一個未連接socket
name:指向要連接套接字的sockaddr結構體的指針
namelen:sockaddr結構體的字節(jié)長度
注釋:
本函數(shù)用于創(chuàng)建與指定外部端口的連接。s參數(shù)指定一個未連接的數(shù)據(jù)報或流類套接口。如套接口未被捆綁,則系統(tǒng)賦給本地關聯(lián)一個唯一的值,且設置套接口為已捆綁。請注意若名字結構中的地址域為全零的話,則connect()將返回WSAEADDRNOTAVAIL錯誤。
對于流類套接口(SOCK_STREAM類型),利用名字來與一個遠程主機建立連接,一旦套接口調用成功返回,它就能收發(fā)數(shù)據(jù)了。對于數(shù)據(jù)報類套接口(SOCK_DGRAM類型),則設置成一個缺省的目的地址,并用它來進行后續(xù)的send()與recv()調用。
函數(shù)說明
connect()用來將參數(shù)sockfd 的socket 連至參數(shù)serv_addr 指定的網絡地址. 結構sockaddr請參考bind(). 參數(shù)addrlen 為sockaddr 的結構長度.
返回值:成功則返回0, 失敗返回-1, 錯誤原因存于errno 中.[1]
返回值:
若無錯誤發(fā)生,則connect()返回0。否則的話,返回SOCKET_ERROR錯誤,應用程序可通過WSAGetLastError()獲取相應錯誤代碼。對非阻塞套接口而言,若返回值為SOCKET_ERROR則應用程序調用WSAGetLsatError()。如果它指出錯誤代碼為WSAEWOULDBLOCK,則您的應用程序可以:
1.用select(),通過檢查套接口是否可寫,來確定連接請求是否完成。
2.如果您的應用程序使用基于消息的WSAAsynSelect()來表示對連接事件的興趣,則當連接操作完成后,您會收到一個FD_CONNECT消息。
錯誤代碼:
WSAENOTINITIALISED:在使用此API之前應首先成功地調用WSAStartup()。
WSAENETDOWN:套接口實現(xiàn)檢測到網絡子系統(tǒng)失效。
WSAEADDRINUSE:所指的地址已在使用中。
WSAEINTR:通過一個WSACancelBlockingCall()來取消一個(阻塞的)調用。
WSAEINPROGRESS:一個阻塞的套接口調用正在運行中。
WSAEADDRNOTAVAIL:在本地機器上找不到所指的地址。
WSAENOTSUPPORT:所指族中地址無法與本套接口一起使用。
WSAECONNREFUSED:連接嘗試被強制拒絕。
WSAEDESTADDREQ:需要目的地址。
WSAEFAULT:namelen參數(shù)不正確。
WSAEINVAL:套接口沒有準備好與一地址捆綁。
WSAEISCONN:套接口早已連接。
WSAEMFILE:無多余文件描述字。
WSAENETUNREACH:當前無法從本主機訪問網絡。
WSAENOBUFS:無可用緩沖區(qū)。套接口未被連接。
WSAENOTSOCK:描述字不是一個套接口。
WSAETIMEOUT:超時時間到。
WSAEWOULDBLOCK:套接口設置為非阻塞方式且連接不能立即建立。可用select()調用對套接口寫,因為select()時會進行連接。[1]
參見
accept(), bind(), getsockname(), socket(), select(), WSAAsyncSelect().
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。