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

Jay*_*Jay 5 c sockets windows

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

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

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

Ste*_*end 4

检查这一点的唯一方法是在非阻塞套接字上执行非法操作并检查它是否以预期方式失败。这并不是最坚固的设计。

除非您使用WSAIoctlioctlsocket显式将其设置为非阻塞,否则套接字将处于阻塞状态FIONBIO。我想,检查你的代码不会太难。如果您必须在运行时跟踪这一点,则可以采用 @jweyrich 建议的每个套接字的标志。

  • 如果在 WinSock2 套接字上调用其中一个 WSAAsync...() 函数,该套接字也会进入非阻塞模式。 (4认同)