Как бы вы исследовали следующую проблему?
На конкретном сервере; любые HTTP-запросы, отправленные на сервер Java, работающий на локальном хосте, терпят неудачу с сообщением «Соединение отклонено». ( См. Код Java здесь )
В серверном приложении Java не видно никаких признаков проблем. Кажется, что порт слушает, но когда я пытаюсь отправить HTTP-запрос с cURL в приложение Java HTTP-Server; cURL регистрирует «В соединении отказано». (Я использую curl в mingw в системе Windows 10)
Запущенное приложение Java Server:
C:\test>java LogTCP_S 8000
Listening on port:8000, type Crtl-C to finish
Команда curl [NOK]:
$ curl localhost:8000
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0
curl: (7) Failed to connect to localhost port 8000: Connection refused
Тот же код Java работает должным образом на моей рабочей станции.
Я также пробовал другое приложение Java. Я получил тот же результат, используя код из следующего ответа от StackOverflow: простой HTTP-сервер на Java с использованием только Java SE API
Проблема возникает в системе Windows 10. Существует несколько средств обнаружения аномалий и приложений брандмауэра, и нам трудно определить источник проблемы.
Подсказка: netstat -a не перечисляет порт 8000. Но он должен быть показан на самом деле. как ПРОСЛУШИВАНИЕ.
Подсказка: При запуске сервера в PowerShell (, как описано здесь ), связь работает должным образом. Порт PowerShell Server будет указан в выходных данных netstat -a, а запросы вернут HTTP 200 и ожидаемое содержимое.
Не могли бы вы подсказать, как отладить, исследовать или решить эту проблему? Какие инструменты могут быть полезны при исследовании таких проблем?
Любая помощь будет принята с благодарностью.
Большое спасибо.
Версия Java:
C:\>java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
Вывод сервера PowerShell:
Windows PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.
PS C:\Temp\_test\PowerShell> .\server.ps1
[PowerShell] Listening at http://localhost:8000/... (port 8000)
> http://localhost:8000/ola
< 200
вывод curl, когда PowerShell работает [OK]:
$ curl localhost:8000/ola
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 38 100 38 0 0 612 0 --:--:-- --:--:-- --:--:-- 612
<html><body>Hello world!</body></html>
После выполнения следующих шагов, проблема больше не воспроизводима:
После перезапуска антивирусного сервиса Symantec, проблема все еще не воспроизводима, и кажется, что проблема решена.
Теперь порты, открытые Java приложениями, появляются в Выходе "netstat -a", и они также реагируют, как и ожидалось. HTTP-запросы, отправленные в Java-приложение, теперь поступают в JVM, и ответы могут быть отправлены.
До сих пор не до конца ясно, что вызвало проблему.
.