Вопрос

Как в C / C ++ превратить блокирующий сокет в неблокирующий сокет как в WinSocks, так и в * nix; так что select () будет работать правильно. Вы можете использовать препроцессор для кода конкретной платформы.

Это было полезно?

Решение

В Linux:

fcntl(fd, F_SETFL, O_NONBLOCK);

Windows :

u_long on = 1;
ioctlsocket(fd, FIONBIO, &on);

Другие советы

select () должен работать с блокирующими сокетами. Возвращается, когда read () немедленно возвращается, что всегда имеет место с неблокирующими сокетами.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top