为 WinSocks 和 *nix 制作非阻塞套接字

Making a Nonblocking socket for WinSocks and *nix

提问人:Christopher Dolan 提问时间:10/5/2008 更新时间:10/5/2008 访问量:3423

问:

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

C++ C 异步 套接字 非阻塞

评论


答:

7赞 hazzen 10/5/2008 #1

在 linux 上:

fcntl(fd, F_SETFL, O_NONBLOCK);

视窗

u_long on = 1;
ioctlsocket(fd, FIONBIO, &on);
5赞 wnoise 10/5/2008 #2

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