Metoda Port
zwraca ciąg znaków, a nie liczbę całkowitą. Jaki jest tego powód i czy można bezpiecznie przedłużyć port za pomocą ":"?Dlaczego port jest ciągiem, a nie liczbą całkowitą?
96
A
Odpowiedz
140
Dzieje się tak dlatego, że po dwukropku może znajdować się numer portu lub nazwa usługi.
Poniższy przykład jest ważne gdzie nazwa usługi jest używany zamiast numeru portu:
listener, err := net.Listen("tcp", "localhost:https") // port 443
// ...
Mapowanie portu dla określonej usługi można obejrzeć za pomocą net.LookupPort
. W systemach uniksowych plik /etc/services
pochodzi z mapowań.
1
Dla wielu Domyślną wartością jest 0: jeśli funkcja
func (u * URL) Port() string
numer zwrotny zamiast żądło port będzie 0
Port 0 jest zarezerwowanym portem w sieci TCP/IP, co oznacza, że nie powinno być używane w komunikatach TCP lub UDP. Jednak port 0 ma szczególne znaczenie w programowaniu sieci, w szczególności w programowaniu gniazd Unix: do żądania przydzielonych przez system portów dynamicznych.
to jest potrzeba programowania w kilku funkcjach
Zawsze intryguje mnie dychotomia typu otwartego/zamkniętego typu. Chciałbym zobaczyć coś takiego jak typ _mixed_, w którym są pewne wartości domyślne (tutaj np. Dobrze znane porty i usługi), ale także pozwala je rozszerzyć, ostatecznie wspierając autouzupełnianie. W mojej ograniczonej wiedzy praktycznej ADT TypeScripts są najbliższe, być może jerzyki ADT-ów mogą wyrazić to również bezpośrednio. –