为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()立即返回时返回,非阻塞套接字总是如此。