相关疑难解决方法(0)

如何确定套接字在Windows中是否已经处于非阻止模式?

有没有一种方法可以找出Windows中的套接字是否已经处于非阻止模式?

我知道这可以在Linux的情况下完成,但是,我找不到用于此Windows的任何方法。

我所有的编码都是用“ C”语言编写的。有办法吗?

c sockets windows

5
推荐指数
1
解决办法
2591
查看次数

检查是套接字阻塞(特定于Winsock)

可能重复:
在Win32中,有没有办法测试套接字是否是非阻塞的?

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

谢谢

sockets winsock

4
推荐指数
1
解决办法
2447
查看次数

标签 统计

sockets ×2

c ×1

windows ×1

winsock ×1