亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

麻煩大佬指點一下,關于SOCKET編程中的bind函數的作用!謝謝!

麻煩大佬指點一下,關于SOCKET編程中的bind函數的作用!謝謝!

白衣染霜花 2021-10-12 20:11:59
書上寫:bind方法將本機地址關聯到套接字上,這句話到底是什么意思?為什么服務器上要關聯,客戶端上卻不要關聯。關聯到低是哪兩個東西之間建立聯接呀,總感覺這個方法莫名其妙,但是程序里面卻又總是出現,望指點。如果能有關于sokcet常 用API函數的詳細介紹就最好了,可以復制網頁,但最好用自己的話給偶講下,大段的文字直接復制就不用了。
查看完整描述

2 回答

?
aluckdog

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()函數。

查看完整回答
反對 回復 2021-10-17
?
慕婉清6462132

TA貢獻1804條經驗 獲得超2個贊

bind就是綁定一個公共的服務地址,只有這樣客戶端才能找到你。打個比方,銀行是不是有個為公眾所知的地址,而客戶卻不需要那個地址,因為到時候是客戶自己根據銀行的地址找到銀行的。

查看完整回答
反對 回復 2021-10-17
  • 2 回答
  • 0 關注
  • 379 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號