在C/C++中,我如何将WinSocks和*nix的阻塞套接字转换为非阻塞套接字,以便select()函数能够正确工作。您可以使用预处理器来进行平台特定的代码编写。
On linux:
fcntl(fd, F_SETFL, O_NONBLOCK);
Windows:
u_long on = 1; ioctlsocket(fd, FIONBIO, &on);
select() 应该用于 阻塞 套接字。当一个 read() 立即返回时,它也会返回,而非阻塞套接字始终如此。