CN105791230A - 一种异步iocp实现的sokcet通信设计方法 - Google Patents
一种异步iocp实现的sokcet通信设计方法 Download PDFInfo
- Publication number
- CN105791230A CN105791230A CN201410812331.5A CN201410812331A CN105791230A CN 105791230 A CN105791230 A CN 105791230A CN 201410812331 A CN201410812331 A CN 201410812331A CN 105791230 A CN105791230 A CN 105791230A
- Authority
- CN
- China
- Prior art keywords
- data
- layer
- application layer
- socket
- tcp
- 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.)
- Pending
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Abstract
本申请公开了一种异步IOCP实现的SOKCET通信设计方法,数据推送到TCP 层有两个流程:应用层调用触发以及数据发送驱动触发;应用层调用触发,在接收到应用层的发送调用后,如果缓存器中不存在数据,则直接把待发送数据推送到TCP 层,如果缓存器中存在数据并且应用层的待发送数据的大小小于缓存器的剩余存储空间,则将待发送数据将保存进缓存;等待下次应用层调用触发或数据发送驱动触发时再行发送;数据发送驱动触发,每隔一定的时间检查缓存器是否存有数据,如果存有数据,则推送数据到TCP层。本申请还公开了一种应用层到TCP 层异步Socket 数据传输系统。本申请,能保障TCP/IP 协议在应用层发送数据时,在异步Socket 传输中,完整的提交应用层协议数据到TCP 层。
Description
技术领域
本申请涉及一种基于互联网的网络通信技术,特别涉及一种异步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层,如果待发送数据全部推送完毕,则进行步骤二,否则将剩余的待发送数据保存到所述缓存器,然后进行步骤二。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (1)
1.一种异步IOCP实现的SOKCET通信设计方法,其特征在于,包括以下步骤:
在实现方法系统中,不管在哪个线程里进行针对SOCKET的IOCP操作,使用一个CompletionKey的变量进行存储SOCKET对象,在全局方法中进行数据交换;
在整个SOCKET的生命周期中,使用PER_HANDLE_DATA的存储结构,存放SOCKET地址,及连接对象信息,使用它在全局方法中进宪数据交换;
SOCKET的数据提取方法均以GetQueuedComletionStatus从队列中提出,依据以上权力要求中所述的CompletionKey及PER_HANDLE_DATA中存放的连接SOCKET对象,在方法以外提供的全局函数中进行数据逻辑处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410812331.5A CN105791230A (zh) | 2014-12-24 | 2014-12-24 | 一种异步iocp实现的sokcet通信设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410812331.5A CN105791230A (zh) | 2014-12-24 | 2014-12-24 | 一种异步iocp实现的sokcet通信设计方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105791230A true CN105791230A (zh) | 2016-07-20 |
Family
ID=56378022
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410812331.5A Pending CN105791230A (zh) | 2014-12-24 | 2014-12-24 | 一种异步iocp实现的sokcet通信设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105791230A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101741746A (zh) * | 2009-12-11 | 2010-06-16 | 四川长虹电器股份有限公司 | 基于iocp的双向cas网关与用户终端的通信方法 |
US20100174817A1 (en) * | 2009-01-06 | 2010-07-08 | Chetuparambil Madhu K | Splicing proxied web requests with callback for subsequent requests |
CN103179087A (zh) * | 2011-12-21 | 2013-06-26 | 上海飞田通信技术有限公司 | 应用层到TCP层异步Socket数据传输方法及系统 |
-
2014
- 2014-12-24 CN CN201410812331.5A patent/CN105791230A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100174817A1 (en) * | 2009-01-06 | 2010-07-08 | Chetuparambil Madhu K | Splicing proxied web requests with callback for subsequent requests |
CN101741746A (zh) * | 2009-12-11 | 2010-06-16 | 四川长虹电器股份有限公司 | 基于iocp的双向cas网关与用户终端的通信方法 |
CN103179087A (zh) * | 2011-12-21 | 2013-06-26 | 上海飞田通信技术有限公司 | 应用层到TCP层异步Socket数据传输方法及系统 |
Non-Patent Citations (1)
Title |
---|
罗永刚: "大型网络棋牌游戏服务器端设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220231965A1 (en) | System and method for facilitating efficient packet forwarding using a message state table in a network interface controller (nic) | |
EP3298824B1 (en) | Method and apparatus for managing buffer in wireless communication system | |
US10298495B2 (en) | Packet forwarding method and apparatus | |
US9143467B2 (en) | Network interface controller with circular receive buffer | |
US8310934B2 (en) | Method and device for controlling information channel flow | |
CN103746938A (zh) | 一种发送数据包的方法及装置 | |
CN106385448A (zh) | 一种客户端与服务端进行通信的方法及装置 | |
CN105094743A (zh) | 一种先进先出数据缓存器及其进行时延控制的方法 | |
US11177969B2 (en) | Interface device and data communication method | |
CN103338158A (zh) | 一种goose报文传输时延抖动抑制方法 | |
CN105791230A (zh) | 一种异步iocp实现的sokcet通信设计方法 | |
CN105183370A (zh) | 一种实现双控制器通信的通信方法及通信模型 | |
CN105357148A (zh) | 避免网络交换芯片输出报文乱序的方法及系统 | |
CN104898775A (zh) | 计算装置、存储装置、网络交换设备及计算机体系架构 | |
CN103179087B (zh) | 应用层到TCP层异步Socket数据传输方法及系统 | |
CN106372013B (zh) | 远程内存访问方法、装置和系统 | |
US9544401B2 (en) | Device and method for data communication using a transmission ring buffer | |
CN104539528B (zh) | 多核通信设备及其与radius服务器间报文交互方法 | |
CN101895470B (zh) | 流控信息传递方法和装置 | |
CN104618083A (zh) | 一种多通道报文转发的方法 | |
US11444886B1 (en) | Out of order packet buffer selection | |
US9350647B2 (en) | Ring topology storage system, storage device in ring topology storage network and method for handling multicast command packets in ring topology | |
CN104917704B (zh) | 同一架构中复用10GBase‑R PCS和40GBase‑R PCS的方法及系统 | |
US10353846B2 (en) | Communication system with train bus architecture | |
CN104620224A (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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160720 |