今天除錯程式發現了一個很難理解的現象,希望專業人士賜教。
問題一:我自己寫了一個TCP程式監聽本機的9530埠,程式顯示系結成功。此時,我又打開一個socket除錯工具(該工具名稱為“Sokit”)也監聽本機的9530埠,此時未報錯,而是成功進入監聽狀態。按理說應該會提示“埠被占用”,如何解釋兩邊同時成功監聽了同一埠?
問題二:上述兩者正在監聽同一埠,為了驗證誰真正進入了監聽狀態,我給該埠發了些資料。結果只有“Sokit”除錯工具收到了資料,而我自己的程式沒有任何反應。這說明我自己的程式并沒有真正在偵聽該埠,可是明明是我的程式先于“Sokit”除錯工具系結了9530埠,而我自己的程式反而收到不資料。如何解釋?
請各位賜教,感激不盡。
uj5u.com熱心網友回復:
你監聽本機的時候,用的哪個IP?網卡IP還是localhost或者127.0.0.1?也有可能是你的程式沒有進入監聽狀態,可以這么測
把你的程式起來以后,不去開除錯工具,直接netstat -ano確認一下有你的程式有沒有真正開啟監聽。然后再telnet測驗一下,看能不能連上。
uj5u.com熱心網友回復:
找個抓包工具比如Sniffer 看下uj5u.com熱心網友回復:
可能兩個的協議不同,一個是TCP,一個是UDP,
uj5u.com熱心網友回復:
設定了 埠復用,導致后面監聽的程式才是真正的接受程式轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/94004.html
標籤:網絡協議與配置
上一篇:基于MAC地址進行通訊
