Як знайти, яка програма використовує мій порт? [зачинено]


79

Я не можу запустити GlassFish, оскільки він постійно відображає таке повідомлення про помилку:

SEVERE: Shutting down v3 due to startup exception : No free port within range: 8080=com.sun.enterprise.v3.services.impl.monitor.MonitorableSelectorHandler@ed7d1

Як я можу знайти, які програми використовують ті порти в Windows Vista? Я спробував використовувати nmap zenmap, використовуючи таку ціль:

http://127.0.0.1:8080

Але все, що я отримую, це:

Starting Nmap 5.51 ( http://nmap.org ) at 2011-08-05 12:05 Central Daylight Time

NSE: Loaded 57 scripts for scanning.

Read data files from: C:\Program Files\Nmap
Nmap done: 0 IP addresses (0 hosts up) scanned in 4.55 seconds
           Raw packets sent: 0 (0B) | Rcvd: 0 (0B)
WARNING: No targets were specified, so 0 hosts scanned.


Це врятувало мій день, але все-таки це належить superuser.com, я хотів би, щоб був спосіб перенести запитання між сайтами
— стек-обміну

Під час розробки веб-служб у VS 2017 на C # це запитання / відповідь зупинило мене від перезавантаження комп’ютера кожні 2 години ... хоча це не має прямого відношення до програмування, воно опосередковано надзвичайно корисно для всіх нас, що розробляють сокети.
— Мігель Матео

Отже, ви шукаєте, яка програма використовує порт 8080? Спочатку введіть цю команду в cmd ..... netstat -ano | findstr: 8080 цей чи подібний, ви побачите TCP 0.0.0.0:8080 0.0.0.0-0 СЛУХАННЯ 4492 Тепер ви знаєте ідентифікатор програми, яка використовує порт 8080, а потім знайдіть цю програму, використовуючи тип ідентифікатора в цьому коді з вашим ідентифікатором, (у моєму case it 4492) список завдань | findstr 4492 і ось. Tomcat9.exe 4492 Послуги 0 77.988 K
— Костянтин Ф

Відповіді:


112

Як щодо netstat?

http://support.microsoft.com/kb/907980

Команда є netstat -anob.

(Переконайтеся, що ви запускаєте команду як адміністратор)

Я отримав:

C:\Windows\system32>netstat -anob

Активні підключення

     Proto  Local Address          Foreign Address        State           PID
  TCP           0.0.0.0:80                0.0.0.0:0                LISTENING         4
 Can not obtain ownership information

  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       692
  RpcSs
 [svchost.exe]

  TCP    0.0.0.0:443            0.0.0.0:0              LISTENING       7540
 [Skype.exe]

  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING       4
 Can not obtain ownership information
  TCP    0.0.0.0:623            0.0.0.0:0              LISTENING       564
 [LMS.exe]

  TCP    0.0.0.0:912            0.0.0.0:0              LISTENING       4480
 [vmware-authd.exe]

І якщо ви хочете перевірити конкретний порт, слід використовувати команду: netstat -aon | findstr 8080 з того ж шляху


26
зробив netstat -anob | findstr "8080", це дало мені ідентифікатор завдання, було б непогано знати, яка програма використовує його з ПІД, чи є команда для цього? До речі: не через диспетчер завдань, я ненавиджу шукати цей список
— Flethuseo

8
Ви можете використовувати tasklistкоманду, щоб переглянути список усіх запущених процесів з їхніми PID.
— Амір Овейсі

3
питання відмічено від теми, але ця відповідь врятувала мені день, я знайшов куприт, використовуючи 8099! Дякую.
— LaBracca

2
Це спрацювало для мене, але після використання taskkill /pid 8516я отримав ERROR: The process "8516" not found.Виявляється, якщо працює дочірній процес, Windows буде тримати сокет навколо. Процес вбивства дитини звільнив розетку. serverfault.com/questions/181015/…
— jtpereyda

У моєму випадку винуватцем був Oracle TNS Listener: список завдань | findstr "5676" TNSLSNR.EXE 5676 Послуги 0 5140 K
— nicordesigns


7

Можливо, не запущено жодної іншої програми. Можливо, сокет не був чисто вимкнений з попереднього сеансу, і в цьому випадку вам доведеться почекати деякий час до закінчення терміну дії TIME_WAIT на цьому сокеті. На жаль, ви не зможете користуватися портом до закінчення терміну дії сокета. Якщо ви можете запустити сервер, зачекавши деякий час (кілька хвилин), проблема полягає не в тому, що інша програма працює на порту 8080.


3

У командному рядку виконайте:

netstat -nb

Якщо не працює, це видає мені помилку із запитом "Запитувана операція вимагає підвищення".
— Sohail Qureshi

@SohailQureshi Просто запустіть командний рядок як адміністратор.
— Revnic Robert-Nick
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.