Ich arbeite mit einer kommerziellen Anwendung, die eine SocketException mit der Nachricht auslöst.
Eine bestehende Verbindung wurde vom Remote-Host zwangsweise geschlossen
Dies geschieht bei einer Socket-Verbindung zwischen Client und Server. Die Verbindung ist lebendig und gut, und es werden Datenmengen übertragen, die dann jedoch aus dem Nichts getrennt werden.
Hat das schon mal jemand gesehen? Was könnten die Ursachen sein? Ich kann ein paar Ursachen erraten, aber gibt es auch eine Möglichkeit, mehr in diesen Code einzufügen, um herauszufinden, was die Ursache sein könnte?
Kommentare / Ideen sind willkommen.
... Das Neueste ...
Ich habe einige Protokolle von einer .NET-Ablaufverfolgung,
System.Net.Sockets Verbose: 0 : [8188] Socket#30180123::Send() DateTime=2010-04-07T20:49:48.6317500Z
System.Net.Sockets Error: 0 : [8188] Exception in the Socket#30180123::Send - An existing connection was forcibly closed by the remote host DateTime=2010-04-07T20:49:48.6317500Z
System.Net.Sockets Verbose: 0 : [8188] Exiting Socket#30180123::Send() -> 0#0
Basierend auf anderen Teilen der Protokollierung habe ich die Tatsache gesehen, dass "0 # 0" bedeutet, dass ein Paket mit einer Länge von 0 Bytes gesendet wird. Aber was bedeutet das wirklich?
Eine von zwei Möglichkeiten tritt auf, und ich bin nicht sicher, welche,
1) Die Verbindung wird geschlossen, aber dann werden Daten in den Socket geschrieben, wodurch die obige Ausnahme entsteht. Die 0 # 0 bedeutet einfach, dass nichts gesendet wurde, weil der Socket bereits geschlossen war.
2) Die Verbindung ist noch offen und es wird ein Paket mit null Bytes gesendet (dh der Code hat einen Fehler). Die 0 # 0 bedeutet, dass ein Paket mit null Bytes versucht wird, gesendet zu werden.
Was glaubst du? Es mag nicht schlüssig sein, denke ich, aber vielleicht hat jemand anderes so etwas gesehen?