CN103179087A - 应用层到TCP层异步Socket数据传输方法及系统 - Google Patents
应用层到TCP层异步Socket数据传输方法及系统 Download PDFInfo
- Publication number
- CN103179087A CN103179087A CN2011104318611A CN201110431861A CN103179087A CN 103179087 A CN103179087 A CN 103179087A CN 2011104318611 A CN2011104318611 A CN 2011104318611A CN 201110431861 A CN201110431861 A CN 201110431861A CN 103179087 A CN103179087 A CN 103179087A
- Authority
- CN
- China
- Prior art keywords
- data
- application layer
- layer
- out step
- sent
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 54
- 238000000034 method Methods 0.000 title claims abstract description 21
- 230000008569 process Effects 0.000 claims abstract description 6
- 238000005516 engineering process Methods 0.000 description 5
- 230000003139 buffering effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Landscapes
- Communication Control (AREA)
Abstract
本申请公开了一种应用层到TCP层异步Socket数据传输方法,数据推送到TCP层有两个流程:应用层调用触发以及数据发送驱动触发;应用层调用触发,在接收到应用层的发送调用后,如果缓存器中不存在数据,则直接把待发送数据推送到TCP层,如果缓存器中存在数据并且应用层的待发送数据的大小小于缓存器的剩余存储空间,则将待发送数据将保存进缓存;等待下次应用层调用触发或数据发送驱动触发时再行发送;数据发送驱动触发,每隔一定的时间检查缓存器是否存有数据,如果存有数据,则推送数据到TCP层。本申请还公开了一种应用层到TCP层异步Socket数据传输系统。本申请,能保障TCP/IP协议在应用层发送数据时,在异步Socket传输中,完整的提交应用层协议数据到TCP层。
Description
技术领域
本申请涉及半导体网络通信技术,特别涉及一种应用层到TCP层异步Socket数据传输方法及系统。
背景技术
TCP/IP协议保障了数据传输的到达和准确率,但未对应用层数据提交的完整性进行保障。
在进行TCP数据流式传输的过程中,数据通常具备应用层协议,同步Socket中,在应用层发送数据时,会阻塞调用,直到所有的数据都提交到TCP层,但在异步Socket中,TCP层只接收能接收的数据容量,对于超出其接收范围的,TCP层将不再接收,调用会立即返回。在TCP层进行数据远程发送后,会空闲出空间,此时能够再次接收外来数据,但需要应用方再次调用进行数据提交,方能提交数据到TCP层。可见TCP/IP协议在应用层发送数据时,无法保障在异步Socket传输中,完整的提交应用层协议数据到TCP层。例如,在GPRS(General Packet Radio Service,通用分组无线服务技术)的网络传输中,5KB/S的数据带宽即可造成网络的阻塞,进而造成到达TCP层的应用层协议数据的不完整。
发明内容
本申请要解决的技术问题是,保障TCP/IP协议在应用层发送数据时,在异步Socket传输中,完整的提交应用层协议数据到TCP层。
为解决上述技术问题,本申请提供了一种应用层到TCP层异步Socket数据传输方法,包括以下步骤:
一.设置一缓存器,用于缓存发送数据;设置一数据发送驱动模块,用于每隔一定的时间检查所述缓存器是否存有数据,如果存有数据,则依先进先出顺序推送不超过设定量的数据到TCP层;
二.接收应用层的发送调用,如果接收到应用层的发送调用则进行步骤三;
三.判断应用层的待发送数据的大小是否超过所述缓存器的总存储空间,如果超过则进行步骤二,否则进行步骤四;
四.判断所述缓存器中是否缓存有数据,如果有则进行步骤五,否则进行步骤九;
五.从所述缓存器中依先进先出顺序推送不超过设定量的数据到TCP层;
六.判断所述缓存器中是否还缓存有数据,如果有则进行步骤七,否则进行步骤九;
七.判断应用层的待发送数据的大小是否超过所述缓存器的剩余存储空间,如果超过则进行步骤二,否则进行步骤八;
八.保存待发送数据到所述缓存器,然后进行步骤二;
九.推送不超过设定量的待发送数据到TCP层,如果待发送数据全部推送完毕,则进行步骤二,否则将剩余的待发送数据保存到所述缓存器,然后进行步骤二。
为解决上述技术问题,本申请还提供了一种应用层到TCP层异步Socket数据传输系统,包括缓存器、数据发送驱动模块、应用层调用接口模块、数据控制模块;
所述缓存器,用于缓存发送数据;
所述数据发送驱动模块,用于每隔一定的时间检查所述缓存器是否存有数据,如果存有数据,则依先进先出顺序推送不超过设定量的数据到TCP层;
所述应用层调用接口模块,用于接收应用层的发送调用。
所述数据控制模块,用于在所述应用层调用接口模块接收到应用层的发送调用后,控制将应用层的待发送数据直接推送到TCP层,或者保存到所述缓存器。
所述数据控制模块的具体工作过程如下:
一.如果所述应用层调用接口模块接收到应用层的发送调用,则进行步骤二;
二.判断应用层的待发送数据的大小是否超过所述缓存器的总存储空间,如果未超过则进行步骤三;
三.判断所述缓存器中是否缓存有数据,如果有则进行步骤四,否则进行步骤八;
四.从所述缓存器中依先进先出顺序推送不超过设定量的数据到TCP层;
五.判断所述缓存器中是否还缓存有数据,如果有则进行步骤六,否则进行步骤八;
六.判断应用层的待发送数据的大小是否超过所述缓存器的剩余存储空间,如果未超过则进行步骤七;
七.保存待发送数据到所述缓存器;
八.推送不超过设定量的待发送数据到TCP层,如果待发送数据未能全部推送完毕,则将剩余的待发送数据保存到所述缓存器。
本申请的应用层到TCP层异步Socket数据传输方法及系统,应用层的待发送数据可能直接被提交到TCP层,也可能被缓存到缓存器中,甚至可能部分被提交进TCP层,部分缓存在缓存器。被缓存在缓存器中的数据,无需应用层的干预,将会随着TCP层的数据空间的空闲,主动被推送进TCP层。本申请的应用层到TCP层异步Socket数据传输方法及系统,能控制TCP/IP协议应用层的待发送数据完整进入或完全不进入TCP层,并为数据主动推送到TCP层提供驱动能力,从而在异步Socket的数据发送中,保障了应用层数据发送的完整性。
附图说明
为了更清楚地说明本申请的技术方案,下面对本申请所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请的应用层到TCP层异步Socket数据传输方法一实施例示意图;
图2是本申请的应用层到TCP层异步Socket数据传输系统一实施例示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。应当理解,此处所描述的优选实施例仅用于说明和解释本申请,并不用于限定本申请。并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。基于本申请中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本申请保护的范围。
实施例一
应用层到TCP层异步Socket数据传输方法,如图1所示,包括以下步骤:
一.设置一缓存器,用于缓存发送数据;设置一数据发送驱动模块,用于每隔一定的时间检查所述缓存器是否存有数据,如果存有数据,则依先进先出顺序推送不超过设定量的数据到TCP层;
二.接收应用层的发送调用,如果接收到应用层的发送调用则进行步骤三;
三.判断应用层的待发送数据的大小是否超过所述缓存器的总存储空间(如100KB),如果超过则进行步骤二,否则进行步骤四;
四.判断所述缓存器中是否缓存有数据,如果有则进行步骤五,否则进行步骤九;
五.从所述缓存器中依先进先出顺序推送不超过设定量的数据到TCP层;
六.判断所述缓存器中是否还缓存有数据,如果有则进行步骤七,否则进行步骤九;
七.判断应用层的待发送数据的大小是否超过所述缓存器的剩余存储空间,如果超过则进行步骤二,否则进行步骤八;
八.保存待发送数据到所述缓存器,然后进行步骤二;
九.推送不超过设定量的待发送数据到TCP层,如果待发送数据全部推送完毕,则进行步骤二,否则将剩余的待发送数据保存到所述缓存器,然后进行步骤二。
该应用层到TCP层异步Socket数据传输方法,数据推送到TCP层有两个流程:应用层调用触发以及数据发送驱动触发。
应用层调用触发,在接收到应用层的发送调用后,首先对应用层的待发送数据的大小进行判断,如果数据量过大,超出了应用层缓存器的总存储空间,将不对该待发送数据进行发送,因为一旦发送一个字节后,剩余的字节无法保存进入缓存器中,那么后续的数据将无法保存进缓存,从而无法对待发送数据的完整性提供保障。如果应用层的待发送数据的大小超过了缓存器的剩余存储空间,因上述同样的原因,同样将不对该待发送数据进行发送。当从所述缓存器中推送设定量数据到TCP层后,如果缓存器中还存在数据,那么待发送数据将直接保存进缓存;如果缓存器中不存在数据,则直接把待发送数据推送到TCP层,如果不能全部推送,剩余的数据将保存到缓存器中,等待下次再触发(应用层调用触发或数据发送驱动触发)时再行发送。
数据发送驱动触发,每隔一定的时间检查所述缓存器是否存有数据,如果存有数据,则依先进先出顺序推送不超过设定量的数据到TCP层。
实施例二
应用层到TCP层异步Socket数据传输系统,如图2所示,包括缓存器、数据发送驱动模块、应用层调用接口模块、数据控制模块;
所述缓存器,用于缓存发送数据;
所述数据发送驱动模块,用于每隔一定的时间检查所述缓存器是否存有数据,如果存有数据,则依先进先出顺序推送不超过设定量的数据到TCP层;
所述应用层调用接口模块,用于接收应用层的发送调用,所述应用层调用接口模块提供基于不同数据结构的多个应用层发送调用接口。
所述数据控制模块,用于在所述应用层调用接口模块接收到应用层的发送调用后,控制将应用层的待发送数据直接推送到TCP层,或者保存到所述缓存器,具体工作过程如下:
一.如果所述应用层调用接口模块接收到应用层的发送调用,则进行步骤二;
二.判断应用层的待发送数据的大小是否超过所述缓存器的总存储空间(如100KB),如果未超过则进行步骤三;
三.判断所述缓存器中是否缓存有数据,如果有则进行步骤四,否则进行步骤八;
四.从所述缓存器中依先进先出顺序推送不超过设定量的数据到TCP层;
五.判断所述缓存器中是否还缓存有数据,如果有则进行步骤六,否则进行步骤八;
六.判断应用层的待发送数据的大小是否超过所述缓存器的剩余存储空间,如果未超过则进行步骤七;
七.保存待发送数据到所述缓存器;
八.推送不超过设定量的待发送数据到TCP层,如果待发送数据未能全部推送完毕,则将剩余的待发送数据保存到所述缓存器。
该应用层到TCP层异步Socket数据传输系统,所述数据控制模块对由所述应用层调用接口模块传递进来的应用层的待发送数据,进行数据流程的控制。如果一次性发送数据量过大或者当前的缓存器剩余存储空间不足以放置待发送数据,数据将不被发送,否则如果缓存器中缓存有数据,则将先推送缓存器中的数据到TCP层,然后再发送当前应用层调用接口模块传递进来的应用层的待发送数据接口提交的数据。所述缓存器用于缓存应用层的待发送数据,如果应用层的数据发送速度不过高,通常该缓存器中不会有数据,但是如果发送的数据发送速度过高,那么在该缓存器中存放未能推送到TCP层的数据。所述数据发送驱动模块主要用于对缓存器中的数据进行主动推送,从而在无需应用层干预的情况下,达到对数据发送的主动驱动。
本申请的应用层到TCP层异步Socket数据传输方法及系统,应用层的待发送数据可能直接被提交到TCP层,也可能被缓存到缓存器中,甚至可能部分被提交进TCP层,部分缓存在缓存器。被缓存在缓存器中的数据,无需应用层的干预,将会随着TCP层的数据空间的空闲,主动被推送进TCP层。本申请的应用层到TCP层异步Socket数据传输方法及系统,能控制TCP/IP协议应用层的待发送数据完整进入或完全不进入TCP层,并为数据主动推送到TCP层提供驱动能力,从而在异步Socket的数据发送中,保障了应用层数据发送的完整性。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (6)
1.一种应用层到TCP层异步Socket数据传输方法,其特征在于,包括以下步骤:
一.设置一缓存器,用于缓存发送数据;设置一数据发送驱动模块,用于每隔一定的时间检查所述缓存器是否存有数据,如果存有数据,则依先进先出顺序推送不超过设定量的数据到TCP层;
二.接收应用层的发送调用,如果接收到应用层的发送调用则进行步骤三;
三.判断应用层的待发送数据的大小是否超过所述缓存器的总存储空间,如果超过则进行步骤二,否则进行步骤四;
四.判断所述缓存器中是否缓存有数据,如果有则进行步骤五,否则进行步骤九;
五.从所述缓存器中依先进先出顺序推送不超过设定量的数据到TCP层;
六.判断所述缓存器中是否还缓存有数据,如果有则进行步骤七,否则进行步骤九;
七.判断应用层的待发送数据的大小是否超过所述缓存器的剩余存储空间,如果超过则进行步骤二,否则进行步骤八;
八.保存待发送数据到所述缓存器,然后进行步骤二;
九.推送不超过设定量的待发送数据到TCP层,如果待发送数据全部推送完毕,则进行步骤二,否则将剩余的待发送数据保存到所述缓存器,然后进行步骤二。
2.根据权利要求1所述的应用层到TCP层异步Socket数据传输方法,其特征在于,所述缓存器的总存储空间为100KB。
3.一种应用层到TCP层异步Socket数据传输系统,其特征在于,包括缓存器、数据发送驱动模块、应用层调用接口模块、数据控制模块;
所述缓存器,用于缓存发送数据;
所述数据发送驱动模块,用于每隔一定的时间检查所述缓存器是否存有数据,如果存有数据,则依先进先出顺序推送不超过设定量的数据到TCP层;
所述应用层调用接口模块,用于接收应用层的发送调用。
所述数据控制模块,用于在所述应用层调用接口模块接收到应用层的发送调用后,控制将应用层的待发送数据直接推送到TCP层,或者保存到所述缓存器。
4.根据权利要求3所述的应用层到TCP层异步Socket数据传输系统,其特征在于,
所述数据控制模块的具体工作过程如下:
一.如果所述应用层调用接口模块接收到应用层的发送调用,则进行步骤二;
二.判断应用层的待发送数据的大小是否超过所述缓存器的总存储空间,如果未超过则进行步骤三;
三.判断所述缓存器中是否缓存有数据,如果有则进行步骤四,否则进行步骤八;
四.从所述缓存器中依先进先出顺序推送不超过设定量的数据到TCP层;
五.判断所述缓存器中是否还缓存有数据,如果有则进行步骤六,否则进行步骤八;
六.判断应用层的待发送数据的大小是否超过所述缓存器的剩余存储空间,如果未超过则进行步骤七;
七.保存待发送数据到所述缓存器;
八.推送不超过设定量的待发送数据到TCP层,如果待发送数据未能全部推送完毕,则将剩余的待发送数据保存到所述缓存器。
5.根据权利要求3所述的应用层到TCP层异步Socket数据传输系统,其特征在于,所述应用层调用接口模块提供基于不同数据结构的多个应用层发送调用接口。
6.根据权利要求3所述的应用层到TCP层异步Socket数据传输系统,其特征在于,所述缓存器的总存储空间为100KB。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110431861.1A CN103179087B (zh) | 2011-12-21 | 2011-12-21 | 应用层到TCP层异步Socket数据传输方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110431861.1A CN103179087B (zh) | 2011-12-21 | 2011-12-21 | 应用层到TCP层异步Socket数据传输方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103179087A true CN103179087A (zh) | 2013-06-26 |
CN103179087B CN103179087B (zh) | 2016-07-06 |
Family
ID=48638713
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110431861.1A Expired - Fee Related CN103179087B (zh) | 2011-12-21 | 2011-12-21 | 应用层到TCP层异步Socket数据传输方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103179087B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105187506A (zh) * | 2015-08-12 | 2015-12-23 | 深圳市广和通无线股份有限公司 | 无线通讯模块的数据上传方法 |
CN105530713A (zh) * | 2014-09-28 | 2016-04-27 | 中兴通讯股份有限公司 | 一种基于多无线连接的数据传输方法和装置 |
CN105791230A (zh) * | 2014-12-24 | 2016-07-20 | 常熟市盛铭信息技术有限公司 | 一种异步iocp实现的sokcet通信设计方法 |
WO2024197850A1 (zh) * | 2023-03-31 | 2024-10-03 | 华为技术有限公司 | 多种车载数据的传输方法及其相关设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101087314A (zh) * | 2007-05-15 | 2007-12-12 | 华为技术有限公司 | 一种应用程序跨进程使用套接字服务的系统及方法 |
US20080013448A1 (en) * | 2006-07-11 | 2008-01-17 | Sony Computer Entertainment Inc. | Network Processor System and Network Protocol Processing Method |
CN101247319A (zh) * | 2007-02-16 | 2008-08-20 | 华为技术有限公司 | 处理异步消息队列的方法、系统和异步socket |
-
2011
- 2011-12-21 CN CN201110431861.1A patent/CN103179087B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080013448A1 (en) * | 2006-07-11 | 2008-01-17 | Sony Computer Entertainment Inc. | Network Processor System and Network Protocol Processing Method |
CN101247319A (zh) * | 2007-02-16 | 2008-08-20 | 华为技术有限公司 | 处理异步消息队列的方法、系统和异步socket |
CN101087314A (zh) * | 2007-05-15 | 2007-12-12 | 华为技术有限公司 | 一种应用程序跨进程使用套接字服务的系统及方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105530713A (zh) * | 2014-09-28 | 2016-04-27 | 中兴通讯股份有限公司 | 一种基于多无线连接的数据传输方法和装置 |
CN105530713B (zh) * | 2014-09-28 | 2020-12-11 | 中兴通讯股份有限公司 | 一种基于多无线连接的数据传输方法和装置 |
CN105791230A (zh) * | 2014-12-24 | 2016-07-20 | 常熟市盛铭信息技术有限公司 | 一种异步iocp实现的sokcet通信设计方法 |
CN105187506A (zh) * | 2015-08-12 | 2015-12-23 | 深圳市广和通无线股份有限公司 | 无线通讯模块的数据上传方法 |
WO2024197850A1 (zh) * | 2023-03-31 | 2024-10-03 | 华为技术有限公司 | 多种车载数据的传输方法及其相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN103179087B (zh) | 2016-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106953797B (zh) | 一种基于动态连接的rdma数据传输的方法与装置 | |
CN102148662B (zh) | 一种数据发送速率的调整方法及装置 | |
CN109547162B (zh) | 基于两套单向边界的数据通信方法 | |
CN104378308A (zh) | 报文发送速率检测方法及装置 | |
CN109714267A (zh) | 管理反向队列的传输控制方法及系统 | |
CN101977358A (zh) | 一种数据短信的传输方法、装置及设备 | |
CN103746938A (zh) | 一种发送数据包的方法及装置 | |
CN102394925A (zh) | 远程监测诊断中心与地区调度中心的通讯方法及装置 | |
CN103036885B (zh) | Sip服务器过载保护系统及方法 | |
CN103546258A (zh) | 一种数据传输方法及装置 | |
CN103179087A (zh) | 应用层到TCP层异步Socket数据传输方法及系统 | |
CN100553189C (zh) | 基于缓冲管理的多链路冗余的实现方法 | |
CN102340734A (zh) | 定位应用管理方法及装置 | |
CN101146050B (zh) | 帧中继报文传输方法和设备 | |
CN102957626A (zh) | 一种报文转发方法和装置 | |
CN102104552A (zh) | 基于明确拥塞通知机制的报文控制方法及设备 | |
JP3439320B2 (ja) | データ通信方法、データ通信装置、およびデータ通信プログラム記録媒体 | |
CN103617132B (zh) | 一种基于共享存储的以太网终端发送实现方法及终端装置 | |
CN103297384A (zh) | 协议转换的通信方法及系统 | |
CN101079815B (zh) | 报文转换方法、系统及装置 | |
CN102694727A (zh) | 实现网络数据包转发加速的方法及装置 | |
CN106534331A (zh) | 一种基于动态端口切换的数据传输方法和系统 | |
CN102299861A (zh) | 一种报文流量控制方法 | |
CN115022249B (zh) | 云数据中心应用中数据流传输调度控制方法及系统 | |
CN110928828B (zh) | 处理器间业务处理系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160706 |
|
CF01 | Termination of patent right due to non-payment of annual fee |