[发明专利]一种基于AIO的socket传输系统有效
申请号: | 201510527120.1 | 申请日: | 2015-08-26 |
公开(公告)号: | CN105187519B | 公开(公告)日: | 2019-01-08 |
发明(设计)人: | 林斌 | 申请(专利权)人: | 福建星网锐捷通讯股份有限公司 |
主分类号: | H04L29/08 | 分类号: | H04L29/08;H04L29/06 |
代理公司: | 福州市鼓楼区京华专利事务所(普通合伙) 35212 | 代理人: | 王美花 |
地址: | 350000 福建省福州市仓山区金*** | 国省代码: | 福建;35 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 aio socket 传输 系统 | ||
1.一种基于AIO的socket传输系统,其特征在于:所述系统包括数据传输模块、数据拦截器模块以及消息处理模块,所述数据传输模块接收客户端连接请求,在收到连接请求后,系统新建一个Server ChannelInfo通道,该通道对象持有了当前连接过来的socket通道,并且会获取在服务器启动的时候设置的参数,将参数设置到Server ChannelInfo通道之中,将Server ChannelInfo通道中消息数据发送给数据拦截器模块;所述数据拦截器模块在消息数据到达消息处理模块中的消息处理器和离开消息处理器时进行消息的拦截和过滤;所述消息处理模块通过消息处理器处理消息,负责消息数据的分发,系统中线程池资源的准备;所述数据传输模块包括socket连接响应器、通道读取响应器以及消息写出响应器;所述socket连接响应器负责接收客户端的socket连接请求,所述通道读取响应器负责从Server ChannelInfo通道中读取消息数据,所述消息写出响应器,负责将消息数据从通道发送。
2.根据权利要求1所述的一种基于AIO的socket传输系统,其特征在于:所述消息处理模块包括消息动作类单元、消息请求处理接口单元以及消息处理器;所述消息动作类单元用于给线程池提供消息动作类,并提供调用,负责消息的入口拦截、请求处理、出口拦截以及通道写出操作;所述消息请求处理接口单元,为用户提供消息请求处理接口,使得用户能完成感兴趣的消息的处理,所述消息处理器,负责消息的分发,线程池资源的准备以及消息的处理。
3.根据权利要求1所述的一种基于AIO的socket传输系统,其特征在于:所述ServerChannelInfo通道读取使用的是AIO中的异步读取方式,由实现ComplteHandler接口的通道读取响应类ChannelReadHandler来负责;该接口能对消息数据进行分析,以确定是否符合格式的报文文本;并且确定需要读取的大小,将需要读取的数据进行读取;在读取的过程中发生读取缓存大小不足时,此时会自动扩容;以及发生粘包,此时通道读取响应类会将粘包中的数据,读取完整的业务数据的部分,并且将这部分数据组装成抽象消息Message投递到消息处理器,剩余的数据则继续读取直到完整后重复读取流程;在数据读取完毕并且也投递完毕后,通道读取响应器会继续在Server ChannelInfo通道上监听直到通道关闭或者发生异常为止。
4.根据权利要求3所述的一种基于AIO的socket传输系统,其特征在于:消息写出采用的是AIO中的异步写出,由实现了ComplteHandler接口的消息写出响应类MessageWriteHandler来负责;通过将抽象消息Message中组装好的WriteBuffer写出到通道中;一旦所有的数据都写出完成,则会将当前的抽象消息Message内的资源进行释放,并且尝试获取下一个待写的消息,继续进行写出。
5.根据权利要求1所述的一种基于AIO的socket传输系统,其特征在于:所述数据拦截器模块的信息注册是在服务器一开始启动的时候,通过扫描,发现实现了数据拦截器模块接口的类,将所有这样的类集合在一起,并且进行排序;收到消息时进行入口拦截,而消息发出时在对应的位置进行出口拦截;当消息从通道读取监听器获取并组装完毕后就进入消息处理器中等待分配线程资源进行处理,一旦获取到资源就开始执行。
6.根据权利要求5所述的一种基于AIO的socket传输系统,其特征在于:数据拦截器模块处理的规则是一层处理完了交给下一层,入口和出口的位置是相反的;即如果入口的时候是第一个处理,则出口的时候是最后一个处理;数据拦截器模块能返回信息停止后续的拦截处理,直接进入消息处理器,或者能直接中断整个流程,将消息放弃并且关闭通道。
7.根据权利要求3所述的一种基于AIO的socket传输系统,其特征在于:消息处理模块主要由用户实现接口MessageHandler来注册对某一类型感兴趣的消息;其中消息动作类单元作为线程资源执行的载体,执行消息上的入口拦截,消息处理,出口拦截,以及消息的尝试写出;
而抽象消息Message作为消息的载体,承载了消息当前所在的通道,消息中的业务数据,以及写出所需的缓存buffer。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于福建星网锐捷通讯股份有限公司,未经福建星网锐捷通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510527120.1/1.html,转载请声明来源钻瓜专利网。
- 上一篇:用于提供存在信息的方法及实体
- 下一篇:一种实现元数据集群的方法及元数据集群