服务器和客户端之间的Winsock TCP连接能否在服务器必须重新启动后恢复原状?

服务器和客户端之间的Winsock TCP连接能否在服务器必须重新启动后恢复原状?,tcp,winsock,Tcp,Winsock,有没有一种方法可以保存Winsock的“状态”,这样服务器程序就可以停止并重新启动,所有客户端TCP连接都可以继续,就像什么都没有发生一样,而客户端不需要做任何特殊的事情 或者,一旦Winsock服务器进程终止,客户端连接只能通过所有常规初始化调用重新建立?必须通过新的连接握手重新建立丢失/关闭的连接。因此,如果您不想让客户端知道服务器已重新启动,则必须先将现有连接移动到另一个进程,然后在重新启动后将其移回。您可以使用它。这是可能的。这是以前做过的。这只是一个可怕的工作,据我所知,没有人费心在W

有没有一种方法可以保存Winsock的“状态”,这样服务器程序就可以停止并重新启动,所有客户端TCP连接都可以继续,就像什么都没有发生一样,而客户端不需要做任何特殊的事情


或者,一旦Winsock服务器进程终止,客户端连接只能通过所有常规初始化调用重新建立?

必须通过新的连接握手重新建立丢失/关闭的连接。因此,如果您不想让客户端知道服务器已重新启动,则必须先将现有连接移动到另一个进程,然后在重新启动后将其移回。您可以使用它。

这是可能的。这是以前做过的。这只是一个可怕的工作,据我所知,没有人费心在Windows上做这件事。我从来没有听说过有人在任何系统上做这件事,更不用说在Windows上了。有用于查询活动连接的API(
GetTcpTable()
等),但也没有用于创建自定义连接的API。即使可以,序列号等也可能不同步。至少在原则上,我认为应该可以启动一个临时进程,使用WSADuplicateSocket在临时进程中复制套接字,重新启动服务器,然后再次使用WSADuplicateSocket将套接字复制到服务器的新实例。我想这是一种方法。我已经更新了我的答案。