Прежде всего, есть ли проблема с использованием 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).