bind函式詳解

2021-09-10 15:45:32 字數 1369 閱讀 7008

前面我們已經說了, 套接字也建立了, 「地方」也定義了,下面就需要將socket放置在這個「地方」(tcp),將他們緊緊地**在一起,用bind函式吧, 我們來看看函式原型:

int pascal far bind (socket s, const struct sockaddr far *addr, int namelen);

第乙個引數當然是待繫結的套接字啦,第二個引數是標識繫結在哪個「地方」, 第三個引數是這個「地方」的占地大小。

返回值表示繫結操作是否成功,0表示成功, -1表示不成功。函式的返回值千萬不要忽視,上次就被人說了。

一般是這麼呼叫的:

iret = bind(socksrv,(sockaddr*)&addrsrv, sizeof(sockaddr)); // 注意強制轉換

我們來對比一下檔案i/o操作和網路i/o操作: 開啟乙個檔案後, 便可以對檔案進行讀寫操作了, 但是, 網路i/o實際上有三個步驟來完成這個功能:

1. 開啟/建立socket

2. 命名socket, 我們知道, socket名稱包含"協議, ip位址,  埠號"這三個要素, 而命名就是通過呼叫bind函式把socket與這三個要素繫結一起來。

3. 建立連線

在後面的博文中, 我們將繼續學習bind.

再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!

前面我們已經說了, 套接字也建立了, 「地方」也定義了,下面就需要將socket放置在這個「地方」(tcp),將他們緊緊地**在一起,用bind函式吧, 我們來看看函式原型:

int pascal far bind (socket s, const struct sockaddr far *addr, int namelen);

第乙個引數當然是待繫結的套接字啦,第二個引數是標識繫結在哪個「地方」, 第三個引數是這個「地方」的占地大小。

返回值表示繫結操作是否成功,0表示成功, -1表示不成功。函式的返回值千萬不要忽視,上次就被人說了。

一般是這麼呼叫的:

iret = bind(socksrv,(sockaddr*)&addrsrv, sizeof(sockaddr)); // 注意強制轉換

我們來對比一下檔案i/o操作和網路i/o操作: 開啟乙個檔案後, 便可以對檔案進行讀寫操作了, 但是, 網路i/o實際上有三個步驟來完成這個功能:

1. 開啟/建立socket

2. 命名socket, 我們知道, socket名稱包含"協議, ip位址,  埠號"這三個要素, 而命名就是通過呼叫bind函式把socket與這三個要素繫結一起來。

3. 建立連線

在後面的博文中, 我們將繼續學習bind.

bind函式詳解

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

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函式解析

名稱 bind 把名字和套接字相關聯 使用格式 include include intbind int sockfd const struct sockaddr addr socklen t addrlen 功能描述 當用socket 函式建立套接字以後,套接字在命名空間 網路位址族 中存在,但沒有...