Czy gniazda TCP i UDP mogą używać tego samego portu?
Po pierwsze, czy jest jakiś problem z używaniem UDP i TCP na tym samym serwerze?
Po drugie, czy mogę użyć tego samego numeru portu?
2 answers
Tak, możesz użyć tego samego numeru portu zarówno dla TCP, jak i UDP. Wiele protokołów już to robi, na przykład DNS działa na udp/53 i tcp/53.
Technicznie pule portów dla każdego protokołu są całkowicie niezależne, ale dla protokołów wyższego poziomu, które mogą używać TCP lub UDP, zgodnie z konwencją domyślną jest ten sam portNumer .
Podczas pisania serwera należy pamiętać, że kolejność zdarzeń dla gniazda TCP jest znacznie trudniejsza niż dla UDP socket, ponieważ oprócz zwykłych wywołań socket
i bind
musisz również listen
i accept
.
Ponadto, że accept
zwróci nowe gniazdo i jest to to gniazdo, które następnie będziesz musiał również przepytywać o zdarzenia odbioru. Twój serwer powinien być przygotowany do kontynuowania accept
połączeń na oryginalnym gnieździe, jednocześnie obsługując wielu klientów, z których każdy będzie wyzwalał zdarzenia odbioru na własnych gniazdach.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-08 09:09:17
Po pierwsze, nie ma problemu z użyciem zarówno TCP, jak i udp na serwerze.
Po drugie, możemy mieć zarówno żądania UDP, jak i TCP na tym samym porcie, ponieważ każde żądanie jest identyfikowane pięciokrotnie przez source IP ,Destination IP, Source Port, Destination Port, PROTOCOL (jako protokół może być TCP lub UDP).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-01 09:37:30