【问题标题】:non-blocking socket client connection非阻塞套接字客户端连接
【发布时间】:2012-10-26 22:58:19
【问题描述】:

所有, 我正在寻找一个将在 Windows 上运行的非阻塞套接字连接的简单示例。 我尝试使用 Google,但所有示例都是针对 *nix (POSIX) 或 Windows 上的阻塞套接字。

查看 msdn,我发现很容易使套接字变为非阻塞并发出 connect(),但是您需要一些准备才能将套接字放回原处。

所以,总而言之,我需要一个非阻塞套接字上的东西,该套接字将连接然后将其放回阻塞状态。 读写操作应在阻塞套接字上进行。

非阻塞套接字的原因是我需要一个连接超时,除了非阻塞套接字别无他法。或者有吗?

谢谢。

【问题讨论】:

  • 这不是唯一的方法。您还可以在另一个线程中运行connect 操作。然后,您可以等待或不等待,只要您愿意。
  • @DavidSchwartz,很好的解决方案,但不适合我。 ;-) 我正在尝试同时连接不同的设备,每个设备都将在自己的线程上。如果我只是为了连接而产生一个线程,那么任何在我之后查看代码的人都会迷失方向。我可能会迷失自己。除了项目目标操作系统是 Linux(甚至可能是 QNX - 实时)。 Windows 将仅用于演示。谢谢。
  • 如果连接无论如何都要在它们自己的线程上,为什么不让那个线程也做连接操作呢?
  • @DavidSchwartz,你是什么意思?你能放一些代码吗?谢谢。

标签: linux timeout nonblocking winsock2 qnx


【解决方案1】:

使用 ACE socket wrapper facade 并充分运用您的 Linux 知识。

【讨论】:

  • 感谢您的回答。不幸的是,我更喜欢使用没有任何额外库的原生解决方案。此外,它可能没有兼容的许可证。
  • @Igor - 只需下载它,看看它如何在 Windows 上包装套接字 IO,不一定要使用它
猜你喜欢
  • 2017-04-18
  • 2017-01-29
  • 2020-10-30
  • 2013-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-13
  • 1970-01-01
相关资源
最近更新 更多