Перш за все, чи є якась проблема із використанням як 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, Destination IP, Source Source, Port Destination, PROTOCOL (оскільки протоколом може бути TCP або UDP).