我有以下情况:
客户端->路由器->互联网->专用服务器
客户端:启动时连接到服务器并保持连接。偶尔会收到来自服务器的文件更改通知。开始同步进程,之后通知服务器是否成功。有时可能会失去连接,因此需要重新建立新连接。
服务器(互联网):包含有时更改的文件。接受传入的客户端,并保留该客户端的tcpclient对象。它永远不能直接与客户端连接,因为客户端位于多个路由器后面;这就是保持连接的原因。当进行更改时,通知客户端,并为每个客户端检查同步成功消息。
客户端->路由器->互联网->专用服务器
客户端:启动时连接到服务器并保持连接。偶尔会收到来自服务器的文件更改通知。开始同步进程,之后通知服务器是否成功。有时可能会失去连接,因此需要重新建立新连接。
服务器(互联网):包含有时更改的文件。接受传入的客户端,并保留该客户端的tcpclient对象。它永远不能直接与客户端连接,因为客户端位于多个路由器后面;这就是保持连接的原因。当进行更改时,通知客户端,并为每个客户端检查同步成功消息。
问题:
如何在客户端和服务器端有效地保持连接?
当客户端想要通知服务器同步过程成功完成,但同时服务器通知客户端有一个新的更新时会发生什么?
- 只创建Tcpclient(客户端)并在整个程序中保持此对象是否是一种好的做法?当某些网络操作失败时,尝试再次使用此tcpclient对象连接是否可行?
我做了很多研究,但实际上找不到一些保持使用相同tcpclient的东西。
顺便说一句:这是一个基于我的先前帖子的新线程,在那里提出了此解决方案(重用tcpclient)(udp packet not coming through)
问候 Daan,并感谢您的关注。
socket.SetSocketOption(SocketOptionLevel.Tcp,SocketOptionName.KeepAlive,1);
- jgauffin