Einen socket schließen und dann öffnen Sie es erneut, aus den gleichen port .net
Gut, ich Frage mich, ob jemand helfen kann bei einem problem, dass ich Begegnung....
Ich möchte einen socket schließen und dann erneut aus dem gleichen port. Dies ist, was ich Tue...
Eröffnung:
UdpServer = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
UdpServerIpEndPoint = new IPEndPoint(IPAddress.Any, 9050);
UdpEndPoint = (EndPoint)UdpServerIpEndPoint;
UdpServer.Bind(UdpServerIpEndPoint);
closeing:
UdpServer.Shutdown(SocketShutdown.Both);
UdpServer.Disconnect(true);
UdpServer.Close();
Nachdem ich es schließen. und ich versuche, um es wieder mit dem gleichen code wie oben, bekomme ich Fehler:
Zusätzliche Informationen: Nur ein jede Socketadresse
(protocol/network address/port) is normally permitted
Überprüfte ich für die Ausnahme beim schließen, aber habe ich nicht bekommen, ich vermutete, Sie waren ordnungsgemäß geschlossen, so dass es eigentlich, was dieses problem verursacht? Bitte um Hilfe!!
- Können Sie fügen Sie Ihrem code, wo Sie versuchen, wieder zu verbinden?
- es ist die gleiche wie oben erwähnt.... Eigentlich unter einem thread. Ich halt den thread, dann socket geschlossen. und dann drück ich verbinden und der thread beginnt mit den gleichen Einstellungen
- Tun Sie wirklich ausführen UdpServer.Disconnect(true) erfolgreich? MSDN sagt, dass Disconnect() kann verwendet werden, mit Verbindungs-orientierte Protokolle. UDP ist ein verbindungsloses Protokoll.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bekam ich Antwort....
Ich muss an dieser nach der Unabhängigkeitserklärung der Steckdose...
Könnten Sie Blick auf diese 2 Möglichkeiten.
Gar nicht Empfangen, während Sie in Ihrem Status "beendet", nur in Ihrem BeginReceive, einfach löschen/ignorieren Sie die Daten
Wenn Sie wirklich brauchen, um erstellen Sie die Buchse, dann nicht durchführen, trennen Sie die auf Ihrem Server, weil Sie nicht tatsächlich bekam Sie eine Verbindung. Ihr trennen, wirft
System.Net.Sockets.SocketException (0x80004005): A request to send or receive data was disallowed because the socket is not connected and (when sending on a datagram socket using a sendto call) no address was supplied
Als Referenz, falls jemand stolpert auf diese Frage, sondern suchen für Sie die UdpClient-Umsetzung.
Connect
auf IhreUdpClient
da UDP verbindungslos.