2 回答

TA貢獻1847條經(jīng)驗 獲得超7個贊
socket編程中的bind()函數(shù)把IP地址端口相關(guān)信息和套接字相互關(guān)聯(lián)起來。
使用格式
#include <sys/types.h>
#include <sys/socket.h>
int bind(int sockfd, const struct sockaddr *addr,socklen_t *addrlen);
功能描述
當(dāng)用socket()函數(shù)創(chuàng)建套接字以后,套接字在名稱空間(網(wǎng)絡(luò)地址族)中存在,但沒有任何地址給它賦值。bind()把用addr指定的地址賦值給用文件描述符代表的套接字sockfd。addrlen指定了以addr所指向的地址結(jié)構(gòu)體的字節(jié)長度。一般來說,該操作稱為“給套接字命名”。
通常,在一個SOCK_STREAM套接字接收連接之前,必須通過bind()函數(shù)用本地地址為套接字命名。
備注:
調(diào)用bind()函數(shù)之后,為socket()函數(shù)創(chuàng)建的套接字關(guān)聯(lián)一個相應(yīng)地址,發(fā)送到這個地址的數(shù)據(jù)可以通過該套接字讀取與使用。
備注:
bind()函數(shù)并不是總是需要調(diào)用的,只有用戶進程想與一個具體的地址或端口相關(guān)聯(lián)的時候才需要調(diào)用這個函數(shù)。如果用戶進程沒有這個需要,那么程序可以依賴內(nèi)核的自動的選址機制來完成自動地址選擇,而不需要調(diào)用bind()函數(shù),同時也避免不必要的復(fù)雜度。在一般情況下,對于服務(wù)器進程問題需要調(diào)用bind()函數(shù),對于客戶進程則不需要調(diào)用bind()函數(shù)。

TA貢獻1804條經(jīng)驗 獲得超2個贊
bind就是綁定一個公共的服務(wù)地址,只有這樣客戶端才能找到你。打個比方,銀行是不是有個為公眾所知的地址,而客戶卻不需要那個地址,因為到時候是客戶自己根據(jù)銀行的地址找到銀行的。
添加回答
舉報