Daa*_*aan 4 c# networking network-programming tcp
我有以下情况:
客户端 - >路由器 - > Internet - >专用服务器
客户端:启动时,连接到服务器并保持连接打开.偶尔从服务器接收文件更改的通知.启动同步过程,然后通知服务器是否成功.有时可能会失去连接,因此必须建立新的连接.
服务器(Internet):包含有时会更改的文件.接受传入的客户端,并保留该客户端的tcpclient对象.它永远不能直接与客户端连接,因为客户端位于多个路由器后面; 这就是连接必须保持打开的原因.在进行更改时通知客户端.并且还检查每个客户端是否有同步成功消息.
问题:
如何在客户端和服务器端有效地保持连接打开?
当客户端想要通知服务器同步过程成功时会发生什么,但同时服务器通知客户端有新的更新..?
我做了很多研究,但无法真正找到一直使用相同tcpclient的东西..
顺便说一句:这是一个基于我之前帖子的新线程,是否提出了这个解决方案(重用tcpclient)(udp数据包未通过)
欢迎Daan并提前感谢您的关注
如何在客户端和服务器端有效地保持连接打开?
TCP 发送可以发送保持活动的消息 默认情况下如果你激活SO_KEEPALIVE
.但是发送自己的保持活动消息(防止路由器中的空闲连接断开等)是个好主意
当客户端想要通知服务器同步过程成功时会发生什么,但同时服务器通知客户端有新的更新..?
设计您的协议,使其具有请求ID,并且可以在通知和回复之间有所不同.
将API设计为同步,但使用异步套接字处理.
仅仅创建一个Tcpclient(客户端)并在整个程序中保留此对象是一个好习惯吗?当某些网络操作失败时,尝试再次连接此tcpclient对象?
您确定可以再次连接同一个客户端吗?IIRC是不可能的,Socket
同样适用于TcpClient
我会使用相同的客户端,只要它没有断开连接.