2010-08-26 17 views
5

Sto lavorando a una versione online di Connect 4 e desidero collegare 2 computer.Connetti 2 computer con .NET

ho una certa conoscenza sulla creazione di reti tra i computer della TcpClient e classi Listener, però per quanto ne so questi solo il lavoro sul computer collegato alla stessa rete (LAN)

io voglio essere in grado di essere su un diverso parte della Terra e gioca a connetterti 4 con mia sorellina, indipendentemente da quale LAN ci sia.

È possibile?

risposta

1

Sì.

Il collegamento di due computer su una LAN equivale a una connessione su Internet. Le uniche differenze sono:

  • È necessario collegare in base alla tua esterna indirizzo IP al posto del tuo locale (provare http://whatismyipaddress.com)
  • Sarà necessario garantire che il router capisce per reindirizzare il traffico in entrata al tuo computer (il tuo indirizzo IP esterno viene mappato sul tuo router. Devi assicurarti che il router renda la connessione al tuo computer).

Senza una domanda più specifica, non posso ottenere più dettagliato di quello.

+0

Wow, grazie per la rapida risposta. Sono davvero sorpreso di quanto velocemente e quanto sia stata utile la risposta che ho ricevuto. Tutti hanno affrontato il problema in modo leggermente diverso e apprezzo tutte le diverse prospettive. Tuttavia, i firewall non sono qualcosa che dovrebbe essere un problema per la mia situazione. Inoltre, pagare soldi è fuori discussione per uno stupido net-game. Detto questo, Ricordo di essere riuscito a ottenere l'IP del gateway ma non so come farlo per un IP esterno. Potresti aiutarmi qui? – Overload119

+0

@ user213371, è nel post originale. http://www.whatismyipaddress.com/ – riwalk

1

TcpClient sarà in grado di connettersi a una presa ovunque su Internet. Tuttavia, i firewall o una rete NAT-data potrebbero ostacolare. Dovrai assicurarti che almeno uno di voi abbia un indirizzo IP accessibile pubblicamente e una porta aperta.

Dato che stai scrivendo questo gioco, potresti prendere in considerazione la scrittura di un'applicazione server-only che permetterà a due persone di connettersi da dietro i firewall. Quindi, dovrai solo trovare un modo per ospitarlo.

1

Questo è stato il primo gioco di rete che ho scritto anch'io.

Potrebbe essere possibile. Il problema è che potrebbe essere necessario aprire le porte su un firewall, un router, ecc. Per consentire la comunicazione in entrata da un computer all'altro. Questo è un problema anche per i professionisti.

La soluzione migliore potrebbe essere quella di creare un "server di gioco" con un indirizzo noto. Un server web economico con un nome di dominio funzionerebbe bene. Un'applicazione invia messaggi al server utilizzando un servizio Web, mentre l'altra controlla una volta al secondo alla ricerca di nuovi messaggi.

0

È possibile utilizzare le classi client e listener .NET per connettersi a qualsiasi computer su qualsiasi indirizzo IP situato in qualsiasi parte del pianeta. Il problema è che dovrai conoscere l'indirizzo IP dell'altro computer e dovrà accettare le tue connessioni.

Se l'altra macchina è protetta da un firewall, le cose diventano più difficili. Il firewall bloccherà le richieste di connessione non richieste, incluse le richieste dalla tua macchina per comunicare con l'altra macchina dietro il firewall. I client di messaggistica istantanea hanno questo problema tutto il tempo - aggirano il problema facendo collegare ciascuna estremità della connessione a un server intermedio che trasmette i dati tra le due connessioni.

Cioè, la tua macchina può effettuare chiamate verso macchine che sono su Internet pubblica, e quando effettui tale connessione attraverso un firewall il tuo firewall permetterà alle macchine che ti colleghi di rispondere, ma non puoi connetterti direttamente su un'altra macchina dietro un firewall, a meno che non si prendano accordi preventivi come l'apertura di un numero di porta TCP/IP specifico sul firewall.

Esistono ora standard di protocollo come UPnP che consentono al computer di richiedere al firewall locale di aprire una porta per una connessione specifica. Se anche il computer all'altra estremità esegue questa operazione, sarebbe possibile stabilire una connessione TCP/IP tra le due macchine tramite i rispettivi firewall, IF è possibile trovare un modo per comunicare i numeri di porta tra loro. Dovresti inviare il numero di porta che è stato aperto sul tuo firewall all'altro computer e dovresti inviarti il ​​numero di porta aperta sul loro firewall. Quindi avrai comunque bisogno di una sorta di intermediario per scambiare almeno queste informazioni di connessione in modo che ciascuna delle parti possa connettersi direttamente all'altra.

0

Creare un sito Web/un'applicazione per questo, e quindi non è necessario preoccuparsi della conettività. Funzionerà anche cross-platform, esp. se si evita il flash.

2

Dai un'occhiata a Jabber, è un protocollo di messaggistica istantanea (utilizzato da Gtalk). Collegamento con uno jabber server pubblico o impostare il proprio host Jabber. Jabber-net è una libreria per NET

È possibile estenderlo a fare praticamente tutto quello che vuoi tra cui giochi, ecc

0

Se si dispone di un sito web è possibile chiamare una pagina sul sito web e registrare l'indirizzo IP del chiamare il computer. In PHP si può fare:

$Calling_IP_Address = $_SERVER['REMOTE_ADDR']; 

Poi, salvare i dati in un file di testo. Quando vuoi giocare a uno dei giocatori devi chiamare la pagina web per registrare il loro indirizzo IP e l'altro giocatore legge il file di testo salvato per scoprire dove connetterti.

Lavoro terminato.