Я працюю з комерційним додатком, який передає SocketException з повідомленням,
Існуюче з'єднання було насильно закрито віддаленим хостом
Це відбувається при з'єднанні сокета між клієнтом і сервером. Зв'язок є живим і здоровим, і купа даних передається, але потім він відключається з нізвідки.
Хтось бачив це раніше? Які можуть бути причини? Я можу напевно припустити декілька причин, але чи є якийсь спосіб додати більше в цей код, щоб розібратися, що може бути причиною?
Будь-які коментарі / ідеї вітаються.
... Останній ...
У мене є журнал із деякого трактування .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
На основі інших частин журналу я бачив той факт, що в ньому написано, що "0 # 0" означає, що відправляється пакет довжиною 0 байт. Але що це насправді означає?
Одна з двох можливостей є, і я не впевнений, який,
1) З'єднання закривається, але дані записуються в сокет, створюючи виняток вище. 0 # 0 просто означає, що нічого не було надіслано, оскільки сокет вже закритий.
2) З'єднання все ще відкрите, і пакет нульових байтів надсилається (тобто код має помилку), а 0 # 0 означає, що пакет нульових байтів намагається надіслати.
Що ти вважаєш? Можливо, це може бути непереконливим, але, можливо, хтось ще бачив подібне?