¿Pueden los zócalos TCP y UDP usar el mismo puerto?

En primer lugar, ¿hay algún problema con el uso de UDP y TCP en el mismo servidor?

En segundo lugar, ¿puedo usar el mismo número de puerto?

Sí, puede usar el mismo número de puerto para TCP y UDP. Muchos protocolos ya lo hacen, por ejemplo, DNS funciona en udp / 53 y tcp / 53.

Técnicamente, los grupos de puertos para cada protocolo son completamente independientes, pero para los protocolos de nivel superior que pueden usar TCP o UDP, es una convención que establezcan el mismo número de puerto.

Cuando escriba su servidor, tenga en cuenta que la secuencia de eventos para un socket TCP es mucho más difícil que para un socket UDP, ya que además de las llamadas normales de socket y bind también debe listen y accept .

Además, que accept call devolverá un nuevo socket y será ese socket el que también tendrá que sondear para recibir eventos. Su servidor debe estar preparado para seguir accept conexiones en el zócalo original mientras atiende simultáneamente a varios clientes, cada uno de los cuales activará eventos de recepción en sus propios zócalos.

En primer lugar, no hay ningún problema al utilizar tanto tcp como udp en el servidor.

En segundo lugar, podemos tener solicitudes UDP y TCP en el mismo puerto, porque cada solicitud se identifica mediante un quíntuple contenido por IP de origen, IP de destino, Puerto de origen, Puerto de destino, PROTOCOLO (ya que el protocolo puede ser TCP o UDP).