Могут ли сокеты TCP и UDP использовать один и тот же порт?


прежде всего, есть ли какие-либо проблемы с использованием UDP и TCP на одном сервере?

во-вторых, могу ли я использовать тот же номер порта?

2 68

2 ответа:

Да, вы можете использовать один и тот же номер порта для TCP и UDP. Многие протоколы уже делают это, например DNS работает на udp / 53 и tcp / 53.

технически пулы портов для каждого протокола полностью независимы, но для протоколов более высокого уровня, которые могут использовать либо TCP, либо UDP, они по умолчанию используют один и тот же порт .

при написании вашего сервера, имейте в виду, что последовательность событий для сокета TCP много сложнее, чем для сокета UDP, так как и обычный socket и bind звонки, вы должны listen и accept.

кроме того, что accept вызов вернет новый сокет и это это сокет, который вам придется также опрашивать для получения событий. Ваш сервер должен быть готов продолжить acceptING соединения на исходном сокете, одновременно обслуживая несколько клиентов, каждый из которых будет запускать события приема самостоятельно розетки.

во-первых, нет никаких проблем с использованием tcp и udp на сервере.

во-вторых, мы можем иметь как UDP ,так и TCP-запросы на одном порту ,потому что каждый запрос идентифицируется пятеркой, содержащей исходный IP, конечный IP, исходный порт, порт назначения, протокол(поскольку протокол может быть TCP или UDP).