我在我的服務器和客戶端之間建立了一個TCP連接,它運行在同一臺主機上。我們從服務器上收集和讀取數據,或者不斷在我們的案例中說出來源 我們讀取3個不同端口的數據。客戶端和服務器之間的TCP連接出錯了
一旦源停止發佈數據或重新啓動,服務器/源將無法再在同一端口上發佈數據,說明端口已經綁定。給出的原因是客戶端仍然在這些端口上建立連接。
我想知道這可能是什麼原因?會不會有問題,因爲客戶端已經在監聽這些端口並試圖重新連接,因爲我們嘗試重新連接機制。當源和客戶端位於不同的主機上時,我更願意在源端找到相同的代碼,而不是相同的主機對我們來說工作得很好。
編輯: - 我在閱讀各種文章時發現了這個。
使用SO_LINGER上發送接近一個RST,以避免TIME_WAIT狀態的問題:我一直有一些問題,路由器接入服務器(未公佈姓名,以保護有罪)有處理後臺問題專用於特定通道的調制解調器上的背對背連接。他們所做的是釋放連接,接受另一個調用,嘗試連接到主機上的衆所周知的套接字,並且主機拒絕連接,因爲在TIME_WAIT狀態下存在一個涉及衆所周知的套接字的連接。 (Stevens的書TCP Illustrated,第1卷更詳細地討論了這個問題。)爲了避免連接被拒絕的問題,我必須安裝一個選項來在服務器上執行close-reset-啓動斷開。
鏈接來源: - http://developerweb.net/viewtopic.php?id=2941
我想我面臨同樣的問題:「嘗試連接到一個衆所周知的插座的主機上,並且主機拒絕連接」。可能的修復方法是'在服務器啓動斷開連接時在服務器上進行重置關閉的選項'。現在我該怎麼做?
不要對不是代碼的文本使用代碼格式。 – EJP
請不要將代碼格式設置爲不是代碼的文本。 – EJP