udp程式設計 bind,connect函式的使用

2021-10-02 19:41:48 字數 748 閱讀 4447

udp的connect函式不像tcp,不會觸發三次握手,只是在核心中記錄對端的引數。

基本模式下客戶端每次傳送資料,核心都有可能要做路由查詢,connect可以減小這部分開銷。

客戶端呼叫connect函式後,就可以直接使用recv來獲取伺服器返回,但是這樣只能一對一通訊了。

int main(int argc, char *ar**)

; if ((sd = socket(af_inet, sock_dgram, 0)) < 0)

svr_addr.sin_family = af_inet;

svr_addr.sin_port = htons(port);

svr_addr.sin_addr.s_addr = inet_addr("192.168.1.166");

connect(sd, (struct sockaddr* )&svr_addr, addrlen);

while (1)

close(sd);

return 0;

}

清除之前的記錄,包括路由環境等

記錄新的ip和埠,準備好新的路由環境

設定目標節點的引數是單方向的,客戶端使用了connect,客戶端即可使用send,直接向伺服器傳送資料,如果伺服器沒有使用connect,伺服器不能使用send向客戶端傳送資料。

connect後也可以使用sendto等函式,只是會清除已設定的引數,傳送完後需要重新connect(需要確認)。

UDP程式設計

using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.linq using system.text u...

UDP程式設計

通常使用 點分十進位制 字串表示ip位址,用3個 劃分成四個區。每個區的表示範圍為0 255 埠號具有2個位元組16個位元位的整數 ip是將資料從a主機交付給b主機 埠號用來標識乙個程序,乙個埠號只能被乙個程序占用 ip位址 埠號 套接字,可以進行資料層面的來往,本質上就是程序間的通訊 每乙個程序都...

UDP程式設計

通訊流程 客戶端實現 from socket import sc socket af inet,sock dgram addr 127.0.0.1 8989 while true datastr input 輸入傳送內容 if datastr.eq exit break dataencode dat...