1 Востаннє редагувалося Yola (03.05.2013 13:31:29)

Тема: bind до того ж порту [РОЗВ'ЯЗАНА]

Як можна виявити, що до порту вже хтось прив'язався?

Winsock, TCP

netstat -a | find "LISTENING" може це сказати, але мені потрібно програмно.


РЕДАГУВАННЯ:

Отже поки що відомі такі способи:

  • Спершу спробувати під"єднатись до того порту, якщо вдало - значить до їм користуються. (можливі перегони)

  • Використати SO_EXCLUSIVEADDRUSE

Другий спосіб мені не підходить, а з першим ось що:
Видає помилку (додано: WSAGetLastError) при конекті - No connection could be made because the target machine actively refused it
Але нетстат показує, що цей порт прослуховують.

ДОДАНО:
Мабуть, проблема в тому, що програма. яка прослуховує порт призупинена під зневаджувачем, тому спочатку вона дозволяє приконетитись, а потім ні.

2

Re: bind до того ж порту [РОЗВ'ЯЗАНА]

WSAGetLastError() пробували?

3

Re: bind до того ж порту [РОЗВ'ЯЗАНА]

Ось реалізація netstat у віконному інтерфейсі:
http://www.codeproject.com/Articles/417 … pplication

Для отримання інформації про те чи сокет прослуховується тут використовують IPHlpApi. Функцію GetTcpTable -
http://msdn.microsoft.com/uk-ua/library … 66026.aspx

Подякували: Очі.завидющі2