LabVIEW TCP/IP 斷開重連問題


 LabVIEW的TCP/IP函數庫非常好用,但是不恰當地設置打開連接結點的參數將帶來一些問題,麻煩。如下圖的打開連接的參數設置:

  上圖中指定了本地的端口,會發生這樣的情況。當我們關閉應用程序之后,連接被關閉,按照TCP/IP的協議,連接會話資源會處於一種time_wait的狀態,存活一段時間,一般都需要至少30秒以上才能被系統清理。有的系統中甚至需要1分鍾左右。這給程序調試帶來不便。

  翻閱了網絡上的許多地方都找不到問題到底出現在哪。看了許多功能相似的示例代碼,都沒有出現像我這樣的問題。放了一段時間,某天突然開竅,想到肯定是指定了某個唯一的參數,使得重新打開和上一次連接一樣的會話導致錯誤。也就是那么幾秒鍾時間,把指定的本地端口號這個參數刪除——搞定了。

  小小總結一下就是假如建立與服務器的連接時,如果不指定端口號,系統會隨機分配一個或者函數的底層會隨機領一個(我猜)。但指定之后,一旦上一次的會話進入time_wait狀態時,當然不能夠立即再次利用一樣的會話資源。這應該是很不安全的,不是嗎?

  問題居然是藏在這個特別不起眼的”坑“里有木有?

  希望遇到和我一樣問題的童鞋能夠有所幫助。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM