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