2010-07-08 13 views
6

Estoy tratando de encontrar la manera de usar winsockets para poder convertir mi juego en un juego que se puede jugar en la LAN. He leído algunos documentos de winsockets pero no puedo entender cómo un cliente puede obtener todos los juegos que se crearon en LAN.Escaneo de servidores de juegos LAN usando winsock

¿Tiene que tratar de "conectarse" a cada IP en LAN, como intentar conectarse a 192.168.0.1, luego a 192.168.0.2, etc.? ¿Hay una mejor manera?

+0

Revisa http://en.wikipedia.org/wiki/Broadcast_address –

Respuesta

2

Normalmente, estos servidores de juegos utilizan la difusión UDP local, que es algo que todos los clientes reciben y se pueden procesar con tal de que están escuchando a la misma.

Aquí hay un código de cliente y el servidor muestra encontré que pueden ser de su interés: http://visual-c.itags.org/visual-c-c++/29424/

0

En primer lugar, propongo que se obtiene Wireshark para cualquier desarrollo de redes. Le mostrará qué paquete pasa por el cable. Te permitirá ver cómo lo hacen otros juegos, ya que hay muchas maneras de hacerlo.

Usar la transmisión UDP es una forma de hacerlo. Simplemente cambie el último byte de la IP del objetivo a 255 y debería estar bien.

+4

Cambiar a ciegas el último byte no siempre funcionará. Depende de la máscara de subred real que se utiliza en la red. La forma correcta de generar una dirección de difusión es tomar la IP de la computadora local, 'Y 'con la máscara de subred, luego' O 'con la inversa de la máscara de subred. Alternativamente, solo use la dirección de difusión global 255.255.255.255, pero no todos los cortafuegos/enrutadores permitirán que la transmita. –

2

Creo que hay dos formas posibles de hacerlo.

  1. Crea un "vestíbulo" al que los clientes y servidores se conectan para que puedan encontrarse a través de él.

  2. Los servidores transmiten paquetes UDP. Los clientes escuchan y actualizan una lista de servidores.

Si necesita una manera rápida y fácil, la segunda opción sería grande, pero remeber la mayoría de los paquetes UDP será en vano, ya que sólo se utilizan una vez para cada cliente.

La primera opción es una solución más general y extensiva a este problema. Sin embargo, podría necesitar más tiempo para diseñar e implementar.