Существующее соединение было принудительно закрыто удаленным хостом

Я работаю с коммерческим приложением, которое выдает 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 означает, что пакет с нулевыми байтами пытается быть отправлен.

Как вы думаете? Это может быть неубедительным, я думаю, но, возможно, кто-то еще видел такие вещи?

Ответы на вопрос(9)

Ваш ответ на вопрос