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

Chr*_*lan 6 c c++ sockets asynchronous nonblocking

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

haz*_*zen 7

在linux上:

fcntl(fd, F_SETFL, O_NONBLOCK);
Run Code Online (Sandbox Code Playgroud)

Windows:

u_long on = 1;
ioctlsocket(fd, FIONBIO, &on);
Run Code Online (Sandbox Code Playgroud)


wno*_*ise 5

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