2012-10-15 15 views
7

Próbuję wygenerować losowy numer portu dla połączenia TCP. Od: http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers Wiem, że zakres portów od 1024 do 49151 nie jest zarezerwowany, ale niektóre z nich są tylko UDP, w jaki sposób mogę wygenerować tylko poprawne numery portów TCP?Dozwolony zakres portów dla TCP

+1

Wszystko powyżej 1024 jest uważane za dobre dla klienta TCP. Myślisz o tym zbyt wiele, jeśli chcesz zobaczyć wpis na stronie wikipedii, aby był to "dopuszczalny" port TCP. Wszystkie porty TCP = <1024 są dopuszczalne dla portów źródłowych gniazd klienta. –

Odpowiedz

15

Po powiązaniu z portem 0 system operacyjny wybierze poprawny port, który nie jest w użyciu.

Jeśli potrzebujesz losowego, a nie arbitralnego, wszystko od 49152-65535 powinno być bezpieczne do automatycznego używania w ten sposób, więc po prostu wybierz losową liczbę z tego zakresu. (być może trzeba będzie spróbować ponownie, jeśli port okaże się w użyciu).

+0

Więc jakikolwiek port w tym zakresie obsługuje TCP? ponieważ ze strony wiki niektóre porty są oznaczone tylko dla UDP. Ponadto, w jaki sposób sprawdzić java, jeśli port jest w użyciu? dzięki! –

+1

Wszystkie porty od 1-65535 obsługują TCP, TCP/UDP na tej stronie odnosi się do zarejestrowanych portów; to jest porty przypisane do określonego zastosowania. Sprawdzanie, czy port jest w użyciu, zwykle wykonuje się, próbując się z nim połączyć, jeśli pojawi się błąd dotyczący używanego portu, to jest. Jeśli nie ma znaczenia, jaki port otrzymasz, ale tylko, że go otrzymasz, powinieneś połączyć port 0, a następnie pobrać lokalny port z nowego gniazda, aby dowiedzieć się, co masz. – Eric

+2

Aby opracować nieco, twój lokalny serwer wiąże się z określonym portem, ale UDP i TCP są w różnych "przestrzeniach nazw", a więc są niezależne. Serwery, które używają _both_, zwykle otwierają ten sam numer portu dla obu. _Connections_ są zdefiniowane przez 5-tkę protokołu, local-addr, local-port, remote-addr, remote-port, co tłumaczy, dlaczego nie używasz "cross-talk" i tym podobnych. –

Powiązane problemy