Je travaille avec une application commerciale qui lance une SocketException avec le message,
Une connexion existante a été fermée de force par l'hôte distant
Cela se produit avec une connexion socket entre le client et le serveur. La connexion est bien vivante et des tas de données sont transférées, mais elles se déconnectent alors de nulle part.
Est-ce que quelqu'un a déjà vu ça? Quelles pourraient être les causes? Je peux en quelque sorte deviner quelques causes, mais y a-t-il également un moyen d'en ajouter plus dans ce code pour déterminer quelle pourrait être la cause?
Tous les commentaires / idées sont les bienvenus.
... Le dernier ...
J'ai une journalisation à partir d'un traçage .NET,
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
Sur la base d'autres parties de la journalisation, j'ai vu le fait qu'il dit «0 # 0» signifie qu'un paquet de 0 octets de longueur est envoyé. Mais qu'est-ce que cela signifie réellement?
L'une des deux possibilités se présente, et je ne sais pas laquelle,
1) La connexion est en cours de fermeture, mais les données sont ensuite écrites sur le socket, créant ainsi l'exception ci-dessus. Le 0 # 0 signifie simplement que rien n'a été envoyé car le socket était déjà fermé.
2) La connexion est toujours ouverte et un paquet de zéro octet est envoyé (c'est-à-dire que le code a un bogue) et le 0 # 0 signifie qu'un paquet de zéro octet tente d'être envoyé.
Qu'est-ce que tu en penses? Ce n'est peut-être pas concluant, je suppose, mais peut-être que quelqu'un d'autre a vu ce genre de chose?