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

Место общения программистов C#
Anonymous
Существующее соединение было принудительно закрыто удаленным хостом

Сообщение Anonymous »

Я работаю с коммерческим приложением, которое выдает исключение 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 байт. Но что это на самом деле означает?
Реализуется одна из двух возможностей, и я не уверен, какая именно:
  • Соединение закрывается, но затем данные записываются в сокет, создавая таким образом описанное выше исключение. 0#0 просто означает, что ничего не было отправлено, потому что сокет уже закрыт.
  • Соединение все еще открыто, и отправляется пакет с нулевыми байтами (т. е. в коде есть ошибка), а 0#0 означает, что пытается отправить пакет с нулевыми байтами.
Как вы думаете? Я думаю, это может быть неубедительно, но, возможно, кто-то еще видел подобные вещи?

Вернуться в «C#»