在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ī)端口難道不比你自己指定的容易沖突的固定端口好?