Halllo,
Habe einen Server, der nur Verbindungen von einem bestimmten LocalEndPoint zulässt. Also IP und Port.
Wie kann ich in meinem Client einen bestimmten lokalen Port zuweisen, den er verwenden soll? Habe gesehen, dass er nach jedem Connect Versuch einen anderen Port benutzt.
Der Port den ich im Konstruktor angebe, bezieht sich doch ausschliesslich auf den Remote Host oder?
Hallo,
benutze den TcpClient-Konstruktor, der einen IPEndPoint als Parameter annimmt:
TcpClient-Konstruktor (IPEndPoint), lies den Abschnitt 'Hinweise'
Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
Vielen Dank für die rasche Antwort,
Ist das eigentlich normal, dass der Server auf den lokalen Port achtet.
Wenn ich die Verbindung zum 2. Mal herstellen will, bekomme ich nach dem Connect Aufrufe folgende Fehlermeldung:
"Normalerweise darf jede Socketadresse (Protokoll, Netzwerkadresse oder Anschluss) nur jeweils einmal verwendet werden."
Kann ich den Port irgendwie wieder freigeben?
Mit Dispose alleine klappt das bei mir nicht.
Zum Verbindung abbauen, führe ich folgendes aus:
Nstream.Dispose();
Nstream.Close();
tcpclient.Close();
Muss ich sonst noch was beachten?
Ich kann die tcpclient.Dispose() Method aber nicht aufrufen. ( is inaccessable due to its protection level )
Weiss du was ich falsch mache?
Hallo,
ein Close
auf dem TcpClient müsste reichen:
Beim Aufrufen dieser Methode wird der zugeordnete Socket geschlossen. Außerdem wird der zugeordnete NetworkStream geschlossen, mit dem Daten gesendet und empfangen werden, falls ein solcher erstellt wurde.
Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
Leider klappt es mit Close() aber nicht. Ich muss das Programm beenden, einige Minuten warten, dann kann ich erst wieder die Verbindung herstellen, da der Port irgendwie noch benutzt wird.
Hallo,
auch noch wenn Du vorher Close auf dem Network-Stream rufst?
Es gibt da noch ein paar Feinheiten:
TcpClient.Close-Methode (unter Hinweise)
The TcpClient Close method does not close the underlying TCP connection
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
Setze auf dem Socket einen DontLinger dann gehts schneller...
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...