2010-07-22 55 views
0

我正在使用Winsock控件更新用VB6編寫的遺留代碼。實質上,我試圖通過本地網絡連接4臺計算機,以便計算機可以在需要時彼此共享文件。原來,一旦建立聯繫,他們就無限期地保持聯繫。這些會在12-24小時後出錯,但無法重新建立。更糟糕的是,整個網絡的安全性很嚴,我們只有一定數量的端口可以使用(他們的防火牆阻止了其他端口的全部)。我懷疑網絡安全是負責關閉連接長時間處於非活動狀態,並且是我們不穩定的原因(我們的測試無限期地運行,如果我們重新啓動任何計算機,它們會自行重新建立。)什麼是VB6套接字組件可以重用綁定端口?

我的想法是隻建立連接,文件需要發送,以避免這種可能性。我遇到的問題是you cannot connect through the same port for four minutes。因此,只有一個文件可以在四分鐘的時間內發送(除非您同時擁有所有文件,但是它們是在不同時間生成的)。使用三個端口可以一次發送三個文件(每個文件一個文件),但後來我被鎖定了四分鐘。我可以不斷添加端口,但這看起來似乎不夠優雅,最壞的情況是他們的IT部門不會允許。

任何想法?我找不到任何其他用於VB6的套接字控件,它們允許可重複使用的綁定端口

回答

0

「四分鐘延遲」是每個連接,其中TCP連接是由本地IP,本地端口#,遠程IP和遠程端口#組成的四元組。

這通常只對嘗試與使用相同localport值的服務器重複建立連接的客戶端有關。對於Winsock控件,您可以嘗試在嘗試每次連接到遠程服務器之前將LocalPort設置爲0。

另一種可能避免連接坐在TIME-WAIT中的方法是確保在另一端引發CLOSE事件時主動關閉連接。

使用3個端口發送3個文件似乎有點奇怪。我不認爲這會使你獲得任何性能,而不是使用單個連接一個接一個地發送這3個文件。

+0

據我所知,這是每個連接,但問題是,我們正在一個鎖定的防火牆下工作,**不能**讓'LocalPort'爲0,因爲那麼它很可能會選擇一個端口hasn沒有打開。 3個端口用於向3個不同的對等點發送3個文件 - 沒有不同的對等點。當我收到來自遠程套接字的關閉事件時,我會主動關閉本地套接字。 – dlras2 2010-07-22 19:38:41

+0

如果防火牆設置爲限制源端口(本地端口)號碼,則幾乎沒有任何工作。通常限制是在目標端口號上。儘管可能會設置防火牆來允許某些衆所周知的目標端口(HTTP,HTTPS,SMTP)的任何源端口,並限制其他任何其他源端口......這似乎不大可能。您的服務器需要綁定到並監聽特定端口,但您的客戶端LocalPort值應該能夠在整個臨時端口範圍內變化。 – Bob77 2010-07-23 06:12:25

相關問題