我有一个.NET TCP客户端,它向(.NET异步)TCP服务器发送大量消息.
我需要继续向服务器发送消息,但由于TIME_WAIT,我的客户端上的端口用完了.
如何在不使用所有可用端口的情况下持续可靠地发送消息?
有没有一种方法可以继续重用相同的套接字.我查看了Disconnect()和REUSEADDRESS套接字标志,但找不到它们使用的任何好例子.实际上大多数消息来源都说不使用Disconnect,因为它是用于较低级别的使用(即它只回收套接字句柄).
我想我需要切换到UDP,或者有一个使用C++和IOCP的方法?
如果您的服务器和客户端知道数据的格式,您可以保持套接字打开.您正在关闭套接字,以便服务器可以"看到"客户端已"完成".
如果你有一些协议,那么服务器可以"知道"何时完成接收数据块.
您可以查找somekind的消息结束标记,您可以传入消息的长度,并根据大小等读取其余内容.不同的方法.
但没有理由不断打开和关闭与服务器的连接 - 这就是在这里杀死你的东西.