Domanda

Questo argomento assomiglia questa discussione

Sono piuttosto nuovo al tema della programmazione di rete, non avendo mai fatto altro che di base TCP / UDP su una singola macchina locale. Ora sto sviluppando un'applicazione che avrà bisogno di supporto di rete P2P. In particolare ho bisogno l'applicazione per connnect e comunicare attraverso la rete internet, preferibilmente senza l'utilizzo di un server per fare il matchmaking tra i clienti.

Sono consapevole e assumendo che quasi tutti gli utenti sono dietro un router, che complica il processo dal momento che né i clienti saranno in grado di inizializzare una connessione diretta verso l'altro.

Lo so UPnP è un'opzione per consentire il port forwarding senza avere gli utenti di configurare manualmente, ma fin d'ora questa non è un'opzione. È che un modo per raggiungere il mio obiettivo o avrò bisogno quel server?

È stato utile?

Soluzione

Avrete bisogno di un server per lo scambio di indirizzi IP e così via. Come l'altro filo rileva letteralmente, l'unico modo di garantire una connessione è possibile procura attraverso un server. La maggior parte sistemi peer to peer utilizzare UPnP e NAT Perforatura (questo metodo ha bisogno di un server di trasmissione di informazioni porta e funziona solo con UDP) per stabilire una connessione, nella maggior parte dei casi.

NAT Perforatura opere di entrambi i client che stabiliscono una connessione a un server, quindi il sia provare a connettersi direttamente a una porta che l'altro ha trasmesso all'altro. La maggior parte UDP NAT ricordare l'indirizzo IP e la porta per un breve periodo di tempo, quindi anche se i dati non ha fatto per l'altra estremità (non che questo conta con UDP) l'altro client cercherà di collegarsi pochi istanti dopo a tale relazione come il NAT si aspetta la risposta.

Altri suggerimenti

Scopri il canale P2P con WCF: http://msdn.microsoft .com / it-it / library / cc297274.aspx

Funziona abbastanza bene.

Ignorando UPnP (che funziona solo con alcuni router, purtroppo), e nessun server centrale, non sono sicuro che sarebbe stato possibile creare una connessione diretta quando entrambi gli utenti sono dietro un NAT.

bene per evitare un server a "matchmake" si potrebbe fare quello che fa skype e impostare alcuni coetanei come relè per altri dietro NAT. Si wll sempre bisogno di un qualche tipo di meccanismo di avvio reggette, in modo da un server centralizzato sarà probabilmente giocare nel vostro sistema in qualche modo (a seconda di cosa il vostro sviluppo, ovviamente).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top