[英]C++ TCP server Class Design
我正在使用C ++(win32 / linux)开发TCP服务器,该服务器可以满足多个客户端的需求。该服务器用于视频流传输。客户端向服务器请求视频,服务器从与摄像机连接的网关获取视频。 我被设计班困住了,我发现三个班
因此,这里ConnectionMgr负责管理其他类。
我希望您对此有意见。
请提供您的反馈,以便我可以升级我的设计。
从头开始看问题空间:
为了体会这个问题的空间,我建议您创建一个非常简单的客户端/服务器程序-如果您熟悉并熟悉多线程,则可以使用线程,否则可以通过GCC libc TCP客户端/服务器示例进行选择()的解决方案(http://www.gnu.org/s/libc/manual/html_node/Server-Example.html#Server-Example)或尝试使用boost :: asio或ACE或其他方法。 首先,只要使其工作即可,您就可以远程登录到服务器,并且在任何连接中键入的内容都会在所有连接上回显。 那应该给您足够的洞察力,以便开始提出更具体的问题。
就像@nabulke和@Jan Hudec在评论中指出的那样, Boost.Asio是解决您的问题的很好的解决方案。 看一看非常简单的示例“异步TCP Echo服务器” 。 它仅使用2个类: server
和session
。 没有session_manager
。 通过智能指针自动管理会话,这是非常方便和简单的方法。
使用Boost.Asio,您可以使网络部分保持简单(并通过使用异步处理提高效率,几乎达到最佳状态)。 另外,添加几行代码后,您会收到多线程服务器,而没有头疼(我建议使用以下示例: “使用单个io_service和调用io_service :: run()的线程池的HTTP服务器。” ,只需忽略HTTP。东西。注意在connection
类中使用boost::asio::io_service::strand
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.