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