Чтобы определить причину проблем с подключением к серверу, следует выяснить следующие вопросы:
Запущен ли сервер gRPC?
Сервер gRPC по умолчанию работает на локальном порту (например, 9000). Проверить доступность сервера можно просто через PowerShell.
Команда в PowerShell:
Test-NetConnection 127.0.0.1 -Port 9000
Типичный вывод:
ComputerName : 127.0.0.1
RemoteAddress : 127.0.0.1
RemotePort : 9000
InterfaceAlias : Loopback Pseudo-Interface 1
SourceAddress : 127.0.0.1
TcpTestSucceeded : True
Важно:
Если TcpTestSucceeded : True отображается, сервер gRPC доступен и запущен.
При False сервер либо не запущен, либо порт недоступен.
Что означает ошибка подключения gRPC при установлении соединения?
В FEP-среде может возникнуть следующая ошибка (на первый взгляд кажущаяся загадочной) при установлении gRPC-соединения:
gRPC Connection error: Unavailable - Error starting gRPC call.
HttpRequestException: An HTTP/2 connection could not be established because
the server did not complete the HTTP/2 handshake. (InvalidResponse)
HttpIOException: The response ended prematurely while waiting for the next frame
from the server. (ResponseEnded)
Возможная причина:
Конфигурируемый порт (например, 9000) уже занят другим процессом. В этом случае сервер gRPC не может правильно выполнить HTTP/2-рукопожатие.
Как проверить, занят ли порт?
С помощью команды netstat в PowerShell можно отобразить все процессы, использующие определенный порт.
Команда в PowerShell:
netstat -ano | findstr :9000
Пример вывода:
Proto Local Address Foreign Address State PID
TCP 0.0.0.0:9000 0.0.0.0:0 LISTENING 17616
Значение столбцов:
Local Address: Локальный IP и порт
State: Состояние (например, LISTENING)
PID: Идентификатор процесса, занимающий порт
Как узнать, какой процесс использует определенный порт?
С помощью полученного PID в PowerShell можно запросить связанный процесс, чтобы получить, среди прочего, имя процесса и другие детали.
Команда в PowerShell:
get-process -id 17616
Информация:
В качестве альтернативы процесс также можно определить через диспетчер задач Windows по PID.
Рекомендуемые решения
- Настроить альтернативный свободный порт для сервера gRPC
- Или (если возможно) изменить конфигурацию порта блокирующего программного обеспечения
- После изменения перезапустите сервер и протестируйте подключение