Можно ли закрыть сокет на локальном конце без вызова Close? - PullRequest
1 голос
/ 30 августа 2010

У меня проблема с тем, что сокет закрывается сам по себе.

Вот (отредактированная) диагностическая трассировка сети:

Exiting Socket#62696216::BeginSend()
Exiting Socket#62696216::EndSend()
Socket#62696216::BeginSend()
Exception in the Socket#62696216::BeginSend - An established connection was aborted by the    software in your host machine

Обратите внимание, что отправка прошла успешно, а затем произошла ошибка. Ошибка говорит о том, что сокет был закрыт локально (то есть на хост-машине), и все же Close не был вызван. Это периодическая ошибка, которая случается, возможно, один раз в тысячу раз.

Как сокет оказался закрытым?

Я чувствую, что должен быть действительно простой ответ, но он ускользал от меня на несколько часов. Любая помощь будет высоко ценится.

Спасибо

Ответы [ 3 ]

0 голосов
/ 30 августа 2010

Вот так это выглядело бы, если бы антивирус в режиме ядра решил заблокировать передачу.

0 голосов
/ 30 августа 2010

Это обычно означает одну из двух вещей.Либо у вас есть брандмауэр или антивирус, который считает вашу программу вредоносной, либо (что более вероятно, если это случается время от времени) одна из предыдущих отправляет тайм-аут, и это заставляет систему закрывать сокет.Насколько я знаю, тот факт, что EndSend возвращается без сообщения об ошибке, на самом деле не означает, что данные были физически доставлены на целевой сервер.

0 голосов
/ 30 августа 2010

Может быть несколько вещей .. -timeout -number сокетов, открытых на вашем хост-компьютере, превысил предел -bug в вашем коде

Не видя код или не зная окружения, было бы трудно определить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...