CN103312688A - 一种基于socket的包驱动方法 - Google Patents
一种基于socket的包驱动方法 Download PDFInfo
- Publication number
- CN103312688A CN103312688A CN2013100797809A CN201310079780A CN103312688A CN 103312688 A CN103312688 A CN 103312688A CN 2013100797809 A CN2013100797809 A CN 2013100797809A CN 201310079780 A CN201310079780 A CN 201310079780A CN 103312688 A CN103312688 A CN 103312688A
- Authority
- CN
- China
- Prior art keywords
- data
- socket
- iocp
- encapsulation class
- packet
- 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
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明了公开了一种基于SOCKET的包驱动方法,它包括数据包的接收和数据包的传输两个步骤,所述的数据包的接收包括SOCKET的初始化与读,包括以下子步骤:建立连接、发送请求、发送数据、判断包是否完成、调用应用层业务、应用层进入队列、读取数据包;数据包的发送包括SOCKET的数据包的写过程,包括以下子步骤:发送写入数据请求、写入数据、写数据完成、计算发送是否完成、完成写数据。本发明SOCKET模型的初始化读与写方法低延迟、易于处理错误,API也很容易使用,无需另外的层就可以直接使用,能够更好地实现客户端与服务器之间的数据传输,传输速度快、传输稳定,不易发生传输数据丢失的现象。
Description
技术领域
本发明涉及一种基于SOCKET的包驱动方法。
背景技术
Socket的英文原义是“孔”或“插座”,作为4BDS UNIX的进程通信机制,取后一种意思,通常也称作"套接字",用于描述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 true CN103312688A (zh) | 2013-09-18 |
CN103312688B 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) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103973694A (zh) * | 2014-05-14 | 2014-08-06 | 北京太一星晨信息技术有限公司 | 安全套接层协议实体访问非连续内存的方法及接口装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010021183A1 (en) * | 1999-12-13 | 2001-09-13 | Stephan Baucke | Method and device for a fast performance of network operations |
CN102571578A (zh) * | 2011-12-31 | 2012-07-11 | 青岛海尔软件有限公司 | 一种采用完全端口技术实现50万用户在线通讯的方法 |
-
2013
- 2013-03-13 CN CN201310079780.9A patent/CN103312688B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010021183A1 (en) * | 1999-12-13 | 2001-09-13 | Stephan Baucke | Method and device for a fast performance of network operations |
CN102571578A (zh) * | 2011-12-31 | 2012-07-11 | 青岛海尔软件有限公司 | 一种采用完全端口技术实现50万用户在线通讯的方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103973694A (zh) * | 2014-05-14 | 2014-08-06 | 北京太一星晨信息技术有限公司 | 安全套接层协议实体访问非连续内存的方法及接口装置 |
CN103973694B (zh) * | 2014-05-14 | 2017-05-10 | 北京太一星晨信息技术有限公司 | 安全套接层协议实体访问非连续内存的方法及接口装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103312688B (zh) | 2015-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109246671A (zh) | 数据传输方法、装置及系统 | |
CN102232291B (zh) | 一种通信的方法、系统及装置 | |
CN108933871B (zh) | 呼叫中心呼入话务路由方法、装置及系统 | |
CN101867572B (zh) | 无线优盘的实现方法及系统 | |
CN206807569U (zh) | 软电话装置 | |
RU2007136297A (ru) | Способ и система для обеспечения мобильных точек доступа бемпроводной связи | |
CN108494817A (zh) | 数据传输方法、相关装置及系统 | |
CN103650458A (zh) | 媒体流的传输方法、装置与系统 | |
CN104283760A (zh) | 一种WebRTC通信方法、相关设备及系统 | |
CN101005411B (zh) | 电路型数据业务自动化测试系统、装置及方法 | |
CN102438331B (zh) | 一种移动终端通过手机上网的方法及系统 | |
CN101801062A (zh) | 移动终端及该移动终端访问网络的方法 | |
CN105188041B (zh) | 基于固定电话的呼叫转移方法及家庭网关 | |
CN101969454A (zh) | 移动终端实现与计算机的数据传输方法、系统及移动终端 | |
US9749828B2 (en) | Communication system and method for making telephone calls over the internet | |
CN105120524A (zh) | 一种建立通信连接的方法和电子设备 | |
CN103312688A (zh) | 一种基于socket的包驱动方法 | |
CN104703291A (zh) | 一种基于MiFi的通信方法及相关MiFi | |
US20120140913A1 (en) | Telephone relaying apparatus, telephone relaying method, and program | |
CN103888923A (zh) | 应用于虚拟专用移动网的呼叫接续方法、系统及装置 | |
CN103139209B (zh) | 媒体码流获取方法、unisaf服务器及软交换通信系统 | |
US8705717B2 (en) | Telephone relaying apparatus, telephone relaying method, and program | |
CN108718325A (zh) | 基于动态注册的电话外呼方法、系统、设备及存储介质 | |
CN104079728A (zh) | 号码显示的方法及装置 | |
CN104994116A (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 |