可能重复:
In Win32, is there a way to test if a socket is non-blocking?
这就是我在windows中将套接字设置为非阻塞模式的方法。
unsigned long mode = is_blocking ? 0 : 1; int ret = ::ioctlsocket(m_Socket, FIONBIO, &mode);
在我的复杂库中,我偶尔会遇到锁,因为传递给它的一些套接字没有设置为非阻塞模式。所以,我想添加并断言能够看到从哪里传递非阻塞套接字。问题是我不知道如何测试套接字是否阻塞。
在unix上,很简单:
long arg = 0; if((arg = fcntl(m_Socket, F_GETFL, NULL)) < 0) { return ERROR; } bool was_blocking = (arg & O_NONBLOCK) != 0;
那么,如何测试socket是否在Windows上阻塞。
感谢
答案 0 :(得分:5)
Windows不提供任何方法来查询套接字当前是设置为阻止还是非阻塞。