Conexión entre cliente y servidor sin transmisión de IP

Iniciado por rubn, 15 Enero 2009, 12:49 PM

0 Miembros y 2 Visitantes están viendo este tema.

XdeoX

Cita de: raul338 en 13 Agosto 2009, 01:39 AM
aver, creo que lo que el dice es algo que para muchos (no programadores) es algo tan simple pero ni yo pude pensarlo (no es por hacerme el importante xD xD)

Yo lo veo mas en juegos de lan que online (ej. counter strike). Yo enciendo un servidor en un PC IP: 192.168.0.1, otra IP (192.168.0.3) lo detecta segundos despues y lo muestra como "listo para conectarse", todo automaticamente. No se como lo haran (podriamos poner para escuchar 192.168.0.x varios a la vez, pero e visto casos en que llegan a valores altos xD). La gran pregunta es como hacerlo  :P

usa Garena

Lambda

Cita de: raul338 en 13 Agosto 2009, 01:39 AM
aver, creo que lo que el dice es algo que para muchos (no programadores) es algo tan simple pero ni yo pude pensarlo (no es por hacerme el importante xD xD)

Yo lo veo mas en juegos de lan que online (ej. counter strike). Yo enciendo un servidor en un PC IP: 192.168.0.1, otra IP (192.168.0.3) lo detecta segundos despues y lo muestra como "listo para conectarse", todo automaticamente. No se como lo haran (podriamos poner para escuchar 192.168.0.x varios a la vez, pero e visto casos en que llegan a valores altos xD). La gran pregunta es como hacerlo  :P

El CS usa UDP y udp tiene una IP de broadcast (255.255.255.255) enviandole algo a esa IP lo reciben todos los clientes de la lan.

http://www.elguille.info/colabora/vb2005/galegre_BroadcastUDP.htm

En TCP no hay manera de hacer eso, necesitas enviarle la IP a algo para que despues puedan consultarla.

shaggikpo

y si eviaras el mensaje a la ip brodcast de la lan la cual seria 255.255.255.0?

Lambda


WHK

Cita de: raul338 en 13 Agosto 2009, 01:39 AM
Yo lo veo mas en juegos de lan que online (ej. counter strike). Yo enciendo un servidor en un PC IP: 192.168.0.1, otra IP (192.168.0.3) lo detecta segundos despues y lo muestra como "listo para conectarse", todo automaticamente. No se como lo haran (podriamos poner para escuchar 192.168.0.x varios a la vez, pero e visto casos en que llegan a valores altos xD). La gran pregunta es como hacerlo  :P

El counter strike busca servidores de dos formas... una es con un listado de servidores en forma de archivo, toma las direcciones y comienza a verificar conexiones una por una, la otra forma es por lan, si le haces click en mostrar lista de servidores locales el counter comenzará a hacer un rastreo de ips comenzando por 127.0.0.1 y despues por 192.168.0.1 hasta 192.168.254.254 y lo que hace es conectar un socket por medio del protocolo udp a la ip, si esta ip acepta la conexión entonces envía el header y si el header es del servidor de counter entonces lo agrega a la lista.

Eso significa que el counter hace dos conexiones, una para escanear y la otra para jugar.

Algo similar hace el netscann, le das un rango de ips y comienza a escanear, lo que hace es hacerle ping ip por ip.
Nmap también lo hace pero utiliza métodos diferentes que el socket nativo de visual basic no puede hacer ya que necesitas utilizar el socket a nivel RAW y windows restringe el acceso desde el sistema operativo, por eso se utilizan parches o drivers como winpcap.

Tumerek

Una solución es que todos los servidores que se abran, escriban en un archivo en un servidor central sus  ip correspondientes, indicando si están abiertos o no, y los clientes elijan en ese archivo que servidores quieren usar. No se si esto te sirve de algo. Saludetes