Есть ли способ сохранить «состояние» Winsock, чтобы можно было остановить и перезапустить серверную программу, и все клиентские TCP-соединения продолжаются, как будто ничего не произошло, без необходимости делать что-то особенное?Может ли соединение Winsock TCP между сервером и клиентом возобновляться как было после перезапуска сервера?
Или это так, что как только процесс сервера Winsock завершается, клиентские соединения могут быть восстановлены только при всех обычных вызовах инициализации?
Это возможно. Это было сделано раньше. Это просто очень много работы, и, насколько мне известно, никто не беспокоился об этом в Windows. –
Я никогда не слышал, чтобы кто-то делал это в любой системе, не говоря уже о Windows. Существуют API для запроса активных подключений ('GetTcpTable()' и т. Д.), Но AFAIK нет API-интерфейсов для создания настраиваемых соединений. Даже если бы вы могли, порядковые номера и т. Д., Скорее всего, не синхронизированы. –
В принципе, по крайней мере, я думаю, что должно быть возможно запустить временный процесс, используйте WSADuplicateSocket для создания копии сокетов во временном процессе, перезапустите сервер, а затем снова используйте WSADuplicateSocket, чтобы скопировать сокеты в новый экземпляр сервер. –