这就是我在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上阻塞.
谢谢