Создание неблокирующего сокета для WinSocks и * nix - PullRequest
6 голосов
/ 04 октября 2008

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

Ответы [ 2 ]

7 голосов
/ 05 октября 2008

В Linux:

fcntl(fd, F_SETFL, O_NONBLOCK);

Windows

u_long on = 1;
ioctlsocket(fd, FIONBIO, &on);
5 голосов
/ 05 октября 2008

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

...