10035 ошибка на сокете блокировки - PullRequest
2 голосов
/ 18 июня 2009

Кто-нибудь знает, что может вызвать ошибку 10035 (EWOULDBLOCK) при чтении на блокирующем сокете с тайм-аутом? Это под Windows XP с использованием библиотеки сокетов .NET Framework версии 3.5. Мне никогда не удавалось получить это самому, но один из моих коллег получает это все время. Он отправляет достаточно большие объемы данных на гораздо более медленное устройство, а затем ждет ответа, который часто выдает ошибку 10035. Мне интересно, могут ли быть проблемы с заполнением буферов TCP, но в этом случае я ожидаю, что чтение будет ждать или время. Сокет определенно блокирующий, а не неблокирующий.

Ответы [ 3 ]

1 голос
/ 24 июня 2009

Кажется, что происходит, что ошибка возникает при повторной попытке после таймаута чтения. По истечении времени ожидания (10060) я пересылаю данные и жду ответа. Тайм-аут, по-видимому, устанавливает сокет в неблокирующий режим, хотя отладчик показывает значение Blocking, установленное на true, на объекте сокета .Net, и я сразу получаю ошибку 10035. Если я явно установил для Blocking значение true в сокете до повторной попытки, ошибка 10035 исчезнет. Это похоже на ошибку или, возможно, функцию в Winsock или .Net.

1 голос
/ 25 апреля 2010

вероятно, это ошибка Mono. Я только что выстрелил.

https://bugzilla.novell.com/show_bug.cgi?id=599488

0 голосов
/ 18 июня 2009

http://www.lancerobinson.net/archive/2005/07/20/WinsockError10035.aspx

Эта ошибка возникает, когда winsock буфер клиента или сервера сторона становится полной.

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