2012-03-29 6 views
2

Ich habe den letzten Monat damit verbracht, ein Multiplayer-Spiel zu schreiben. Ich habe es nur auf einer Maschine getestet, mit 127.0.01: 9051 als IPEndPoint.Die Verbindung zur IP-Adresse des lokalen Computers kann nicht hergestellt werden, indem die Internet-IP-Adresse verwendet wird

Ich änderte die IP-Adresse zu meinem WAN-IP, konfigurierte Portweiterleitung auf meinem Router, konfigurierte meine Software-Firewall etc ... Aber es verbindet sich nicht.

Ich habe überprüft, ob der Port mit this site geöffnet ist. Ergebnis: Der Hafen ist wirklich offen.

Auch, wenn ich den Port von dieser Website überprüfen, empfängt mein Server Pakete ganz gut; Wenn ich jedoch eine Verbindung mit meiner eigenen Maschine herstelle, erhält sie nichts.

Ich habe alles auf die Grundlagen reduziert, um sicherzustellen, dass es kein Problem mit meinem Code war.

Diese grundlegende Code funktioniert nicht:

IPEndPoint iep = new IPEndPoint(IPAddress.Parse("XXX.XXX.XXX.XXX"), 9051); 
TcpClient client = new TcpClient(); 
client.Connect(iep); 

Irgendwelche Ideen sehr geschätzt werden.

Antwort

3

Wenn Sie versuchen, eine Verbindung mit der IP herzustellen, die Forwarded (outsideIP) zu demselben Computer (insideIP) ist, wird es nicht funktionieren. Es gibt nur sehr wenige Unternehmen Firewalls und keine Consumer-Geräte (ich weiß), dass leitet ein Paket, das von innen nach außen und übersetzen sie in zurück

[Internet] -. outsideIP [Router/Firewall] insideIP1 - insideIP2 [Computer]

In diesem Fall Pakete von insideIP (X) nicht in der Lage sein zu outsideIP zu verbinden.

+0

Also im Grunde muss ich einen separaten Client für mich selbst erstellen, der mit 127.0.0.1 verbindet? –

+0

@Jeff - oder Sie können die Endpunktadresse in eine Konfigurationsdatei schreiben. –

+0

@Jeff Ja, Sie würden zwei Anwendungen benötigen, die auf 1 oder mehr Computern laufen. –

0

Versuchen Sie zu sehen, ob Sie Telnet zu Ihrem wan IP auf Port 9051 Telnet können. Router mögen es nicht wirklich, wenn Sie eine Verbindung zu ihrer wan IP aus dem Netzwerk selbst herstellen.

+0

es erlaubt mir nicht mich anpingen =) –

+0

Ping ist auch nicht TCP. Ping ist ICMP (das kein Konzept von Ports hat). –

+0

k ich habe telnet derzeit nicht aktiviert, werde ich einfach versuchen, von einer anderen Maschine zu verbinden, um zu sehen, ob es funktioniert. Danke für Ihre Hilfe –

0

Sie könnten Dyndns oder einen anderen Dienst für die Außenwelt verwenden, um sich mit Ihrem Server zu verbinden und denselben Namen in Ihre Host-Datei mit 127.0.0.1 zu schreiben, damit Sie sich intern verbinden können.

+0

danke für den Vorschlag –

0

Ist Ihr Client und Ihr Server (beide in Ihrem fehlgeschlagenen Test) mit demselben Endpunkt-IP/-Port? Sie können einen Port nur jeweils einzeln binden. Verwenden Sie zwei Ports, einen für den Server, einen für den Serverausgang (clinet in). Auf diese Weise werden sie nicht zusammenstoßen. Verwenden Sie Telnet, um zu überprüfen, ob Sie eine Verbindung mit den von Ihnen verwendeten IP/Ports herstellen können, und Netstat, um zu überprüfen, ob sie bereits verwendet werden.

Verwandte Themen