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


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.