完整的使用线程池的多线程C/S Socket类
翻译水平有限,不明之处请阅读原文。
原文:
使用线程池实现的完整的 Client/Server Socket通讯类,很容易使用,也很容易被集成到C++应用程序中。也适用于Linux/Unix。
在“Best C++/MFC article of February 2009”赛中获奖。
代码下载请到原文地址。
当做客户端运行时,在命令行中输入:SocketServer.exe /client
简介
最近我在Code Project中更新了一篇文章:ServerSocket。虽然其基类(CSocketHandle)非常稳定、易用,但必须承认,一些最初的用以保持通讯接口完整性的设计对新的开发来说开始成了一个问题。
本文将解决这个问题,我提出了一个新的、改进版本的通讯类,并向你展示如何使用线程池提高你的网络应用的性能。
描述
首先,香港服务器,我假设你已经熟悉了socket编程,并在你的工作领域有了几年的经验。如果不是这样,服务器空间,我强烈向你推荐几个链接,它们可能会对你有帮助。它们是“all fired up and ready to go”,请阅读。我将尽力说明如何使用这个新类,以增强你的系统性能。
同步Socket
默认地,socket工作在阻塞模式,这就意味着你需要一个专门的线程来read/wait数据,同时需要另一个线程来write/send数据。现在使用新的模板类就变得容易多了。
典型地,香港服务器,一个客户端只需要一个线程,所以不会有什么问题,但如果你在开发服务器组件,并需要可靠的通讯或者是连接客户端的P2P,你迟早会发现自己需要多线程来处理请求。
SocketClientImpl
第一个模板SocketClientImpl封装了客户端的socket通讯,它可以使用TCP(SOCK_STREAM)或UDP(SOCK_DGRAM)通讯。这里的好消息是,它操控一个通讯循环,并用一种高效的方式来报告数据和几个重要的事件。这些对你来说,任务就真正变得直截了当。
[cpp]view plaincopy
黑夜下,撕开那张面具尽是怠倦的容颜,