2017-02-25 140 views
0

我必须同时在同一子网上连接几个ips。 买它需要我太久! (差不多25秒)等待直到完成所有“connect()”功能!如何在C套接字上设置“connect()”函数的超时时间?

如何在winsock,CPP中优化此行为? 我找到的财产​​以后被称为“select”但aperrently它仅适用于Linux的如此..

+0

根据https://msdn.microsoft.com/en-us/library/ms740141(VS.85).aspx MS-Windows有一些'select()'的变体。你需要RTFM。 –

+0

select在Windows上可用,但它在POSIX系统上的运行方式与此不同。你需要问一个更好的问题。 –

+0

libevent是一个很好的库,可以在Linux和windows中使用,异步操作非常好,干净。对于C++,你可以考虑增强asio – rajesh6115

回答

1

select()作品在UNIX,Linux,包含Windows,NetWare,和所有其他平台,我测试过它。

  1. 将套接字置于非阻塞模式。
  2. 致电connect()。它会通过EAGAIN/EWOULDBLOCK或EINPROGRESS失败。
  3. 请拨打select(),并将套接字设置为writefds,即选择可写性。
  4. 当套接字变为可写入时,它已连接。如果在超时期限内没有发生这种情况,请关闭它,否则将其重置为阻止模式,如果您愿意并继续操作。
相关问题