发一个异步TCP开发库,求批评,求指正,求BUG

为简化socket编程,开发了一款TCP协议库,支持同步及异步监听,内置多种数据处理机制,如粘包、分包处理及协议解析等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

经常在在用socket开发程序的时候会遇到很麻烦的事情,要处理网络异常,要实现异步提高性能,要处理粘包,分包,要分析处理协议,如果能够有一个如同java下的mina一样的开发库会很方便,所以写了这个东西,先在只实现了TCP协议,还很简陋,先在发出来在还能改正的时候求批评,求指正,免得以后不好调头。项目的地址在http://edas.codeplex.com/

因为很简单,就几个类所以就不装样子发类图了。基本原理是这样子的:

一个Acceptor类用来封装Socket的监听操作,这里我提供了同步和异步两种监听方式,据网上的达人说同步监听的成功率高且效率不会比异步的差,经过测试发现效率上确实如此,于是加上了同步的监听方式。

一个AsyncSocket类封装了Socket的异步操作方法和事件,包括发送和接收以及连接,为了实现收发异步,发送的时候是先发到发送队列中,这样子收发的线程就独立开了,各自处于不同的IOCP完成事件的线程中。在AsyncSocket的实例中可以插入处理器,而处理器对象是自嵌套的,可以由多个处理器对象行成一个处理器链,一层一层的处理数据,在这个层次上来解决粘包,分包的问题。

我自己实现了3个最基础的处理器,一个是握手处理器,用来处理握手信息,一个是通过分隔符分割数据包方式的处理器,最后一个是通过定义数据包结构的方式分割数据包的处理器,如果需要处理自己的协议,比如需要处理HTML协议,只需要自己实现IProcessor接口,并把这个处理器插入到TokenProcessor的对象中就可以了。

我在源码里实现了一个字符串行的Echo Server,连接后对其发送 \n结尾的字符串,服务器会把源串原封不动的发送回来。

o_Snap1.jpg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值