[发明专利]基于Windows的TCP/IP协议的网络传输方法有效
申请号: | 201410120252.8 | 申请日: | 2014-03-27 |
公开(公告)号: | CN103873474B | 公开(公告)日: | 2017-05-17 |
发明(设计)人: | 许广柱;李双军;唐云龙;章萌 | 申请(专利权)人: | 西安航天动力试验技术研究所 |
主分类号: | H04L29/06 | 分类号: | H04L29/06 |
代理公司: | 西安智邦专利商标代理有限公司61211 | 代理人: | 王少文 |
地址: | 710100 陕*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 windows tcp ip 协议 网络 传输 方法 | ||
1.一种基于Windows的TCP/IP协议的网络传输方法,其特征在于:包括以下步骤:
1)应用层调用内核层的操作系统功能;
具体是:应用层调用操作系统的IOCP系统函数与内核层进行交互;
2)应用层和内核层对接:
2.1)应用层向内核层提供功能接口,开辟线程池、缓冲池,并向内核层提出网络传输需求;
2.2)应用层直接向内核层投递多个AcceptEx异步连接请求;
2.3)应用层直接向内核层投递多个数据接收请求;
3)内核层检测网络端口的信号;
4)数据传输:
A)若信号为“连接请求”,则内核层从缓冲池中取出一个AcceptEx异步连接进行连接请求处理,并保持此连接;内核层利用上述连接进行数据发送或者接收;若连接中止,则内核层将取出的连接位置返回连接缓冲池中,等待下一个指令;
B)若信号为“发送请求”,则应用层将数据打包后通过步骤2.1提供的接口,传输给内核层,内核层通过硬件端口发送数据;
C)若信号为“接收请求”,则内核层通过步骤2.1提供的接口,传输数据给应用层,应用层进行数据处理;具体步骤如下:
应用层提供的数据接收处理模块在独立的线程中,内核层数据传输到达之后,应用层从线程池中取出一个线程并唤醒此线程,利用此线程进行处理并将数据放入缓冲池中,从而进行下一步的数据处理;在数据缓冲的同时,应用层向内核层投递新的数据接收请求,则内核层立即返回并等待接收另一个数据包。
2.根据权利要求1所述的基于Windows的TCP/IP协议的网络传输方法,其特征在于:当进行步骤4的C)中出现“数据粘包”时:具体解决步骤如下:
(1)应用层根据数据包头中数据包的大小,并利用数据缓冲池中已有的数据块序列号对粘包情况进行判读;
(2)应用层从线程池中取出一个线程,在此线程中根据数据包的数据结构对数据块剥离;
(3)若零散数据块已经能构成完整数据包,则打包这些数据块形成完整数据包;若数据仍然不完整,则将此数据块放入缓冲池中并编号等待下次数据包。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安航天动力试验技术研究所,未经西安航天动力试验技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410120252.8/1.html,转载请声明来源钻瓜专利网。