Как найти сокет 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

Другие вопросы по тегам