В прошлом у меня было несколько проблем, связанных с SO_TIMEOUT в Windows. Я полагаю, что установка этого параметра «предполагается» для установки базовой реализации сокета, которая может зависеть от ОС и конфликтовать с настройками реестра и т. Д.
Мой совет: не использовать SO_TIMEOUT, чтобы вызвать выброшенное исключение по таймауту. Используйте неблокирующий ввод-вывод или убедитесь, что у вас есть доступные байты (), прежде чем читать ().