2021-05-12 14:32:11
LabVIEW TCP/IP 斷開重連問題
2020-06-16 16:57:37
LabVIEW的TCP/IP函數庫非常好用,但是不恰當地設定開啟連線結點的引數將帶來一些問題,麻煩。如下圖的開啟連線的引數設定:
上圖中指定了原生的埠,會發生這樣的情況。當我們關閉應用程式之後,連線被關閉,按照TCP/IP的協定,連線對談資源會處於一種time_wait的狀態,存活一段時間,一般都需要至少30秒以上才能被系統清理。有的系統中甚至需要1分鐘左右。這給程式偵錯帶來不便。
翻閱了網路上的許多地方都找不到問題到底出現在哪。看了許多功能相似的範例程式碼,都沒有出現像我這樣的問題。放了一段時間,某天突然開竅,想到肯定是指定了某個唯一的引數,使得重新開啟和上一次連線一樣的對談導致錯誤。也就是那麼幾秒鐘時間,把指定的本地埠號這個引數刪除——搞定了。
小小總結一下就是假如建立與伺服器的連線時,如果不指定埠號,系統會隨機分配一個或者函數的底層會隨機領一個(我猜)。但指定之後,一旦上一次的對談進入time_wait狀態時,當然不能夠立即再次利用一樣的對談資源。這應該是很不安全的,不是嗎?
問題居然是藏在這個特別不起眼的”坑“裡有木有?
希望遇到和我一樣問題的童鞋能夠有所幫助。
本文永久更新連結地址:http://www.linuxidc.com/Linux/2017-12/149937.htm
相關文章