為什么TCP服務(wù)端需要調(diào)用bind函數(shù)而客戶端通常不需要?


在cmd中查看連接情況, 結(jié)果如下:

C:\Documents and Settings\Administrator>netstat -nao | findstr 8888  TCP
0.0.0.0:8888           0.0.0.0:0              LISTENING       11256  TCP 
127.0.0.1:2964         127.0.0.1:8888         ESTABLISHED     13688  TCP
127.0.0.1:8888         127.0.0.1:2964         ESTABLISHED     11256

可以看到, 客戶端的端口號(hào)是2964. 實(shí)際上, 這個(gè)端口號(hào)是操作系統(tǒng)隨機(jī)分配的, 在分配的時(shí)候, 操作系統(tǒng)會(huì)保證不與現(xiàn)有的端口沖突。 好, 關(guān)掉這兩個(gè)進(jìn)程。 我們?cè)僦貑⒎?wù)端, 然后再重啟客戶端, 建立新的tcp連接, 我們?cè)僭赾md中查一次, 結(jié)果 我們發(fā)現(xiàn), 客戶端的端口編程了3156, 和上次的 2964不一致, 這就印證了操作系統(tǒng)會(huì)隨機(jī)分配客戶端端口這個(gè)說法。

那強(qiáng)行bind可不可行呢?

  • 如果你夠無聊, 那也可以用一下bind. 在這里, 我要說一下了: 客戶端用bind的程序很容易出問題, 你想想啊, 操作系統(tǒng)指定的不會(huì)沖突的隨機(jī)端口難道不比你自己指定的容易沖突的固定端口好?
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,537評(píng)論 19 139
  • 名詞延伸 通俗的說,域名就相當(dāng)于一個(gè)家庭的門牌號(hào)碼,別人通過這個(gè)號(hào)碼可以很容易的找到你。如果把IP地址比作一間房子...
    楊大蝦閱讀 20,793評(píng)論 2 56
  • 1、第八章 Samba服務(wù)器2、第八章 NFS服務(wù)器3、第十章 Linux下DNS服務(wù)器配站點(diǎn),域名解析概念命令:...
    哈熝少主閱讀 3,902評(píng)論 0 10
  • 1、TCP狀態(tài)linux查看tcp的狀態(tài)命令:1)、netstat -nat 查看TCP各個(gè)狀態(tài)的數(shù)量2)、lso...
    北辰青閱讀 9,708評(píng)論 0 11
  • 功能統(tǒng)計(jì)一個(gè)文件夾中所有指定后綴名文件中的數(shù)據(jù)行數(shù) 應(yīng)用場景統(tǒng)計(jì)項(xiàng)目代碼行數(shù) 代碼 用例
    PyKailyn閱讀 1,142評(píng)論 0 0

友情鏈接更多精彩內(nèi)容