Po pierwsze, czy jest jakiś problem z używaniem zarówno UDP, jak i TCP na tym samym serwerze?
Po drugie, czy mogę użyć tego samego numeru portu?
źródło
Po pierwsze, czy jest jakiś problem z używaniem zarówno UDP, jak i TCP na tym samym serwerze?
Po drugie, czy mogę użyć tego samego numeru portu?
Tak, możesz użyć tego samego numeru portu dla protokołu TCP i UDP. Wiele protokołów już to robi, na przykład DNS działa na udp / 53 i tcp / 53.
Z technicznego punktu widzenia pule portów dla każdego protokołu są całkowicie niezależne, ale w przypadku protokołów wyższego poziomu, które mogą używać protokołu TCP lub UDP, obowiązuje konwencja, że domyślnie mają one ten sam numer portu .
Pisząc swój serwer, pamiętaj, że sekwencja zdarzeń dla gniazda TCP jest znacznie trudniejsza niż dla gniazda UDP, ponieważ oprócz normalnych socket
i bind
wywołań musisz również listen
i accept
.
Co więcej, to accept
wywołanie zwróci nowe gniazdo i to właśnie to gniazdo będziesz musiał również odpytać o zdarzenia odbierania. Twój serwer powinien być przygotowany do kontynuowania accept
połączeń w oryginalnym gnieździe, jednocześnie obsługując wielu klientów, z których każdy będzie wyzwalał zdarzenia odbierania na swoich własnych gniazdach.
Po pierwsze, nie ma problemu z używaniem 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 źródłowy adres IP, docelowy adres IP, źródłowy port, docelowy port, PROTOKÓŁ (protokół może być TCP lub UDP).
źródło