Les sockets TCP et UDP peuvent-ils utiliser le même port?

Tout d’abord, y a-t-il un problème avec l’utilisation des protocoles UDP et TCP sur le même serveur?

Deuxièmement, puis-je utiliser le même numéro de port?

Oui, vous pouvez utiliser le même numéro de port pour TCP et UDP. De nombreux protocoles le font déjà, par exemple DNS fonctionne sur udp / 53 et tcp / 53.

Techniquement, les pools de ports pour chaque protocole sont totalement indépendants, mais pour les protocoles de niveau supérieur qui peuvent utiliser TCP ou UDP, il est de règle qu’ils utilisent par défaut le même numéro de port.

Lors de l’écriture de votre serveur, gardez à l’esprit que la séquence des événements pour un socket TCP est beaucoup plus difficile que pour un socket UDP, car vous devez également listen et accept , ainsi que les appels normaux.

En outre, accept appel renverra un nouveau socket et c’est ce socket que vous devrez également interroger pour les événements de réception. Votre serveur doit être prêt à continuer à accept les connexions sur le socket d’origine tout en desservant simultanément plusieurs clients qui déclencheront chacun des événements de réception sur leurs propres sockets.

Tout d’abord, il n’y a pas de problème à utiliser à la fois TCP et UDP sur le serveur.

Deuxièmement, nous pouvons avoir à la fois des requêtes UDP et TCP sur le même port, car chaque requête est identifiée par un quintuple contenu par IP source, IP de destination, port source, port de destination, PROTOCOL (comme protocole peut être TCP ou UDP).