Я столкнулся с каким-то странным поведением, которого не понимаю. Я устанавливаю программное обеспечение на Windows 2003 Server. Это программное обеспечение необходимо привязать к конкретному порту UDP и всем адресам TCP, чтобы прослушивать запросы. Кажется, я могу привязаться к нескольким портам по своему выбору, но не к другим; в частности, я не могу привязаться к одному порту, который мне нужен, это 5001. Другие предположительно свободные порты, такие как 5002, 5010, также не работают. Моим первым предположением было: «Он используется другой программой», но он не отображается ни в netstat, ни в TCPView (из sysinternals), поэтому я не понимаю, что с этим делать. Программа получает ошибку сокета 10048 (адрес уже используется).
Вот примеры команд, которые я использую, чтобы найти "нарушающую" программу:
c:\>netstat -a -v -n -o -p udp
Active Connections
Proto Local Address Foreign Address State PID
UDP 0.0.0.0:445 *:* 4
UDP 0.0.0.0:500 *:* 512
UDP 0.0.0.0:1434 *:* 1980
UDP 0.0.0.0:4500 *:* 512
UDP 0.0.0.0:5000 *:* 5920
UDP 0.0.0.0:5500 *:* 5288
UDP 127.0.0.1:123 *:* 856
UDP 127.0.0.1:1314 *:* 4376
UDP 172.20.1.10:123 *:* 856
UDP 172.20.1.10:137 *:* 4
UDP 172.20.1.10:138 *:* 4
(No UDP port 5001 is in use!)
Or:
C:\> netstat -an | findstr 5001
(no output)
Я запускаю все тесты, используя учетную запись локального администратора, но безрезультатно. Моя программа написана на C ++ (Winsock 2), хотя я также провел быстрые тесты с простой программой VB6 с теми же результатами. Служба DNS не установлена (которая, как известно, резервирует диапазоны портов UDP).
Как я могу найти "нарушающую" программу, то есть программу, использующую порт UDP, который мне нужен?
Порты 5000 и 5001 используются Yahoo Messenger. Не знаю, отображаются ли оба при netstat.
Также подозрительно 5001 - я помню, что его использовали трояны удаленного доступа. Извините, у меня нет подробностей.
Вы пробовали подключиться к вашему серверу через Telnet на порт 5001? Он действительно слушает / используется?
Мне это кажется ошибкой ОС. Он очень, очень старый, кто знает? В ближайшее время перезагрузитесь. В долгосрочной перспективе рассмотрите возможность обновления до поддерживаемой ОС; поддержка server 2003 закончилась 14 июля 2015 года.