file-type

st_asio_wrapper 2.2版发布:高效的C/S框架,支持跨平台与定时器

5星 · 超过95%的资源 | 下载需积分: 10 | 28KB | 更新于2025-03-03 | 127 浏览量 | 174 下载量 举报 4 收藏
download 立即下载
st_asio_wrapper是一套基于Boost.Asio库的C/S框架,它的目的是简化Boost.Asio的网络编程工作。在深入分析st_asio_wrapper之前,首先需要了解Boost.Asio。Boost.Asio是一个跨平台的C++库,提供对底层网络编程的封装,支持TCP和UDP协议,并允许开发者编写高效的异步网络应用。 st_asio_wrapper的设计特点包括: 1. **高效和跨平台:** 继承了Boost.Asio的所有优点,比如高效的数据处理能力,并且能够跨不同的操作系统平台工作。 2. **完全异步:** st_asio_wrapper封装了Boost.Asio的异步操作,使得开发者可以编写非阻塞的网络应用,提高网络通信的性能。 3. **自动重连机制:** 当网络连接意外中断时,st_asio_wrapper能够自动尝试重新连接,减少因连接丢失导致的服务中断。 4. **数据透明传输:** st_asio_wrapper处理了分包和粘包问题,开发者可以像操作UDP一样方便地处理TCP协议的数据包。 5. **自定义数据模式支持:** 在1.1版本中引入了自定义数据模式的支持,让st_asio_wrapper更灵活地与其他客户端或服务端进行通信。 6. **消息格式自定义:** 1.3版本加入了自定义消息格式发送的支持,开发者可以自定义消息的封装和解析规则。 7. **打包与解包器的分离:** 1.4版本将打包与解包器从client_base类中分离出来,简化了基类的复杂度,并允许运行时修改。 8. **IPv6支持:** 1.5版本增加了对IPv6的支持,并调整了服务端和客户端的API接口。 9. **接收消息缓存:** 在1.6版本中,增加了接收消息的缓存功能,并改变了on_msg的语义。 1.7版本修复了编译错误和一些BUG,改进了服务端类库的封装,使其使用更加简单。 1.8版本提高了框架的健壮性和稳定性,并改进了服务端退出时的行为。 1.9版本进一步提高了代码的通用性,并允许指定服务端同时接受的async_accept数量。 2.0版本增加了对象池功能,并优化了接口签名。 2.1版本修复了st_client可能错误重连的问题,并增加了消息发送时的溢出处理参数。 2.2版本新增了文件传输服务端和客户端的demo,并抽象出了timer功能,优化了消息接收缓存,并允许外部定义宏以适应不同的需求。 总结来说,st_asio_wrapper通过封装Boost.Asio库,提供了一个高效率、易用、跨平台的网络编程框架。它具备自动重连、数据透明传输和分包粘包处理等特性,并且持续在更新中引入新的特性以提高其适用性和性能。开发者可以根据自己的需要选择合适的版本和特性来构建网络应用。

相关推荐

filetype
st_asio_wrapper是一组类库,功能是对boost.asio的包装(调试环境:boost-1.51.0),目的是简化boost.asio开发; 其特点是效率高、跨平台、完全异步(当然这是从boost.asio继承而来)、自动重连,数据透明传输,自动解决分包粘包问题(你可以像udp一样使用它); 注:只支持tcp协议; 教程:http://blog.csdn.net/yang79tao/article/details/7724514 2.3版更新内容: 消息(std::string包装)不再用boost::shared_ptr包装,之前有过度使用智能指针之嫌。效率上,std::string如果支持引用记数,或者编译器支持std::move语义,是没有损失的(因为也不存在内存的拷贝,反而省了智能指针使用上的开销),幸好vc支持std::move语义(虽然它不支持引用记数,linux则都支持)。这样带来一个问题,原来所有的接口中的boost::shared_ptr<std::string>数据类型,全部换成了std::string引用,升级到2.3的朋友要注意修改之前重写虚函数的签名,如果不改,则重写肯定不生效,变成了新增加虚函数了(因为签名不一样)。这样向大家道歉,接口签名以后应该不会变化了,但可能增加接口; 修复使用std::advance的一个BUG,此BUG在linux下不存在,这里顺便向大家说一下,std::advance在vc和gcc下面,语义一样,但处理方式有些不同,一定要注意; 增加了个专门用于服务端压力测试的客户端框架st_test_client,并写了一个demo test_client,可以在performance_test目录下面找到; 把连接服务端逻辑从st_client剥离出来,定义了一个新的类st_connector,st_client和st_test_client将从它继承; 增加对vc2010的支持,和编译时对编译器版本的检测,如果达不到vc2010及其以上的版本,st_asio_wrapper将直接报错。
youngwolf
  • 粉丝: 347
上传资源 快速赚钱