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