为WinSocks和* nix创建一个非阻塞套接字

时间:2008-10-04 19:45:30

标签: c++ c asynchronous sockets nonblocking

在C / C ++中,如何将阻塞套接字转换为WinSocks和* nix中的非阻塞套接字;这样select()才能正常工作。您可以将预处理器用于特定于平台的代码。

2 个答案:

答案 0 :(得分:7)

在linux上:

fcntl(fd, F_SETFL, O_NONBLOCK);

Windows

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

答案 1 :(得分:5)

select()应该用于阻止套接字。当read()立即返回时返回,非阻塞套接字总是如此。