2010-08-26 16 views
5

Estoy trabajando en una versión en línea de Connect 4, y quiero poder conectar 2 computadoras juntas.Conecte 2 computadoras con .NET

que tienen algún conocimiento en la creación de redes entre ordenadores del TCPClient y clases de oyente, sin embargo, que yo sepa, estos sólo el trabajo en el ordenador conectado a la misma red (LAN)

Quiero ser capaz de estar en un diferente parte de la Tierra y juego conectan 4 con mi hermanita, sin importar en que LAN estamos.

¿Esto es posible?

Respuesta

1

Sí.

Conectar dos computadoras en una LAN es lo mismo que conectarse a través de Internet. Las únicas diferencias son:

  • que se necesitan para conectar basado en su dirección IP externa en lugar de su local (tratar http://whatismyipaddress.com)
  • Usted tendrá que asegurarse de que su router entiende para redirigir el tráfico de entrada a su computadora (su dirección IP externa se asigna a su enrutador. Debe asegurarse de que el enrutador realice la conexión de regreso a su computadora).

Sin una pregunta más específica, no puedo obtener más detalles que eso.

+0

Wow, gracias por la respuesta rápida. De hecho, me asombró la rapidez y la información que me dieron las respuestas. Todos abordaron el problema de forma ligeramente diferente y aprecio las diferentes perspectivas. Sin embargo, los firewalls no son algo que debería ser demasiado problemático para mi situación. Además, pagar cualquier dinero está fuera de cuestión para un pequeño juego de red tonto. Dicho esto, Recuerdo que pude obtener la puerta de enlace IP pero no sé cómo hacer eso para una IP externa. ¿Podrías ayudarme aquí? – Overload119

+0

@ user213371, está en la publicación original. http://www.whatismyipaddress.com/ – riwalk

1

TcpClient podrá conectarse a un enchufe en cualquier lugar de Internet. Sin embargo, los cortafuegos o una red NAT-ed podrían interferir. Tendrá que asegurarse de que al menos uno de ustedes tenga una dirección IP accesible públicamente y un puerto abierto.

Ya que está escribiendo este juego, puede considerar escribir una aplicación de solo servidor que permita que dos personas se conecten detrás de los firewalls. Entonces, solo tendrás que encontrar la manera de alojarlo.

1

Ese fue el primer juego de red que escribí también.

Es posible. El problema es que es posible que tenga que abrir puertos en un firewall, enrutador, etc. para permitir la comunicación entrante de una computadora a la otra. Este es un problema incluso para profesionales.

La mejor opción es crear un "servidor de juegos" con una dirección conocida. Un servidor web barato con un nombre de dominio funcionaría muy bien. Una aplicación envía mensajes al servidor usando un servicio web, mientras que la otra aplicación la revisa una vez por segundo buscando nuevos mensajes.

0

Puede usar el cliente .NET y las clases de escucha para conectarse a cualquier computadora en cualquier dirección IP ubicada en cualquier parte del planeta. El truco es que necesitarás saber la dirección IP de la otra máquina y deberá aceptar tus conexiones.

Si la otra máquina está detrás de un firewall, las cosas se ponen más difíciles. El firewall bloqueará las solicitudes de conexión no solicitadas, incluidas las solicitudes de su máquina para hablar con la otra máquina detrás del firewall. Los clientes de mensajería instantánea tienen este problema todo el tiempo: lo solucionan haciendo que cada extremo de la conexión hable con un servidor intermedio que transmite datos entre las dos conexiones.

Es decir, su máquina puede realizar llamadas a máquinas que están en Internet público, y cuando hace una conexión a través de un firewall su firewall permitirá que las máquinas a las que se conecte le respondan, pero no puede conectarse directamente a otra máquina que está detrás de un firewall a menos que haga arreglos previos, como abrir un número de puerto TCP/IP específico en el firewall.

Ahora existen estándares de protocolo como UPnP que le permitirían a su computadora solicitar que su firewall local abra un puerto para una conexión específica. Si la computadora en el otro extremo también hace esto, entonces sería posible establecer una conexión TCP/IP entre las dos máquinas a través de sus firewalls respectivos, IF, puede encontrar una manera de comunicar los números de puerto entre sí. Debería enviar el número de puerto que se abre en su cortafuegos a la otra computadora, y ellos necesitarían enviarle el número de puerto abierto en su cortafuegos. Así que todavía necesitarás algún tipo de intermediario para al menos intercambiar esta información de conexión para que cada parte pueda conectarse directamente a la otra.

0

Cree un sitio web/aplicación para esto, y luego no necesita preocuparse por la conectividad. También funcionará multiplataforma, esp. si evitas flash.

2

Eche un vistazo a Jabber, es un protocolo de mensajería instantánea (utilizado por Gtalk). Conecte con un público jabber server o configure su propio host Jabber. Jabber-net es una biblioteca para .NET

Puede extenderlo a hacer casi todo lo que quieras incluyendo juegos, etc.

0

Si usted tiene un sitio web puede llamar a una página en el sitio web y registrar la dirección IP de la llamando a la computadora. En PHP puede hacer:

$Calling_IP_Address = $_SERVER['REMOTE_ADDR']; 

Luego, guarde los datos en un archivo de texto. Cuando quiera jugar, uno de los jugadores necesita llamar a la página web para registrar su dirección IP y el otro jugador lee el archivo de texto guardado para averiguar a dónde conectarse.

Trabajo hecho.

Cuestiones relacionadas