在客户端使用boost管理1000 +连接

时间:2011-03-25 10:20:10

标签: c++ boost boost-asio tcpclient tcplistener

我正在工作网关模拟器网关的目的是连接数据中心,并在数据中心请求时将视频流传输到数据中心。

这里的网关模拟器可以模拟1000个网关。这意味着每个网关都将与数据中心连接。我很困惑如何在网关中管理这么多的套接字。

在c ++中可以选择用于此目的的多路分解与数据中心的连接。在这里我可能要创建1000连接选择是不合适的。

我想通过采用acceptor.async方法管理服务器中的多个客户端,处理程序将采取这种方式。

但由于网关是客户端应用程序

如何管理多个连接,以便我可以从数据中心获取每个连接的请求。

Gateway将在两个Windows和Linux上运行。

3 个答案:

答案 0 :(得分:3)

  • Windows:WSAEventSelect
  • Linux:epoll
  • FreeBSD:kqueue

答案 1 :(得分:1)

如果要解决这个问题,我首先尝试使用libevent。 Libevent会自动为每个平台选择“最佳可用”机制,无论是epollkqueue还是select,并且您可以专注于您的计划所特有的内容。< / p>

答案 2 :(得分:1)

我不确定Boost.Asio - 这可能是可能的,但我必须对它进行研究。 Boost.Asio似乎没有任何调用WSAWaitForMultipleEvents的实现,所以我不知道现有支持你需要的东西。

在Windows中,至少WSAWaitForMultipleEvents是你的答案。 http://msdn.microsoft.com/en-us/library/ms742219(v=vs.85).aspx