Назад | Перейти на главную страницу

Порт UDP, похоже, используется, но не отображается в netstat или TCPView

Я столкнулся с каким-то странным поведением, которого не понимаю. Я устанавливаю программное обеспечение на 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 года.