2009-07-01 7 views
1

Ich führe eine Client/Server-Anwendung. Ich verwende ein Textfeld, um den Benutzer die IP-Adresse und den Port eingeben zu lassen. Ich versuche, mit 127.0.0.1 eine Verbindung zum Server herzustellen, und es gibt kein Problem. Danach habe ich versucht, 192.168.2.102 (NAT-IP-Adresse dieses Computers) zu verwenden, und es schlägt fehl. Irgendeine Idee warum?keine Verbindung zum Serverproblem in C#

der Code ich verwende ist: (dies ist der der Teil, verbindet)

connect(string IPaddress, int port) 
{ 
    TcpCLient connection = new TcpClient(); 
    connection.Connect(IPaddress, port); 
} 

ich mit Debug-Option aktiviert ist, tut es das Recht IPaddress und Port verwenden. Firewall sollte es ermöglichen, eine Verbindung herzustellen. Es ist komisch.

EDIT: Ich glaube, ich kenne das Problem. Auf der Server-Seite, verwende ich

_listener = new TcpListener(IPAddress.Loopback, 8001); 

Und ich denke, das ist der Grund, warum es nur Verbindungen von 127.0.0.1 akzeptiert. Aber was sollte ich stattdessen verwenden? Ich möchte nur eine Verbindung von jedem IP mit diesem Port.

+1

Sie müssen wahrscheinlich mehr Informationen über den Fehler hinzufügen ... welche Ausnahme erhalten Sie? was geschieht? – jerryjvl

+0

"192.168.2.102:8001 Verbindung war nicht möglich, weil der Zielcomputer dies aktiv abgelehnt hat". – Nefzen

+0

Sind Sie sicher, dass der angegebene Port nicht verwendet wird? Versuchen Sie, dieselbe Verbindung zur 192. * -Adresse herzustellen und dem System zu ermöglichen, einen Port für Sie auszuwählen. Sehen Sie, ob Sie ein anderes Ergebnis erhalten. – LBushkin

Antwort

3

Wenn Sie IPAddress.Loopback angeben, funktionieren nur Verbindungen mit 127.0.0.1. Ersetzen Sie es durch IPAddress.Any, um Ihrem Server mitzuteilen, dass er auf allen Schnittstellen zuhören soll.

+0

ja, sah es einfach selbst. Vielen Dank – Nefzen

0

Zunächst einmal ist der einzige Umstand, den ich je gesehen habe, Connection was not possible because the destination computer actively rejected it ist, wenn wirklich nichts für Verbindungen an der angegebenen Adresse und Port zuhören ... oder es gibt eine Firewall.

Sie können mit einem tracert überprüfen, dass 192.168.2.102 tatsächlich Punkte zeigt, wo Sie denken, dass es tut. Eine andere Möglichkeit ist es, telnet von der Befehlszeile aus zu verwenden, um eine Verbindung zu der Adresse und dem Port herzustellen, wenn Sie wirklich einen Fehler in Ihrem Code vermuten (obwohl ich das hier nicht sehen kann).

Nachtrag:
Gibt es eine andere Anwendung, die erfolgreich eine Verbindung zu dieser bestimmten IP-Adresse auf dem gleichen Computer machen?

Verwandte Themen