[发明专利]海量终端的异步通信方法、装置、计算机设备和存储介质在审
申请号: | 202011420526.7 | 申请日: | 2020-12-07 |
公开(公告)号: | CN112685148A | 公开(公告)日: | 2021-04-20 |
发明(设计)人: | 张文瀚;詹卫许;张育辉;王武;代庆;杨军 | 申请(专利权)人: | 南方电网数字电网研究院有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48;G06F9/54;G06F16/22;G06F16/2455;G06F16/25 |
代理公司: | 广州华进联合专利商标代理有限公司 44224 | 代理人: | 张亚菲 |
地址: | 510700 广东省广州市黄*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 海量 终端 异步 通信 方法 装置 计算机 设备 存储 介质 | ||
1.一种海量终端的异步通信方法,其特征在于,应用于计量自动化系统服务器,所述方法包括:
监听多个终端的连接请求,与至少一个终端建立通信连接,将至少一个终端的终端句柄添加到epoll队列中,以及将所述至少一个终端的终端句柄与各自对应的连接对象相关联;所述连接对象为根据终端建立的通信连接生成的虚拟对象;
监听所述epoll队列中的通信事件,获取到IO就绪事件以及所述IO就绪事件对应的终端句柄;
根据所述IO就绪事件对应的终端句柄,以及所述至少一个终端句柄和连接对象的关联关系,确定所述IO就绪事件对应的目标连接对象;
在所述目标连接对象中,处理所述IO就绪事件,若所述IO就绪事件为读/写事件,将得到的IO消息发送至IO异步数据内存池,所述IO异步数据内存池用于将所述IO消息以消息队列的形式存储,由计量自动化系统服务器的处理模块访问和处理。
2.根据权利要求1所述的方法,其特征在于,所述监听多个终端的连接请求,与至少一个终端建立通信连接,将至少一个终端的终端句柄添加到epoll队列中,包括:
根据所述至少一个终端对应的Socket,生成所述至少一个终端对应的终端句柄;
将所述至少一个终端对应的终端句柄加入到所述epoll队列的红黑树。
3.根据权利要求2所述的方法,其特征在于,所述监听所述epoll队列中的通信事件,获取到IO就绪事件以及所述IO就绪事件对应的终端句柄,包括:
监听所述epoll队列中的通信事件,从rdllist双向链表中获取到IO就绪事件,以及所述IO就绪事件对应的终端句柄。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
配置至少一个终端的终端标识对应的连接对象,得到连接对象池;所述终端标识用于标识不同的终端类型,不同的终端标识对应不同的连接对象;
所述将所述至少一个终端的终端句柄与各自的连接对象相关联,包括:
根据所述至少一个终端的终端标识,查询所述连接对象池,得到所述至少一个终端分别对应的连接对象;将所述至少一个终端的终端句柄和各自对应的连接对象相关联。
5.根据权利要求4所述的方法,其特征在于,所述根据所述至少一个终端的终端标识,查询所述连接对象池,得到所述至少一个终端分别对应的连接对象,包括:
若所述连接对象池中不包括与某个终端的终端标识对应的连接对象,生成所述终端的终端标识对应的新增连接对象;
将所述新增连接对象放入所述连接对象池,将所述新增连接对象作为所述终端对应的连接对象。
6.根据权利要求1所述的方法,其特征在于,所述根据所述IO就绪事件对应的终端句柄,以及所述至少一个终端句柄和连接对象的关联关系,确定所述IO就绪事件对应的目标连接对象之后,所述方法还包括:
根据所述目标连接对象的大小,从预先配置的IO事件模型确定目标IO事件模型,分配给所述IO就绪事件。
7.根据权利要求4所述的方法,其特征在于,所述监听所述epoll队列中的通信事件,获取到IO就绪事件以及所述IO就绪事件对应的终端句柄,还包括:
若所述IO就绪事件为断开连接事件,控制对应的终端与目标连接对象断开连接;
将所述目标连接对象放回所述连接对象池。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南方电网数字电网研究院有限公司,未经南方电网数字电网研究院有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011420526.7/1.html,转载请声明来源钻瓜专利网。