Перш за все, чи є якась проблема із використанням як 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).