Wie handle Socket Exception
Socket tempSocket;
try
{
IPAddress addr = IPAddress.Parse(ip);
IPEndPoint endpt = new IPEndPoint(addr, port);
tempSocket = new Socket(endpt.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
tempSocket.Connect(endpt);
}
catch
{
OnDisconnected("Connection Error");
return false;
}
Meine Konsole das Programm abstürzt mit der Fehlermeldung, die besagt, dass es eine socket exception, da der Zielcomputer aktiv verweigert die Verbindung. Das ist in Ordnung, da manchmal das andere Ende ist nicht laufen, das wäre normal. Meine Frage ist, wie kann ich richtig handle das so, dass das Programm nicht Abstürzen, und anstatt einfach nur False zurückgibt? Ich habe versucht zu googeln, aber konnte nichts finden.
- versuchen Sie, diese
catch (System.Net.Sockets.SocketException ex) { Console.WriteLine(ex.Message); }
- Gleiche Problem, es scheint nicht wirklich trifft den catch-block.
- Es scheint, dass Sie auf
break on all exceptions
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihr Programm wird schon nicht den "Absturz" mit dem code, die Sie zeigten; D. H. wenn Sie fangen die exception und gibt false zurück, die aus Ihrer Funktion.
Dem Fenster sehen Sie ("Exception Assistant") ist optional, um Ihnen zu helfen mit Debuggen, es wird nicht angezeigt, wenn Sie führen Sie Ihr Programm außerhalb von Visual Studio, oder deaktivieren Sie die option, um immer wieder brechen in die code auf eine Ausnahme. Es kann konfiguriert werden, in der Debug => die Ausnahmen.
die Sie gerade brauchen, um das socket exception und gibt false zurück.
Wird sich der code so etwas wie dieses
Ändern Sie die Ausnahmebehandlung Einstellung in Visual Studio für Sockel Ausnahme. Gehen Sie zu DEBUG -> Ausnahme..., find-System.Net.Sockets.SocketException aus und deaktivieren Sie Geworfen.
Mehr Informationen können hier gefunden werden https://msdn.microsoft.com/en-us/library/d14azbfh%28v=vs.120%29.aspx
Natürlich, werden Sie nicht haben, dieses Problem beim ausführen einer Anwendung außerhalb von Visual Studio.
Versuchen, diese
oder