2 回答

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

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