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