CN103312688B - 一种基于socket的包驱动方法 - Google Patents
一种基于socket的包驱动方法 Download PDFInfo
- Publication number
- CN103312688B CN103312688B CN201310079780.9A CN201310079780A CN103312688B CN 103312688 B CN103312688 B CN 103312688B CN 201310079780 A CN201310079780 A CN 201310079780A CN 103312688 B CN103312688 B CN 103312688B
- Authority
- CN
- China
- Prior art keywords
- data
- socket
- iocp
- packet
- class
- 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.)
- Active
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明了公开了一种基于SOCKET的包驱动方法,它包括数据包的接收和数据包的传输两个步骤,所述的数据包的接收包括SOCKET的初始化与读,包括以下子步骤:建立连接、发送请求、发送数据、判断包是否完成、调用应用层业务、应用层进入队列、读取数据包;数据包的传输包括SOCKET的数据包的写过程,包括以下子步骤:发送写入数据请求、写入数据、写数据完成、计算发送是否完成、完成写数据。本发明SOCKET模型的初始化读与写方法低延迟、易于处理错误,API也很容易使用,无需另外的层就可以直接使用,能够更好地实现客户端与服务器之间的数据传输,传输速度快、传输稳定,不易发生传输数据丢失的现象。
Description
技术领域
本发明涉及一种基于SOCKET的包驱动方法。
背景技术
Socket的英文原义是“孔”或“插座”,作为4BDSUNIX的进程通信机制,取后一种意思,通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务,Socket正如其英文原意那样,像一个多孔插座。一台主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220伏交流电,有的提供110伏交流电,有的则提供有线电视节目。客户软件将插头插到不同编号的插座,就可以得到不同的服务。
Socket非常类似于电话插座。以一个国家级电话网为例。在电话系统中,一般用户只能感受到本地电话机和对方电话号码的存在,建立通话的过程,话音传输的过程以及整个电话系统的技术细节对他都是透明的,这也与Socket机制非常相似。Socket利用网间网通信设施实现进程通信,但它对通信设施的细节毫不关心,只要通信设施能提供足够的通信能力,它就满足了。
一个完整的socket有一个本地唯一的socket号,由操作系统分配。
最重要的是,socket是面向客户/服务器模型而设计的,针对客户和服务器程序提供不同的socket系统调用。客户随机申请一个socket(相当于一个想打电话的人可以在任何一台入网电话上拨号呼叫),系统为之分配一个socket号;服务器拥有全局公认的socket,任何客户都可以向它发出连接请求和信息请求(相当于一个被呼叫的电话拥有一个呼叫方知道的电话号码)。
Socket利用客户/服务器模式巧妙地解决了进程之间建立通信连接的问题。服务器socket半相关为全局所公认非常重要。应用程序通常通过“套接字”向网络发出请求或者应答网络请求。以J2SDK-1.3为例,Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。
发明内容
本发明的目的在于克服现有技术的不足,提供一种API很容易使用,无需另外的层就可以直接使用,能够更好地实现客户端与服务器之间的数据传输,传输速度快、传输稳定,传输过程中不易发生传输数据丢失的现象的基于SOCKET的包驱动方法。
本发明的目的是通过以下技术方案来实现的:一种基于SOCKET的包驱动方法,它包括数据包的接收和数据包的传输,其中,所述的数据包的接收包括以下子步骤:
S101:建立连接:客户端与IOCP建立连接,IOCP绑定完成端口;
S102:发送请求:SOCKET封装类向IOCP发送读取数据的请求;
S103:发送数据:客户端向IOCP发送数据,IOCP读取数据并返回;
S104:判断包是否完成:IOCP判断数据是否是完成的包,并将完成的包发送至SOCKET封装类;
S105:调用应用层业务:SOCKET封装类组成包对象,并调用应用层业务;
S106:应用层进入队列:应用层进入队列,并返回SOCKET封装类;
S107:读取数据包:SOCKET封装类向IOCP读取数据包;
所述的数据包的传输包括以下子步骤:
S201:发送写入数据请求:应用层向SOCKET封装类发送写入数据业务请求;
S202:写入数据:SOCKET封装类向IOCP写入数据;
S203:写数据完成:IOCP完成数据写入后向SOCKET封装类返回写数据完成信息;
S204:计算发送是否完成:SOCKET封装类计算发送是否完成,若发送未完成,则继续向IOCP写入数据,IOCP完成数据写入后再向SOCKET封装类返回写数据完成信号;
S205:完成写数据:SOCKET封装类计算发送完成,写数据完成;
S206:SOCKET封装类向IOCP读取数据。
本发明的优点在于:SOCKET模型的初始化读与写功能强大,能进行双向通信、延迟低,且易于处理错误,其不会像Comet长轮询那样有许多的连接,也没有Comet流所具有的一些缺点,它的API也很容易使用,无需另外的层就可以直接使用,能够更好地实现客户端与服务器之间的数据传输,传输速度快、传输稳定,传输过程中不易发生传输数据丢失的现象;采用包传输的方式,传输稳定,能够提高传输效率。
附图说明
图1为本发明的数据包发送和接收流程图。
具体实施方式
下面结合附图进一步说明本发明的技术方案,但本发明所保护的内容不局限于以下所述。
如图1所示,一种基于SOCKET的包驱动方法,它包括数据包的接收和数据包的传输,所述的数据包的接收包括以下子步骤:
S101:建立连接:客户端与IOCP建立连接,IOCP绑定完成端口;
S102:发送请求:SOCKET封装类向IOCP发送读取数据的请求;
S103:发送数据:客户端向IOCP发送数据,IOCP读取数据并返回;
S104:判断包是否完成:IOCP判断数据是否是完成的包,并将完成的包发送至SOCKET封装类;
S105:调用应用层业务:SOCKET封装类组成包对象,并调用应用层业务;
S106:应用层进入队列:应用层进入队列,并返回SOCKET封装类;
S107:读取数据包:SOCKET封装类向IOCP读取数据包;
所述的数据包的传输包括以下子步骤:
S201:发送写入数据请求:应用层向SOCKET封装类发送写入数据业务请求;
S202:写入数据:SOCKET封装类向IOCP写入数据;
S203:写数据完成:IOCP完成数据写入后向SOCKET封装类返回写数据完成信息;
S204:计算发送是否完成:SOCKET封装类计算发送是否完成,若发送未完成,则继续向IOCP写入数据,IOCP完成数据写入后再向SOCKET封装类返回写数据完成信号;
S205:完成写数据:SOCKET封装类计算发送完成,写数据完成;
S206:SOCKET封装类向IOCP读取数据。
Claims (1)
1.一种基于SOCKET的包驱动方法,其特征在于:它包括数据包的接收和数据包的传输,其中,所述的数据包的接收包括以下子步骤:
S101:建立连接:客户端与IOCP建立连接,IOCP绑定完成端口;
S102:发送请求:SOCKET封装类向IOCP发送读取数据的请求;
S103:发送数据:客户端向IOCP发送数据,IOCP读取数据并返回;
S104:判断包是否完成:IOCP判断数据是否是完成的包,并将完成的包发送至SOCKET封装类;
S105:调用应用层业务:SOCKET封装类组成包对象,并调用应用层业务;
S106:应用层进入队列:应用层进入队列,并返回SOCKET封装类;
S107:读取数据包:SOCKET封装类向IOCP读取数据包;
所述的数据包的传输包括以下子步骤:
S201:发送写入数据请求:应用层向SOCKET封装类发送写入数据业务请求;
S202:写入数据:SOCKET封装类向IOCP写入数据;
S203:写数据完成:IOCP完成数据写入后向SOCKET封装类返回写数据完成信息;
S204:计算发送是否完成:SOCKET封装类计算发送是否完成,若发送未完成,则继续向IOCP写入数据,IOCP完成数据写入后再向SOCKET封装类返回写数据完成信号;
S205:完成写数据:SOCKET封装类计算发送完成,写数据完成;
S206:SOCKET封装类向IOCP读取数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310079780.9A CN103312688B (zh) | 2013-03-13 | 2013-03-13 | 一种基于socket的包驱动方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310079780.9A CN103312688B (zh) | 2013-03-13 | 2013-03-13 | 一种基于socket的包驱动方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103312688A CN103312688A (zh) | 2013-09-18 |
CN103312688B true CN103312688B (zh) | 2015-11-18 |
Family
ID=49137473
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310079780.9A Active CN103312688B (zh) | 2013-03-13 | 2013-03-13 | 一种基于socket的包驱动方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103312688B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103973694B (zh) * | 2014-05-14 | 2017-05-10 | 北京太一星晨信息技术有限公司 | 安全套接层协议实体访问非连续内存的方法及接口装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102571578A (zh) * | 2011-12-31 | 2012-07-11 | 青岛海尔软件有限公司 | 一种采用完全端口技术实现50万用户在线通讯的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1109374A3 (de) * | 1999-12-13 | 2001-06-27 | TELEFONAKTIEBOLAGET LM ERICSSON (publ) | Verfahren und Vorrichtung zur Durchführung von Netzwerkoperationen |
-
2013
- 2013-03-13 CN CN201310079780.9A patent/CN103312688B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102571578A (zh) * | 2011-12-31 | 2012-07-11 | 青岛海尔软件有限公司 | 一种采用完全端口技术实现50万用户在线通讯的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103312688A (zh) | 2013-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101867572B (zh) | 无线优盘的实现方法及系统 | |
WO2005089139A2 (en) | Remote usb port system and method | |
RU2007136297A (ru) | Способ и система для обеспечения мобильных точек доступа бемпроводной связи | |
CN104486327B (zh) | 页面与长连接服务器间的通信方法及客户端 | |
CN103051716A (zh) | 一种面向网络的串口设备重定向的方法及系统 | |
CN101801062A (zh) | 移动终端及该移动终端访问网络的方法 | |
JP2014123363A5 (zh) | ||
CN103312688B (zh) | 一种基于socket的包驱动方法 | |
CN101557354A (zh) | 一种在在线客服中发送图片的方法 | |
CN105392155A (zh) | 适用于移动网系仿真的虚实互联网关及其实现仿真的方法 | |
CN105430665B (zh) | 实现多网混合规模组网的方法及系统 | |
CN102281559B (zh) | 多数据卡进行ftp业务测试无线网络ps性能的方法及装置 | |
CN103501343A (zh) | 加快网页打开以及在网页中插入缓存页面内容的方法 | |
US20120140913A1 (en) | Telephone relaying apparatus, telephone relaying method, and program | |
CN102811149B (zh) | 一种用于视频系统中的双卡前端设备及控制方法、系统 | |
CN203027289U (zh) | 一种实现计算机、上位机和下位机之间串口通信的系统 | |
US20120063584A1 (en) | Telephone relaying apparatus, telephone relaying method, and program | |
CN103605594B (zh) | 终端基础功能调用方法及装置 | |
CN106254396A (zh) | 私有协议信息传输系统与方法 | |
CN104994116A (zh) | 多屏统一通信的方法、装置和系统 | |
CN101965066B (zh) | 一种获取业务信息的方法、装置及系统 | |
CN104639605A (zh) | 一种自动为社会化通信软件自动增加好友的系统、装置和方法 | |
US20130122896A1 (en) | Method and device for providing communication to user equipment | |
KR100975865B1 (ko) | 게이트웨이서버와 전화번호를 이용한 통신로 개설방법 | |
WO2014183525A1 (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 |