Winsock - 将客户端重新连接到服务器基础 - TIME_WAIT

时间:2012-07-15 08:52:53

标签: c++ winsock winsock2 winsockets

我有一个TCP服务器/客户端设置,他们以我通常想要的方式进行通信。

我现在要做的是添加一些功能,允许客户端在连接丢失后自动重新连接到服务器。我无法在线查找有关如何执行此操作的完整信息。

详细说明: - 我只有1台服务器,到目前为止它最多只能承载1个连接。 - 当客户端或服务器断开连接时 - 两者都关闭(关闭服务器和客户端的套接字是否合理?)

理想情况下,我希望客户端每次都能够重新连接到服务器上的同一端口。我理解TIME_WAIT以及为什么有必要。除非我没有其他选项,否则我真的不想使用SO_REUSEADDR。这通常如何处理?我是否应该在服务器端打开一个新端口,同时它等待旧套接字完成TIME_WAIT并且基本上在两个端口之间交替(这意味着客户端必须跟踪2个可能的端口)?

感谢您的建议!

1 个答案:

答案 0 :(得分:3)

TIME_WAIT是TCP连接的状态,而不是端口。每个TCP连接都由元组(本地地址,本地端口,远程地址,远程端口)标识。因此,如果客户端使用新的(动态)本地端口连接到服务器,则会创建新的TCP连接,并且不会出现TIME_WAIT。