c++ - 如何在 C 套接字上将超时设置为 "connect()"函数?

标签 c++ sockets

我必须同时连接同一子网上的多个 ip。 买它花了我太长时间了! (将近 25 秒)等待所有“connect()”函数完成!

如何在 winsock、CPP 中优化此行为? 我发现了一些叫做“select”的东西,但实际上它只适用于 linux 所以..

最佳答案

select() 适用于 Unix、Linux、Windows、Netware 以及我测试过的所有其他平台。

  1. 将套接字置于非阻塞模式。
  2. 调用connect()。它将因 EAGAIN/EWOULDBLOCK 或 EINPROGRESS 而失败。
  3. 使用您想要的超时调用 select(),并将套接字设置到 writefds 中,即选择可写性。
  4. 当套接字变为可写时,它就连接上了。如果在您的超时期限内没有发生这种情况,请将其关闭,否则,如果您愿意,请将其重置为阻止模式并继续。

关于c++ - 如何在 C 套接字上将超时设置为 "connect()"函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42462932/

相关文章:

java - 在 Java 中转发 HTTP 请求

c++ - 为什么 C++ 中的 new 在失败时不返回 NULL

c++ - Makefile 改头换面——几乎完成,希望得到反馈

c++ - 使用模板在 C++ 中进行转换

c++ - 与非指针相比,char 指针初始化?会发生什么

c# - 断开连接后,C#客户端/服务器套接字将无法再次连接

c++ - "#if Foo - 0 == 0"和 "#if defined(Foo) && Foo == 0"有什么区别?

python - 如何将基于L2CAP的蓝牙相机快门(AB Shutter 3)连接到Linux并在Python中获取关键事件?

java - 在 Netty 中关闭客户端连接

通过家庭网络上两台机器之间的套接字连接?