【发布时间】:2012-10-26 22:58:19
【问题描述】:
所有, 我正在寻找一个将在 Windows 上运行的非阻塞套接字连接的简单示例。 我尝试使用 Google,但所有示例都是针对 *nix (POSIX) 或 Windows 上的阻塞套接字。
查看 msdn,我发现很容易使套接字变为非阻塞并发出 connect(),但是您需要一些准备才能将套接字放回原处。
所以,总而言之,我需要一个非阻塞套接字上的东西,该套接字将连接然后将其放回阻塞状态。 读写操作应在阻塞套接字上进行。
非阻塞套接字的原因是我需要一个连接超时,除了非阻塞套接字别无他法。或者有吗?
谢谢。
【问题讨论】:
-
这不是唯一的方法。您还可以在另一个线程中运行
connect操作。然后,您可以等待或不等待,只要您愿意。 -
@DavidSchwartz,很好的解决方案,但不适合我。 ;-) 我正在尝试同时连接不同的设备,每个设备都将在自己的线程上。如果我只是为了连接而产生一个线程,那么任何在我之后查看代码的人都会迷失方向。我可能会迷失自己。除了项目目标操作系统是 Linux(甚至可能是 QNX - 实时)。 Windows 将仅用于演示。谢谢。
-
如果连接无论如何都要在它们自己的线程上,为什么不让那个线程也做连接操作呢?
-
@DavidSchwartz,你是什么意思?你能放一些代码吗?谢谢。
标签: linux timeout nonblocking winsock2 qnx