使用格式
#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()函數。