4
可能重复:
In Win32, is there a way to test if a socket is non-blocking?检查是插座阻止(Winsock的具体)
这是我如何设置套接字非阻塞模式的窗口。
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;
所以,我怎么能测试,如果插座阻塞窗口。
感谢
感谢您的回答,这正是我的结论,很难相信,在纯bsd套接字之上的WSAIoctl的所有额外功能都没有列出实际上可能有用的内容。 – Pavel 2010-11-29 18:55:16