connect函式介紹

2021-10-08 17:23:54 字數 910 閱讀 3804

#include

/* see notes */

#include

intconnect

(int sockfd,

const

struct sockaddr *addr, socklen_t addrlen);/*

sockdf:

socket檔案描述符

addr:

傳入引數,指定伺服器端位址資訊,含ip位址和埠號

addrlen:

傳入引數,傳入sizeof(addr)大小

返回值:

成功返回0,失敗返回-1,設定errno

*/

客戶端需要呼叫connect()連線伺服器,connect和bind的引數形式一致,區別在於bind的引數是自己的位址,而connect的引數是對方的位址。connect()成功返回0,出錯返回-1。

對於tcp 套接字,那麼呼叫 connect 函式將激發 tcp 的三次握手過程,而且僅在連線建立成功或出錯時才返回。其**錯返回可能有以下幾種情況:

三次握手無法建立,客戶端發出的 syn 包沒有任何響應,於是返回 timeout 錯誤。這種情況比較常見的原因是對應的服務端 ip 寫錯。

客戶端收到了 rst(復位)回答,這時候客戶端會立即返回 connection refused 錯誤。這種情況比較常見於客戶端傳送連線請求時的請求埠寫錯,因為 rst 是 tcp 在發生錯誤時傳送的一種 tcp 分節。產生 rst 的三個條件是:目的地為某埠的 syn 到達,然而該埠上沒有正在監聽的伺服器(如前所述);tcp 想取消乙個已有連線;tcp 接收到乙個根本不存在的連線上的分節。

客戶發出的 syn 包在網路上引起了"destination unreachable",即目的不可達的錯誤。這種情況比較常見的原因是客戶端和伺服器端路由不通。

connect函式詳解

不得不說,客戶端的connect函式和服務端的accept函式是一對好 如果客戶端沒有去connect,那麼服務端的accept會一直在那裡傻傻地痴痴地等待,我們先來看看connect函式的原型吧 winsock api linkage intwsaapi connect socket s,cons...

網路程式設計 connect函式

1 connect描述 定義函式 int connect int sockfd,struct sockaddr serv addr,int addrlen connect函式通常用於客戶端建立tcp連線。返回值 成功則返回0,失敗返回 1,錯誤原因存於errno中。錯誤 ebadf 引數sockfd...

connect 函式阻塞問題

方法一 採用select 在學習嵌入式linux網路程式設計中,很多同學都發現了乙個問題,那就是呼叫connect函式時,如果服務端關閉,客戶 端呼叫connect 函式時,發現阻塞在那裡,而且利用ctrl c訊號去停止客戶端程式時,需要等待乙個較為長的時間才能響應了,這個時間如果大家 細心會發現,...