bind函式解析

2021-07-11 03:30:24 字數 1550 閱讀 2661

名稱

bind()

把名字和套接字相關聯

使用格式

#include

#include

intbind(int

sockfd

,const struct sockaddr*

addr

,socklen_t

addrlen

);功能描述

當用socket()函式建立套接字以後,套接字在命名空間(網路位址族)中存在,但沒有任何位址給它賦值。bind()把用addr指定的位址賦值給用檔案描述符代表的套接字sockfdaddrlen指定了以addr所指向的位址結構體的位元組長度。一般來說,該操作稱為「給套接字命名」。

通常,在乙個sock_stream套接字接收連線之前,必須通過bind()函式用本地位址為套接字命名。

備註:

呼叫bind()函式之後,為socket()函式建立的套接字關聯乙個相應位址,傳送到這個位址的資料可以通過該套接字讀取與使用。

備註:

bind()函式並不是總是需要呼叫的,

。如果使用者程序沒有這個需要,那麼程式可以依賴核心的自動的選址機制來完成自動位址選擇,而不需要呼叫bind()函式,同時也避免不必要的複雜度。在一般情況下,

對於伺服器程序問題需要呼叫bind()函式

,對於客戶程序則不需要呼叫bind()函式。

傳送給引數addr的實際結構依賴於網路協議族。sockaddr結構定義為如下格式:

struct sockaddr

該結構的唯一目的是強制結構指標在addr引數中傳送,以避免編譯過程出現warning。參看如下例項。

返回值成功,返回0;出錯,返回-1,相應地設定全域性變數errno。

錯誤eaccess

位址空間受保護,使用者不具有超級使用者的許可權。

eaddrinuse

給定的位址正被使用。

例項:下面的例項演示了如何在unix域中繫結流套接字,並接收連線。

#include #include #include #include #include #define my_sock_path "/somepath"  

#define listen_backlog 50

#define handle_error(msg) \

do while (0)

int

main(int argc, char *argv)

bind()函式 listen()函式

bind 函式 include include int bind int sockfd,const struct sockaddr addr,socklen t addrlen 12 3sockfd是返回socket函式的返回值 addr 傳入引數 struct sockaddr addr addr...

bind函式詳解

前面我們已經說了,套接字也建立了,地方 也定義了,下面就需要將socket放置在這個 地方 tcp 將他們緊緊地 在一起,用bind函式吧,我們來看看函式原型 int pascal far bind socket s,const struct sockaddr far addr,int namele...

bind函式詳解

前面我們已經說了,套接字也建立了,地方 也定義了,下面就需要將socket放置在這個 地方 tcp 將他們緊緊地 在一起,用bind函式吧,我們來看看函式原型 int pascal far bind socket s,const struct sockaddr far addr,int namele...