【问题标题】:C++ socket designC++ 套接字设计
【发布时间】:2012-03-25 23:04:12
【问题描述】:

我正在设计一个使用 TCP/IP 的客户端服务器套接字程序。

服务器监听某个端口,客户端程序与服务器建立 2 个连接。一种用于命令和响应,另一种用于数据流。

对于命令和响应,我可以使用普通的阻塞套接字模式来接收客户端命令并发送服务器响应。

对于流数据,服务器将等待客户端发送启动流命令并开始向该客户端连续发送数据。现在的问题是我需要处理程序也监听此连接以获取停止流命令。因此,我正在考虑使这个连接成为非阻塞的,这样接收就不会阻塞,然后是非阻塞的发送。

这种实现服务器和客户端处理程序的方法是否有效?

【问题讨论】:

    标签: c++ sockets tcp client


    【解决方案1】:

    看看 Boost::asio 套接字管理层。写的很好。

    http://www.boost.org/doc/libs/1_49_0/doc/html/boost_asio/tutorial/tutdaytime1.html

    【讨论】:

      【解决方案2】:

      是的,它非常有效。

      您可以使用 libevent 之类的库。

      【讨论】:

        【解决方案3】:

        从效率的角度来看,服务器应该始终设计为使用非阻塞套接字,并使用事件驱动的异步 I/O 架构。应避免在服务器端阻塞套接字。

        幸运的是,您可以使用一些成熟的开源框架。其中,libev 是最轻量级的。

        【讨论】:

          猜你喜欢
          • 2014-09-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-02-14
          • 2013-02-12
          • 2020-07-16
          • 1970-01-01
          相关资源
          最近更新 更多