Как найти сокет FDS, открытый процессом в Windows
У меня есть клиентский процесс, работающий в Windows (Win 7/ Win 2008 Server). Задача состоит в том, чтобы включить keepalive для одного из открытых сокетов, чтобы соединиться с сервером. Чтобы установить это соединение, я использую Windows API (соединение с сервером MSSQL), из которого мне не удалось получить созданный им сокет.
1) Как извлечь все сокеты fds, открытые процессом Windows (не Python метод, так как бинарный файл основан на C++)
2) Есть ли способ извлечь сокет fd из дескриптора, возвращенного Windows API SQLAllocHandle или SQLDriverConnect
Спасибо
1 ответ
Вы не можете (AFAIK) и не должны (не поддерживаются) пытаться изменить это на клиенте. SQL Server имеет параметр конфигурации на стороне сервера, который управляет этим:
Оставайся в живых
Этот параметр (в миллисекундах) контролирует, как часто TCP пытается проверить, что свободное соединение все еще не повреждено, отправляя пакет KEEPALIVE. Значение по умолчанию составляет 30000 миллисекунд.
https://technet.microsoft.com/en-us/library/ms190771(v=sql.105).aspx