2011-06-18 16 views
7

Estoy trabajando en un pequeño prototipo de juego en red que se reproducirá en LAN utilizando UDP. Para el descubrimiento de otras computadoras en la red, he estado investigando la transmisión. Sin embargo, todavía no estoy seguro de algunos detalles sobre la configuración/uso del socket UDP (novato de redes). Encontré una buena biblioteca para usar después de que se inicia el juego, pero al principio, todas las computadoras que ejecutan el juego deben ser descubiertas y una tiene que ser elegida como servidor. Entonces mis preguntas son las siguientes:Transmisión UDP para LAN descubrimiento de equipo y configuración de servidor

  • ¿Se puede usar un solo socket UDP para escuchar y enviar transmisiones? Estoy bastante seguro de que la respuesta es sí, pero quería verificarlo.
  • Al usar UDP, ¿realmente tiene que usar bind()? Por lo que tengo entendido, connect() no es necesario, ni es send()/recv(), ya que son para TCP (sendto()/recvfrom() siendo los reemplazos).
+0

Esta es una pregunta bien pensada, pero contiene muchas preguntas y probablemente sería mejor servirla como preguntas separadas. –

+0

@ 0A0D Buen punto, no estaba seguro de si debería dividirlo ya que estaban algo relacionados. Dejaré los UDP juntos y sacaré los dos últimos como preguntas separadas. – Gemini14

Respuesta

4
  1. Sí, puede enviar transmisiones, enviar y recibir paquetes unicast (ya sea de difusión o unidifusión) desde una única toma. Esto es MUY útil para el trabajo de "respuesta al remitente".

  2. No todos los sockets necesitan usar bind. Si no lo hace, se seleccionará un puerto automáticamente. Pero alguien tiene que vincular un número de puerto precompartido para que el primer paquete (posiblemente una transmisión) se entregue correctamente. El primer paquete contiene el puerto de origen y la dirección IP; los paquetes de respuesta solo pueden usar esto.

  3. Sin embargo, unir ambos extremos a números de puerto fijo simplifica la configuración del cortafuegos.

  4. setsockopt(SO_BROADCAST), de lo contrario, recibirá errores al intentar enviar paquetes de difusión.

+0

Respuesta muy clara, especialmente la que se refiere a la vinculación; ahora tiene mucho más sentido para mí. ¡Gracias! – Gemini14

Cuestiones relacionadas