Ich erkenne diese Art von Frage hat eine lange Geschichte, aber die Art, wie ich dies verwende, muss die richtige '.net Weg' sein und doch scheint es nicht zu funktionieren.C# /. Net Socket.Shutdown
Ich habe einen trivialen synchronen IP-Server-Daemon, der eine einfache AcceptSocket, tun einige Sachen, socket.send, socket.shutdown, socket.close. Mein Client ist eine weitere triviale C# -App, die URLDownloadToFile ausführt.
Was passiert ist, dass ein Teil der Zeit URLDownloadToFilefails fehlschlägt mit (0x800C0008) .. denkt, dass seine Download-Ressource fehlgeschlagen ist.
Mein Server-Seite Endsequenz ist:
socket.Shutdown(Both);
socket.Close();
Wenn ich das
socket.Disconnect();
socket.Close();
(Ich öffne mit sockopt Linger wahr, Timeout 5 s die oben)
änderndiese Werke groß.
Ich vermisse etwas auf der Shutdown-Methode .. es klingt wie die "magische Kugel" MS möchte Sie für anmutig einen Ausgang verwenden, die letztlich alle verbleibenden senden Daten senden wird.
Grob, (und das kann nicht richtig sein) es scheint wie der Abschluss .. tötet alle Async-Verarbeitung, die von shutdown() ausgeführt werden kann.
Irgendwelche Ideen?
gar nicht unnötig vor dem Aufruf Trennen. Der zitierte Text besagt, dass Sie Einstellungen ändern müssen, bevor Sie auf Trennen klicken. Wenn nicht, werden Daten gelöscht. – usr
Ist das nicht meine Antwort? Wenn Sie die Einstellungen ändern (die die OP zeigt sie taten) du nicht das Herunterfahren benötigen, wenn Sie mit dem Timeout Verhalten zufrieden sind ... – ShuggyCoUk