Tout d'abord, y a-t-il un problème avec l'utilisation à la fois d'UDP et de TCP sur le même serveur?
Deuxièmement, puis-je utiliser le même numéro de port?
la source
Tout d'abord, y a-t-il un problème avec l'utilisation à la fois d'UDP et de 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 complètement indépendants, mais pour les protocoles de niveau supérieur qui peuvent utiliser TCP ou UDP, il est conventionnel 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 d'événements pour une socket TCP est beaucoup plus difficile que pour une socket UDP, car en plus des appels normaux socket
et des bind
appels, vous devez également listen
et accept
.
De plus, cet accept
appel renverra une nouvelle socket et c'est cette socket que vous devrez ensuite interroger également pour recevoir des événements. Votre serveur doit être prêt à continuer accept
les connexions sur le socket d'origine tout en desservant simultanément plusieurs clients dont chacun déclenchera des événements de réception sur ses propres sockets.
Premièrement, il n'y a aucun 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, PROTOCOLE (car le protocole peut être TCP ou UDP).
la source