Abychom zjistili příčinu problémů s připojením k serveru, je třeba si zodpovědět následující otázky:
Běží server gRPC?
Server gRPC běží ve výchozím nastavení na lokálním portu (např. 9000). Dostupnost serveru lze snadno ověřit pomocí PowerShellu.
Příkaz v PowerShellu:
Test-NetConnection 127.0.0.1 -Port 9000
Typický výstup:
ComputerName : 127.0.0.1
RemoteAddress : 127.0.0.1
RemotePort : 9000
InterfaceAlias : Loopback Pseudo-Interface 1
SourceAddress : 127.0.0.1
TcpTestSucceeded : True
Důležité:
Pokud se zobrazí TcpTestSucceeded : True, je server gRPC dostupný a běží.
V případě False není server spuštěn nebo není k dispozici port.
Co znamená chyba připojení gRPC při navazování spojení?
V prostředí FEP se může stát, že při navazování připojení gRPC se zobrazí následující (na první pohled kryptické) chybové hlášení:
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)
Možná příčina:
Konfigurovaný port (např. 9000) je již obsazen jiným procesem. V takovém případě nemůže server gRPC správně provést handshake HTTP/2.
Jak mohu zkontrolovat, zda je port již obsazen?
Pomocí příkazu netstat v PowerShellu lze zobrazit všechny procesy, které používají konkrétní port.
Příkaz v PowerShellu:
netstat -ano | findstr :9000
Příklad výstupu:
Proto Local Address Foreign Address State PID
TCP 0.0.0.0:9000 0.0.0.0:0 LISTENING 17616
Význam sloupců:
Local Address: Lokální IP a port
State: Stav (např. LISTENING)
PID: ID procesu, který port obsazuje
Jak zjistím, který proces používá konkrétní port?
Pomocí zjištěného PID lze v PowerShellu vyhledat příslušný proces a zjistit mimo jiné jeho název a další podrobnosti.
Příkaz v PowerShellu:
get-process -id 17616
Info:
Proces lze alternativně identifikovat také pomocí Správce úloh systému Windows na základě PID.
Doporučená řešení
- Nakonfigurujte alternativní volný port pro server gRPC.
- Nebo (je-li to možné) upravte konfiguraci portů softwaru, který blokuje připojení.
- Po provedení změny restartujte server a otestujte připojení.