我有以下情况:
客户端 - >路由器 - >互联网 - >专用服务器
客户:启动时,连接到服务器,并保持连接打开。偶尔会从服务器接收文件更改的通知。开始一个同步过程,然后通知服务器这是否成功。有时可能会失去联系,因此必须建立新的联系。
服务器(互联网):包含有时会更改的文件。接受传入的客户端,并保留该客户端的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