标签: c++ c asynchronous sockets nonblocking
在C / C ++中,如何将阻塞套接字转换为WinSocks和* nix中的非阻塞套接字;这样select()才能正常工作。您可以将预处理器用于特定于平台的代码。
答案 0 :(得分:7)
在linux上:
fcntl(fd, F_SETFL, O_NONBLOCK);
Windows:
u_long on = 1; ioctlsocket(fd, FIONBIO, &on);
答案 1 :(得分:5)
select()应该用于阻止套接字。当read()立即返回时返回,非阻塞套接字总是如此。