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?
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?
Odpowiedzi:
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 socketi bindwywołań musisz również listeni accept.
Co więcej, to acceptwywoł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 acceptpołą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).