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