Z mojego zrozumienia protokół GRPC jest http2 na TCP. Dlatego maksymalny port, który można przypisać, wynosi 65535, prawda? Ale wygląda na to, że jeśli ustawię adres serwera być czymś w rodzaju "0.0.0.0.04040", który jest poza zasięgiem, nadal działa dobrze, a klient GRPC jest w stanie podłączyć i komunikować się z serwerem GRPC. Czy mogę wiedzieć, co to znaczy? Dziękuję Ci.

builder.AddListeningPort("0.0.0.0:70040", grpc::InsecureServerCredentials());
0
the newbie coder 27 październik 2020, 03:46

1 odpowiedź

Najlepsza odpowiedź

Podejrzewam, że problem jest taki, że stosowanie ciągów do adresu końcowego ogranicza zdolność kompilatora w celu zatwierdzenia niepodpisanego 16-bitowego adresu portu.

70040 Przy moim wczesnym porannym obliczeniu jest 10001000110011000, co jest 17 bitów. Porty muszą być 16 bitami, więc jedna z tych bitów zostanie upuszczona, prawdopodobnie najważniejsza (1).

Upuszczanie, daje 1000110011000, który odpowiada 4504 i jest prawdopodobne, że używany jest rzeczywisty port.

Możesz spróbować uruchamiać serwer na 70040 i połącz z nim od klienta za pomocą 4504.

1
DazWilkin 27 październik 2020, 13:28