Прежде всего, есть ли проблема с использованием UDP и TCP на одном сервере?
Во-вторых, могу ли я использовать тот же номер порта?
источник
Прежде всего, есть ли проблема с использованием UDP и TCP на одном сервере?
Во-вторых, могу ли я использовать тот же номер порта?
Да, вы можете использовать один и тот же номер порта как для TCP, так и для UDP. Многие протоколы уже делают это, например DNS работает на udp / 53 и tcp / 53.
Технически пулы портов для каждого протокола полностью независимы, но для протоколов более высокого уровня, которые могут использовать TCP или UDP, по соглашению они по умолчанию используют один и тот же номер порта .
При написании вашего сервера имейте в виду, что последовательность событий для TCP-сокета намного сложнее, чем для UDP-сокета, так как помимо обычных вызовов socket
и bind
вызовов вам также необходимо listen
и accept
.
Кроме того, этот accept
вызов вернет новый сокет, и это тот сокет, который вам затем придется опрашивать на предмет событий приема. Ваш сервер должен быть готов к продолжению accept
подключений к исходному сокету, одновременно обслуживая несколько клиентов, каждый из которых будет запускать события приема на своих собственных сокетах.
Во-первых, нет проблем с использованием на сервере и tcp, и udp.
Во-вторых, мы можем иметь как UDP-запросы, так и TCP-запросы на одном и том же порту, потому что каждый запрос идентифицируется пятеркой, содержащей IP-адрес источника, IP-адрес назначения, порт источника, порт назначения, PROTOCOL (поскольку протокол может быть TCP или UDP).
источник