运维开发网

高容量TCP客户端的设计

运维开发网 https://www.qedev.com 2020-07-15 14:35 出处:网络 作者:运维开发网整理
我有一个.NET TCP客户端,它向(.NET异步)TCP服务器发送大量消息. 我需要继续向服务器发送消息,但由于TIME_WAIT,我的客户端上的端口用完了. 如何在不使用所有可用端口的情况下持续可靠地发送消息? 有没有一种方法可以继续重用相同的套接字.我查看了Disconnect()和REUSEADDRESS套接字标志,但找不到它们使用的任何好例子.事实上,大多数消息来源都说不使用Discon
我有一个.NET TCP客户端,它向(.NET异步)TCP服务器发送大量消息.

我需要继续向服务器发送消息,但由于TIME_WAIT,我的客户端上的端口用完了.

如何在不使用所有可用端口的情况下持续可靠地发送消息?

有没有一种方法可以继续重用相同的套接字.我查看了Disconnect()和REUSEADDRESS套接字标志,但找不到它们使用的任何好例子.事实上,大多数消息来源都说不使用Disconnect,因为它是用于较低级别的使用(即它只回收套接字句柄).

我在想我需要切换到UDP,或者是否有使用C和IOCP的方法?

如果您的服务器和客户端知道数据的格式,您可以保持套接字打开.您正在关闭套接字,以便服务器可以“看到”客户端已“完成”.

如果你有一些协议,那么服务器可以“知道”何时完成接收数据块.

您可以查找somekind的消息结束标记,您可以传入消息的长度,并根据大小等读取其余内容.不同的方法.

但没有理由不断打开和关闭与服务器的连接 – 这就是在这里杀死你的东西.

0

精彩评论

暂无评论...
验证码 换一张
取 消