一种异步IOCP实现的SOKCET通信设计方法技术

技术编号:13375431 阅读:46 留言:0更新日期:2016-07-20 21:59
本申请公开了一种异步IOCP实现的SOKCET通信设计方法,数据推送到TCP 层有两个流程:应用层调用触发以及数据发送驱动触发;应用层调用触发,在接收到应用层的发送调用后,如果缓存器中不存在数据,则直接把待发送数据推送到TCP 层,如果缓存器中存在数据并且应用层的待发送数据的大小小于缓存器的剩余存储空间,则将待发送数据将保存进缓存;等待下次应用层调用触发或数据发送驱动触发时再行发送;数据发送驱动触发,每隔一定的时间检查缓存器是否存有数据,如果存有数据,则推送数据到TCP层。本申请还公开了一种应用层到TCP 层异步Socket 数据传输系统。本申请,能保障TCP/IP 协议在应用层发送数据时,在异步Socket 传输中,完整的提交应用层协议数据到TCP 层。

【技术实现步骤摘要】

本申请涉及一种基于互联网的网络通信技术,特别涉及一种异步IOCP实现的SOKCET通信设计方法
技术介绍
TCP/IP协议保障了数据传输的到达和准确率,但未对应用层数据提交的完整性进行保障。在进行TCP数据流式传输的过程中,数据通常具备应用层协议,同步Socket中,在应用层发送数据时,会阻塞调用,直到所有的数据都提交到TCP层,但在异步Socket中,TCP层只接收能接收的数据容量,对于超出其接收范围的,TCP层将不再接收,调用会立即返回。在TCP层进行数据远程发送后,会空闲出空间,此时能够再次接收外来数据,但需要应用方再次调用进行数据提交,方能提交数据到TCP层。可见TCP/IP协议在应用层发送数据时,无法保障在异步Socket传输中,完整的提交应用层协议数据到TCP层。
技术实现思路
本申请要解决的技术问题是,保障TCP/IP协议在应用层发送数据时,在异步Socket传输中,完整的提交应用层协议数据到TCP层。为解决上述技术问题,本申请提供了一种异步IOCP实现的SOKCET通信设计方法,包括以下步骤:一、设置一缓存器,用于缓存发送数据;设置一数据发送驱动模块,用于每隔一定的时间检查所述缓存器是否存有数据,如果存有数据,则依先进先出顺序推送不超过设定量的数据到TCP层;二、接收应用层的发送调用,如果接收到应用层的发送调用则进行步骤三;三、判断应用层的待发送数据的大小是否超过所述缓存器的总存储空间,如果超过则进行步骤二,否则进行步骤四;四、判断所述缓存器中是否缓存有数据,如果有则进行步骤五,否则进行步骤九;五、从所述缓存器中依先进先出顺序推送不超过设定量的数据到TCP层;六、判断所述缓存器中是否还缓存有数据,如果有则进行步骤七,否则进行步骤九;七、判断应用层的待发送数据的大小是否超过所述缓存器的剩余存储空间,如果超过则进行步骤二,否则进行步骤八;八、保存待发送数据到所述缓存器,然后进行步骤二;九、推送不超过设定量的待发送数据到TCP层,如果待发送数据全部推送完毕,则进行步骤二,否则将剩余的待发送数据保存到所述缓存器,然后进行步骤二。具体实施方式下面将对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。应当理解,此处所描述的优选实施例仅用于说明和解释本申请,并不用于限定本申请。并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。基于本申请中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本申请保护的范围。实施例如下:一种异步IOCP实现的SOKCET通信设计方法,包括以下步骤:一、设置一缓存器,用于缓存发送数据;设置一数据发送驱动模块,用于每隔一定的时间检查所述缓存器是否存有数据,如果存有数据,则依先进先出顺序推送不超过设定量的数据到TCP层;二、接收应用层的发送调用,如果接收到应用层的发送调用则进行步骤三;三、判断应用层的待发送数据的大小是否超过所述缓存器的总存储空间(如100KB),如果超过则进行步骤二,否则进行步骤四;四、判断所述缓存器中是否缓存有数据,如果有则进行步骤五,否则进行步骤九;五、从所述缓存器中依先进先出顺序推送不超过设定量的数据到TCP层;六、判断所述缓存器中是否还缓存有数据,如果有则进行步骤七,否则进行步骤九;七、判断应用层的待发送数据的大小是否超过所述缓存器的剩余存储空间,如果超过则进行步骤二,否则进行步骤八;八、保存待发送数据到所述缓存器,然后进行步骤二;九、推送不超过设定量的待发送数据到TCP层,如果待发送数据全部推送完毕,则进行步骤二,否则将剩余的待发送数据保存到所述缓存器,然后进行步骤二。以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。本文档来自技高网...

【技术保护点】
一种异步IOCP实现的SOKCET通信设计方法,其特征在于,包括以下步骤:在实现方法系统中,不管在哪个线程里进行针对SOCKET的IOCP操作,使用一个CompletionKey的变量进行存储SOCKET对象,在全局方法中进行数据交换;在整个SOCKET的生命周期中,使用PER_HANDLE_DATA的存储结构,存放SOCKET地址,及连接对象信息,使用它在全局方法中进宪数据交换;SOCKET的数据提取方法均以GetQueuedComletionStatus从队列中提出,依据以上权力要求中所述的CompletionKey及PER_HANDLE_DATA中存放的连接SOCKET对象,在方法以外提供的全局函数中进行数据逻辑处理。

【技术特征摘要】
1.一种异步IOCP实现的SOKCET通信设计方法,其特征在于,包括以下步骤:
在实现方法系统中,不管在哪个线程里进行针对SOCKET的IOCP操作,使用一个CompletionKey的变量进行存储SOCKET对象,在全局方法中进行数据交换;
在整个SOCKET的生命周期中,使用PER_HANDLE_DATA的存储结构,存放...

【专利技术属性】
技术研发人员:季晓宇
申请(专利权)人:常熟市盛铭信息技术有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1