[发明专利]基于Windows的TCP/IP协议的网络传输方法有效

专利信息
申请号: 201410120252.8 申请日: 2014-03-27
公开(公告)号: CN103873474B 公开(公告)日: 2017-05-17
发明(设计)人: 许广柱;李双军;唐云龙;章萌 申请(专利权)人: 西安航天动力试验技术研究所
主分类号: H04L29/06 分类号: H04L29/06
代理公司: 西安智邦专利商标代理有限公司61211 代理人: 王少文
地址: 710100 陕*** 国省代码: 陕西;61
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 基于 windows tcp ip 协议 网络 传输 方法
【说明书】:

技术领域

发明属于软件开发设计领域,具体涉及一种基于Windows的TCP/IP协议的网络传输方法。

背景技术

TCP/IP协议是当前广域网和局域网通用的网络协议,在基于windows操作系统的网络数据传输软件设计和编码过程中,设计者可以采用多种传输方法(如常规的多线程socket阻塞式设计、异步选择I/O复用机制WSAAsynSelect、完成端口网络方法I/O Completion Port等)、使用各种现有的框架(如MFC、.NET FCL等)或者控件,但不论如何选择,传统的阻塞式/异步选择机制是无法与高性能的完成端口机制相比。而且在众多的基于完成端口设计出的网络数据传输方法中,如何高效地解决各种数据处理问题需要进一步完善传输方法。

TCP/IP协议上的传统阻塞式输方法一般采用简单的多线程C/S握手机制,工作过程属于阻塞式传输;阻塞式传输方法,从使用可用的socket开始到最后数据获取完成才会返回,中间的过程完全阻塞。对于一次数据获取过程来说,只能处理一个套接字。图1是该传输方法的原理图。

异步选择I/O复用机制方法采用的是多线程非阻塞注册集合式连接管理方式,属于异步并发消息(事件)式方法,其消息(事件)的触发是有很多条件限制的,而且注册集合中有数量限制,即无法进行大并发数据连接和接收管理。异步select方法,分两个过程,进行两次系统调用,select过程先阻塞,直到有活动的套接字才返回。可以处理多个套接字,但数量有限。图2是该传输方法的原理图。图6-a为该传输方法的数据处理方式示意图。

发明内容

本发明提出了一种基于Windows的TCP/IP协议的网络传输方法,解决了现有网络传输方法中无法高效地解决各种数据处理问题。

本发明的具体技术方案:

一种基于Windows的TCP/IP协议的网络传输方法,其特征在于:包括以下步骤:

1)应用层调用内核层的操作系统功能;

具体是:应用层调用操作系统的IOCP系统函数与内核层进行交互;

2)应用层和内核层对接:

2.1)应用层向内核层提供功能接口,开辟线程池、缓冲池,并向内核层提出网络传输需求;

2.2)应用层向内核层投递多个AcceptEx异步连接请求;

2.3)应用层向内核层投递多个数据接收请求;

3)内核层检测网络端口的信号;

4)数据传输:

A)若信号为“连接请求”,则内核层从缓冲池中取出一个AcceptEx异步连接进行连接请求处理,并保持此连接;内核层利用上述连接进行数据发送或者接收;若连接中止,则内核层将取出的连接位置返回连接缓冲池中,等待下一个指令;

B)若信号为“发送请求”,则应用层将数据打包后通过步骤2.1提供的接口,传输给内核层,内核层通过硬件端口发送数据;

C)若信号为“接收请求”,则内核层通过步骤2.1提供的接口,传输数据给应用层,应用层进行数据处理;具体步骤如下:

应用层提供的数据接收处理模块在独立的线程中,内核层数据传输到达之后,应用层从线程池中取出一个线程并唤醒此线程,利用此线程进行处理并将数据放入缓冲池中,从而进行下一步的数据处理;在数据缓冲的同时,应用层向内核层投递新的数据接收请求,则内核层立即返回并等待接收另一个数据包。

根据上述方法所述:当进行步骤4的C中出现“数据粘包”时:具体解决步骤如下:

1)应用层根据数据包头中数据包的大小,并利用数据缓冲池中已有的数据块序列号对粘包情况进行判读;

2)应用层从线程池中取出一个线程,在此线程中根据数据包的数据结构对数据块剥离;

3)若零散数据块已经能构成完整数据包,则打包这些数据块形成完整数据包;若数据仍然不完整,则将此数据块放入缓冲池中并编号等待下次数据包。

本发明的优点在于:

1、本发明采用AcceptEx异步连接机制,相比Accept阻塞连接,AcceptEx属于异步连接,而且可以完成:接受连接、返回连接的本地和远程地址、获取第一个数据块三个任务,从而使得连接处理可以使用较少的线程处理大量的客户连接。

2、本发明在处理接收的数据包时,一方面采用增加数据头部便于接收时确认数据包大小,另一方面在接收数据时采用数据缓冲,从而进行多次数据拼接操作,直到完整数据包接收完毕。因此,该方法可解决粘包数据分离并完整接收;解决常见的TCP数据包粘包问题。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安航天动力试验技术研究所,未经西安航天动力试验技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201410120252.8/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top