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?
fuente
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 hacen esto, 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 usen el mismo número de puerto por defecto .
A la hora de escribir tu servidor, ten 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 socket
y bind
también tienes que listen
y accept
.
Además, esa accept
llamada devolverá un nuevo socket y es ese socket el que tendrá que sondear también para recibir eventos. Su servidor debe estar preparado para continuar accept
con las conexiones en el socket original mientras atiende simultáneamente a varios clientes, cada uno de los cuales activará eventos de recepción en sus propios sockets.
En primer lugar, no hay ningún problema al utilizar tcp y udp en el servidor.
En segundo lugar, podemos tener solicitudes tanto UDP como TCP en el mismo puerto, porque cada solicitud es identificada por un quintuplo contenido por IP de origen, IP de destino, Puerto de origen, Puerto de destino, PROTOCOLO (ya que el protocolo puede ser TCP o UDP).
fuente