2010-09-24 7 views
8

Ich benutze Lidgen-Netzwerk-Bibliothek 3 zu versuchen, und erstellen Sie eine Peer-to-Peer-Verbindung. Ich bin neu in der Netzwerkprogrammierung, weshalb ich diese Bibliothek verwende.Can Lidgren-Netzwerk-Bibliothek Verbindung direkt Peer zu Peer Beide IP-Adressen

Mit der Funktion DiscoverKnownPeer() konnte ich mich in meinem Netzwerk verbinden. Was ich online gelesen habe, ist, dass ich einen NAT-Punch-Through machen muss, der einen laufenden Server erfordert, der außerhalb des Routers ist. Ich hoffe auf eine Lösung, die diesen zusätzlichen Server nicht benötigt.

Wenn ich beide IP-Adressen auf einem Webserver speichern kann und einen Webdienst erstellen kann, um die IPs über XML an den jeweiligen Client zu senden, wäre ich in der Lage, eine Peer-to-Peer-Verbindung zu erstellen?

Vielen Dank im Voraus.

Antwort

4

Nein, Sie werden nicht in der Lage sein, eine Verbindung über ein NAT ohne Rendezvous-Server aufzubauen

NAT steht im Weg, denn selbst wenn Sie die IP-Adresse wissen, dass Sie nur so weit, wie der Router bekommt. Der Router empfängt eine Anfrage aus dem Internet und weiß nicht, an welche interne IP-Adresse er gesendet werden soll.

NAT-Punch-Through funktioniert, indem beide Peers ausgehende Anfragen an andere senden, der Router "weiß" dann, dass Pakete, die auf seine öffentliche IP auf dem angegebenen Port gerichtet sind, zu dem angegebenen Computer gehen sollen.

Sie müssen also beide Computer mit einem externen Server verbinden, der nicht hinter NAT liegt, und dann diesen externen Server verwenden, um die Verbindung der beiden verdeckten NAT-Peers zu koordinieren (dies ist die Peer-Einführung, die Lidgren eingebaut hat).

+0

Ich möchte P2P-Internet-Chat in Delphi Xe8, Multi-Device-Anwendung machen. Gibt es eine Möglichkeit, die Lidgren-Netzwerkbibliothek in Delphi XE zu verwenden? Wenn ja, können Sie mir einen Download-Link zur Verfügung stellen. Falls NEIN, Gibt es eine ähnliche Lidgren Netzwerkbibliothek für meine Delphi XE8? –

0

Ich weiß, das ist alt, aber ...

Sie nicht angegeben hat, dass der DiscoverKnownPeer mit() in der Einrichtung notwendig war. Wenn dies nicht der Fall ist, können Sie Peer-to-Peer einrichten, indem Sie Portweiterleitungsregeln in Ihrem Router anwenden.