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

有帮助吗?

解决方案

在linux上:

fcntl(fd, F_SETFL, O_NONBLOCK);

Windows

u_long on = 1;
ioctlsocket(fd, FIONBIO, &on);

其他提示

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top