[发明专利]一种网络通信的方法和系统有效
申请号: | 201210061918.8 | 申请日: | 2012-03-09 |
公开(公告)号: | CN103312625A | 公开(公告)日: | 2013-09-18 |
发明(设计)人: | 李文征;钟超宇;陈健;吴悦;谢明 | 申请(专利权)人: | 深圳市腾讯计算机系统有限公司 |
主分类号: | H04L12/863 | 分类号: | H04L12/863 |
代理公司: | 深圳中一专利商标事务所 44237 | 代理人: | 张全文 |
地址: | 518000 广东省深圳市南*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 网络 通信 方法 系统 | ||
1.一种网络通信的方法,在系统内核中创建一个网络数据收发线程和一个侦听接口,其特征在于,所述方法包括以下步骤:
将所述网络数据收发线程与所述侦听接口进行关联,并将所述侦听接口加入epoll队列;
所述侦听接口对epoll队列中的事件进行侦听,当侦听到需要收发数据的事件时,对不同的事件进行处理并通知与其关联的网络数据收发线程收发数据;
所述网络数据收发线程根据所述侦听接口的通知收发网络数据。
2.如权利要求1所述的方法,其特征在于,所述对不同的事件进行处理并通知与其关联的网络数据收发线程收发数据包括:
对于新连接事件,接收新连接事件,并将新连接事件的句柄放入epoll队列中,并通知网络数据收发线程接收数据;
对于socket事件,如果该socket事件可读,则通知网络数据收发线程接收可读socket事件的数据,并将接收的数据放入KMQ;
对于KMQ事件,直接从KMQ中读取数据,并通知网络数据收发线程将读取的数据发送给客户端。
3.如权利要求2所述的方法,其特征在于,所述直接从KMQ中读取数据的步骤为:
数据读取线程通过mmap将KMQ事件的内存映射到所述数据读取线程的地址空间中;
当侦听接口侦听到KMQ事件时,所述数据读取线程通过所述地址空间访问KMQ事件的内存,并从所述内存中读取KMQ数据。
4.如权利要求1所述的方法,其特征在于,所述所述网络数据收发线程根据所述侦听接口的通知收发数据包括:
在系统内核中导出socket相关的函数符号表,并在内核中使用该函数符号表对应的标准系统调用来收发数据。
5.一种网络通信的系统,其特征在于,所述系统的内核模块中包括:
侦听接口模块,用于与网络数据收发线程模块进行关联并加入epoll队列,侦听系统epoll队列中的事件,对不同的需要收发数据的事件进行处理,并通知网络数据收发线程模块收发数据;
网络数据收发线程模块,用于与所述侦听接口模块进行关联,根据所述侦听接口模块的通知收发网络数据。
6.如权利要求5所述的系统,其特征在于,所述侦听接口模块包括:
关联模块,用于与所述网络数据收发线程模块进行关联;
epoll队列侦听模块,用于侦听系统epoll队列中的事件;
新连接事件处理模块,用于接收新连接事件,将新连接事件的句柄放入epoll队列中,并通知网络数据收发线程模块接收数据;
socket事件处理模块,用于通知网络数据收发线程模块接收可读socket事件的数据,并将接收的数据放入KMQ;
KMQ事件处理模块,用于直接从KMQ中读取数据,并通知网络数据收发线程模块将读取的数据发送给客户端;
网络数据收发线程通知模块,用于在所述epoll队列侦听模块侦听到事件时通知网络数据收发线程模块收发数据。
7.如权利要求6所述的系统,其特征在于,所述KMQ事件处理模块包括:
KMQ事件内存映射模块,用于数据读取线程将所述KMQ事件的内存映射到数据读取线程的地址空间;
KMQ数据读取模块,用于数据读取线程通过所述KMQ事件内存映射模块映射到数据读取线程的地址空间访问KMQ事件的内存,并从所述内存中读取KMQ数据。
8.如权利要求5所述的系统,其特征在于,所述网络数据收发线程模块包括:
侦听接口通知接收模块,用于接收侦听接口模块发送的收发数据的通知;
网络数据收发模块,用于在系统内核模块中导出socket相关的函数符号表,并在内核模块中使用该函数符号表对应的标准系统调用来收发数据。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市腾讯计算机系统有限公司,未经深圳市腾讯计算机系统有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210061918.8/1.html,转载请声明来源钻瓜专利网。
- 上一篇:将网页图片上传到网络相册的方法和系统
- 下一篇:一种提高白酒品级的方法