我有以下情況:
客戶端 - >路由器 - >互聯網 - >專用服務器
客戶:啓動時,連接到服務器,並保持連接打開。偶爾會從服務器接收文件更改的通知。開始一個同步過程,然後通知服務器這是否成功。有時可能會失去聯繫,因此必須建立新的聯繫。
服務器(互聯網):包含有時會更改的文件。接受傳入的客戶端,並保留該客戶端的tcpclient對象。它不能直接與客戶端連接,因爲客戶端位於幾臺路由器後面;這就是連接必須保持開放的原因。通知客戶更改時間。並且還爲每個客戶端檢查同步成功消息。使用讀/寫相同的TcpClient,並保持它活着
問題:
如何有效地保持我的連接上的客戶端和服務器端的開放?
當客戶想通知 同步過程是成功的,但在此期間,服務器 通知客戶端有新的更新。該服務器會發生什麼?
- 在整個程序中創建一個Tcpclient(客戶端)並保持此對象是否是一種很好的做法?當某些網絡操作失敗時,請嘗試再次連接這個tcpclient對象?
我做了很多的研究,但不能真正找到的東西,保持使用相同的TcpClient ..
順便說一句:這是根據我以前的帖子一個新的線程,是該解決方案(重用的TcpClient )提出了(提前udp packet not coming through)
招呼大安&感謝您的關注
如果您引用SO_KEEPALIVE套接字選項,則默認情況下它未啓用。如果啓用,默認超時通常按照每兩小時一次保持活動消息的順序。 TCP沒有其他保活機制。 – 2012-03-01 11:58:33
@JoachimPileborg:謝謝。我以爲它默認是開啓的。 – jgauffin 2012-03-01 12:01:25
那麼......你怎麼激活那個套接字選項? – Nyerguds 2013-06-25 10:30:21