CN102137101A - 一种基于SCTP的嵌入式Linux***数据传输的方法及*** - Google Patents
一种基于SCTP的嵌入式Linux***数据传输的方法及*** Download PDFInfo
- Publication number
- CN102137101A CN102137101A CN2011100527285A CN201110052728A CN102137101A CN 102137101 A CN102137101 A CN 102137101A CN 2011100527285 A CN2011100527285 A CN 2011100527285A CN 201110052728 A CN201110052728 A CN 201110052728A CN 102137101 A CN102137101 A CN 102137101A
- Authority
- CN
- China
- Prior art keywords
- sctp
- file
- customer end
- data
- ftp server
- 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
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种基于SCTP的嵌入式Linux***数据传输的方法。本发明的方法包括:将SCTP开发库移植到嵌入式Linux开发环境中;建立SCTP文件传输服务器,等待SCTP文件传输客户端连接到来;建立SCTP文件传输客户端,连接到SCTP文件传输服务器;根据用户需求,SCTP文件传输客户端和SCTP文件传输服务器端进行文件传输的交互。同时,本发明还公开了一种基于SCTP的嵌入式Linux***数据传输的***。通过本发明技术方案能够解决嵌入式Linux***传输大容量文件时产生的头端阻塞的问题。
Description
技术领域
本发明涉及嵌入式数据传输技术领域,具体涉及一种基于SCTP的嵌入式Linux***数据传输的方法及***。
背景技术
介于应用层和网络层之间的传输层是分层网络体系结构的重心部分。它的重要任务就是直接给运行在不同主机上的应用程序提供通信服务,在最近的20年里,绝大多数的网络结构都是基于TCP和UDP协议的。然而,计算机网络的快速发展使得TCP和UDP在某些方面已经不能适应网络发展的需要,因此IETF将SCTP修订成为传输层标准协议的一部分。
在使用TCP进行传输大容量文件的时候可能会产生严重的错误,当TCP传输一个文件的时候,它将产生一个字节流连接,字节流意味着将数据拆分成若干字节并且不用了解这些字节的内容而直接传输,在应用层消息和数据是截然不同的。因此,当程序用TCP传输某个数据的时候却收到了另外一个程序的数据,它的扇区将会收到干扰,因为数据被分成了字节然后就立即传输了。另外字节流通信会带来头端阻塞的问题。
为了解决上述问题,可以为一个应用程序数据分配一条连接,但是太多的连接会导致服务器超载,利用SCTP协议传输能很好的解决这些问题。当在传输的过程中有一个包丢失的时候,利用SCTP基于流传输的特性,其他的流无需等待丢失包完成重传,可以无延时地继续传输。另外,利用SCTP的多流传输能提高传输速度。
发明内容
本发明提供一种基于SCTP的嵌入式Linux***数据传输的方法及***,能够为嵌入式***提供高速数据传输的能力。
本发明提供一种基于SCTP的嵌入式Linux***数据传输的方法,包括:
步骤1:将SCTP开发库移植到嵌入式Linux开发环境中;
步骤2:建立SCTP文件传输服务器,等待SCTP文件传输客户端连接到来;
步骤3:建立SCTP文件传输客户端,连接到SCTP文件传输服务器;
步骤4:根据用户需求,SCTP文件传输客户端和SCTP文件传输服务器端进行文件传输的交互。
同时,本发明还提供了一种基于SCTP的嵌入式Linux***数据传输的***,其特征在于,该***包括以下单元:SCTP文件传输客户端单元,SCTP文件传输服务器单元;
所述SCTP文件传输客户端单元,用户可以通过SCTP文件传输客户端单元上传或者下载SCTP文件传输服务器单元上的数据;
所述SCTP文件传输服务器单元管理和维护用户数据。
以上文件的传输通过传输层SCTP协议单元为嵌入式Linux操作***提供SCTP协议支持。
上述技术方案可以看出,本发明具有以下有益效果:
1.本发明可以为嵌入式Linux***提供有别于TCP和UDP的传输层协议。
2.本发明可以解决嵌入式Linux***传输大容量文件时产生的头端阻塞的问题。
3.本发明可以在不增加***负载的情况下提高嵌入式Linux***传输大容量文件的速度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本发明整体结构图;
图2是本发明方法流程图;
图3是SCTP开发库移植流程图;
图4为SCTP文件传输服务器建立流程图
图5为SCTP文件传输客户端建立流程图
图6为SCTP文件传输客户端与SCTP文件传输服务器交互流程图
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明实施例提供一种基于SCTP的嵌入式Linux***数据传输的方法,能够为嵌入式Linux***提供高速数据传输的能力。以下分别进行详细说明。
图1为本发明整体结构图
如图1所示,本发明主要包括以下单元:SCTP文件传输客户端单元,SCTP文件传输服务器单元;
所述SCTP文件传输客户端单元,用户可以通过SCTP文件传输客户端单元上传或者下载SCTP文件传输服务器单元上的数据;
所述SCTP文件传输服务器单元管理和维护用户数据;
以上文件的传输通过传输层SCTP协议单元为嵌入式Linux操作***提供SCTP协议支持。
图2为本发明所述方法流程图
如图2所示,包括步骤:
步骤1:将SCTP开发库移植到嵌入式Linux开发环境中。
步骤2:建立SCTP文件传输服务器,等待SCTP文件传输客户端连接到来。
步骤3:建立SCTP文件传输客户端,连接到SCTP文件传输服务器。
步骤4:根据用户需求,SCTP文件传输客户端和SCTP文件传输服务器端进行文件传输的交互。
图3为SCTP开发库移植流程图
大部分交叉工具包都不包含SCTP开发库,需要对SCTP开发库进行交叉编译,得到符合嵌入式CPU架构的SCTP开发库。
步骤11:获取lksctp源码。
步骤12:配置lksctp源码,配置选项为./confgure-prefix=/opt/sctp-build=i386-host=arm CC=arm-linux-gcc,其中CC选项根据CPU架构来选择,也可能是mipsel-linux-gcc之类。
步骤13:编译lksctp源码,make&&make install。
步骤14:将/opt/sctp下的include和lib文件夹下的文件拷贝到交叉工具包对应的目录下。
图4为SCTP文件传输服务器建立流程图
Sctp服务器中存储数据,用户可以选择上传或者下载。
步骤21:建立SCTP套接字,sock_fd=socket(AF_INET,SOCK_SEQPACKET,IPPROTO_SCTP);
步骤22:绑定地址和端口到SCTP套接字,地址为任意地址,即任意地址可以访问服务器,端口人为约定,尽量不使用Linux服务占用的端口;
步骤23:设置所感兴趣的通知,通过通知,服务器可以得到到来的信息是通过哪个流传输的,设置方法为:
events.sctp_data_io_event=1;
setsockopt(sock_fd,IPPROTO_SCTP,SCTP_EVENTS,&events,sizeof(events));
步骤24:监听到来的连接,Listen(sock_fd,2048),2048为允许的连接数。
步骤25:与客户端进行交互。
图5为SCTP文件传输客户端建立流程图
步骤31:建立SCTP套接字,
sock_fd=socket(AF_INET,SOCK_SEQPACKET,IPPROTO_SCTP)
步骤32:设置所需要连接的服务器的IP地址和端口。
步骤33:设置所感兴趣的通知,通过通知,客户端可以得到到来的信息是通过哪个流传输的,设置方法为:
events.sctp_data_io_event=1;
setsockopt(sock_fd,IPPROTO_SCTP,SCTP_EVENTS,&events,sizeof(events));
步骤34:与服务器进行交互。
步骤35:关闭套接字并结束客户端程序。
图6为SCTP文件传输客户端与SCTP文件传输服务器交互流程图
使用TCP传送多个文件模式:客户端一旦和服务器建立连接便向服务器发送获取第一个文件的请求,服务器建立一个子进程,这个子进程接管与客户端通信的工作。当客户端成功的接收完第一个文件的时候,开始用流水线的方式请求剩下的多个文件,服务器上的子进程接受到这些请求并一个接一个地将请求文件发送给客户端。客户端以流水线的方式请求多个文件提高了效率,因为服务器不用发送完一个文件后去等待新的请求的到来,所有的文件传输都通过一个简单的TCP连接。通过SCTP传输多个文件的方式和TCP的完全不同,每个文件将通过单独的流进行传输,这些流互不干扰,不会因为前一个文件的传送失败而影响后续的传输,避免TCP带来的头端阻塞的问题。虽然SCTP利用多流进行传输,但是并不需要为每个流创建一个子进程,这些流都属于一个SCTP连接,既提高了传输速度,又没有增加服务器负载。
步骤41:SCTP文件传输客户端要获取SCTP文件传输服务器上某个大容量文件,发送获取该文件请求。
步骤42:SCTP文件传输服务器接收到SCTP文件传输客户端获取文件请求,创建一个子进程,此子进程接管与SCTP文件传输客户端的通信工作。
步骤43:SCTP文件传输服务器将请求文件进行拆分,拆分的策略由SCTP文件传输服务器决定,但是应遵循原则:一般越大的文件需要拆分的份数越多。
步骤44:SCTP文件传输服务器将拆分的文件份数通知给SCTP文件传输客户端。
步骤45:SCTP文件传输服务器将拆分的文件分别用不同的流传输给SCTP文件传输客户端,SCTP服务器端发送数据代码为:sctp_sendmsg(connSock,(void*)buffer(size_t)strlen(buffer),NULL,0,0,0,NUM0,0,0);其中NUM0定义:#define NUM00;表示使用流0传送buffer数据。同理,利用其它流发送数据只需要修改流号和需要发送的数据。
步骤46:SCTP文件传输客户端开始接收服务器发送过来的数据,SCTP文件传输客户端接收数据代码为:sctp_recvmsg(connSock,(void*)buffer,sizeof(buffer),(struct sockaddr*)NULL,0,&sndrcvinfo,&flags);其中sndrcvinfo.sinfo_stream指明了这份数据是通过哪个流传传输的。根据SCTP文件传输服务器发送过来的拆分文件份数,SCTP文件传输客户端一共需要接收拆分文件份数的次数。
步骤47:SCTP文件传输客户端接收完所有的文件后,开始对文件按流序号重组,文件传送完毕。
需要说明的是,上述装置和***内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁盘或光盘等。
以上对本发明实施例所提供的一种嵌入式***高性能数据传输的方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (6)
1.一种基于SCTP的嵌入式Linux***数据传输的方法,其特征在于,包括:步骤1:将SCTP开发库移植到嵌入式Linux开发环境中;
步骤2:建立SCTP文件传输服务器,等待SCTP文件传输客户端连接到来;
步骤3:建立SCTP文件传输客户端,连接到SCTP文件传输服务器;
步骤4:根据用户需求,SCTP文件传输客户端和SCTP文件传输服务器端进行文件传输的交互。
2.根据权利要求1所述的方法,其特征在于,大部分交叉工具包都不包含SCTP开发库,需要对SCTP开发库进行交叉编译,得到符合嵌入式CPU架构的SCTP开发库;步骤1的具体操作流程如下:
步骤11:获取lksctp源码;
步骤12:配置lksctp源码,配置选项为./configure-prefix=/opt/sctp-build=i386-host=arm CC=arm-linux-gcc,其中CC选项根据CPU架构来选择,也可能是mipsel-linux-gcc之类;
步骤13:编译lksctp源码,make&&make install;
步骤14:将/opt/sctp下的include和lib文件夹下的文件拷贝到交叉工具包对应的目录下。
3.根据权利要求1所述的方法,其特征在于,步骤2的具体流程如下:
步骤21:建立SCTP套接字,sock_fd=socket(AF_INET,SOCK_SEQPACKET,IPPROTO_SCTP);
步骤22:绑定地址和端口到SCTP套接字,地址为任意地址,即任意地址可以访问服务器,端口人为约定,尽量不使用Linux服务占用的端口;
步骤23:设置所感兴趣的通知,通过通知,服务器可以得到到来的信息是通过哪个流传输的,设置方法为:
events.sctp_data_io_event=1;
setsockopt(sock_fd,IPPROTO_SCTP,SCTP_EVENTS,&events,sizeof(events));
步骤24:监听到来的连接,Listen(sock_fd,2048),2048为允许的连接数;
步骤25:与客户端进行交互。
4.根据权利要求1所述的方法,其特征在于,步骤3的具体流程如下:
步骤31:建立SCTP套接字,
sock_fd=socket(AF_INET,SOCK_SEQPACKET,IPPROTO_SCTP);
步骤32:设置所需要连接的服务器的IP地址和端口;
步骤33:设置所感兴趣的通知,通过通知,客户端可以得到到来的信息是通过哪个流传输的,设置方法为:
events.sctp_data_io_event=1;
setsockopt(sock_fd,IPPROTO_SCTP,SCTP_EVENTS,&events,sizeof(events));
步骤34:与服务器进行交互;
步骤35:关闭套接字并结束客户端程序。
5.根据权利要求1所述的方法,其特征在于,步骤4的具体流程如下:
步骤41:SCTP文件传输客户端要获取SCTP文件传输服务器上某个大容量文件,发送获取该文件请求;
步骤42:SCTP文件传输服务器接收到SCTP文件传输客户端获取文件请求,创建一个子进程,此子进程接管与SCTP文件传输客户端的通信工作;
步骤43:SCTP文件传输服务器将请求文件进行拆分,拆分的策略由SCTP文件传输服务器决定,但是应遵循原则:一般越大的文件需要拆分的份数越多;
步骤44:SCTP文件传输服务器将拆分的文件份数通知给SCTP文件传输客户端;
步骤45:SCTP文件传输服务器将拆分的文件分别用不同的流传输给SCTP文件传输客户端,SCTP服务器端发送数据代码为:sctp_sendmsg(connSock,(void*)buffer,(size_t)strlen(buffer),NULL,0,0,0,NUM0,0,0);其中NUM0定义:#define NUM00;表示使用流0传送buffer数据;同理,利用其它流发送数据只需要修改流号和需要发送的数据;
步骤46:SCTP文件传输客户端开始接收服务器发送过来的数据,SCTP文件传输客户端接收数据代码为:sctp_recvmsg(connSock,(void*)buffer,sizeof(buffer),(struct sockaddr*)NULL,0,&sndrcvinfo,&flags);其中sndrcvinfo.sinfo_stream指明了这份数据是通过哪个流传传输的;根据SCTP文件传输服务器发送过来的拆分文件份数,SCTP文件传输客户端一共需要接收拆分文件份数的次数;
步骤47:SCTP文件传输客户端接收完所有的文件后,开始对文件按流序号重组,文件传送完毕。
6.一种基于SCTP的嵌入式Linux***数据传输的***,其特征在于,该***包括以下单元:SCTP文件传输客户端单元,SCTP文件传输服务器单元;
所述SCTP文件传输客户端单元,用户可以通过SCTP文件传输客户端单元上传或者下载SCTP文件传输服务器单元上的数据;
所述SCTP文件传输服务器单元管理和维护用户数据;
以上文件的传输通过传输层SCTP协议单元为嵌入式Linux操作***提供SCTP协议支持。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011100527285A CN102137101A (zh) | 2011-03-04 | 2011-03-04 | 一种基于SCTP的嵌入式Linux***数据传输的方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011100527285A CN102137101A (zh) | 2011-03-04 | 2011-03-04 | 一种基于SCTP的嵌入式Linux***数据传输的方法及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102137101A true CN102137101A (zh) | 2011-07-27 |
Family
ID=44296756
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011100527285A Pending CN102137101A (zh) | 2011-03-04 | 2011-03-04 | 一种基于SCTP的嵌入式Linux***数据传输的方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102137101A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016206381A1 (zh) * | 2015-06-26 | 2016-12-29 | 中兴通讯股份有限公司 | 文件处理方法及装置 |
CN106301959A (zh) * | 2016-10-10 | 2017-01-04 | 烽火通信科技股份有限公司 | 基于windows和linux平台的网关批量升级方法及*** |
CN108376074A (zh) * | 2016-11-28 | 2018-08-07 | 中国科学院声学研究所 | 一种基于嵌入式***的RancherOS ros核心模块移植方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101841463A (zh) * | 2010-03-05 | 2010-09-22 | 清华大学 | 基于sctp的多路径并发传输方法 |
EP1872534B1 (en) * | 2005-04-18 | 2010-09-29 | Research In Motion Limited | System and method of message traffic optimization |
-
2011
- 2011-03-04 CN CN2011100527285A patent/CN102137101A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1872534B1 (en) * | 2005-04-18 | 2010-09-29 | Research In Motion Limited | System and method of message traffic optimization |
CN101841463A (zh) * | 2010-03-05 | 2010-09-22 | 清华大学 | 基于sctp的多路径并发传输方法 |
Non-Patent Citations (1)
Title |
---|
冉春玉等: "基于SCTP客户端/服务器的设计与实现", 《计算机技术与发展》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016206381A1 (zh) * | 2015-06-26 | 2016-12-29 | 中兴通讯股份有限公司 | 文件处理方法及装置 |
CN106301959A (zh) * | 2016-10-10 | 2017-01-04 | 烽火通信科技股份有限公司 | 基于windows和linux平台的网关批量升级方法及*** |
CN108376074A (zh) * | 2016-11-28 | 2018-08-07 | 中国科学院声学研究所 | 一种基于嵌入式***的RancherOS ros核心模块移植方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1303096B1 (en) | Virtual network with adaptive dispatcher | |
Al-Jaroodi et al. | DDFTP: dual-direction FTP | |
Mohamed et al. | A dual-direction technique for fast file downloads with dynamic load balancing in the cloud | |
WO2022148363A1 (zh) | 数据传输方法及数据传输服务器 | |
WO2014052099A2 (en) | Load distribution in data networks | |
TW201215043A (en) | Method and system for offloading tunnel packet processing in cloud computing | |
US10362120B2 (en) | Distributed gateways with centralized data center for high throughput satellite (HTS) spot beam network | |
CN102546839B (zh) | 面向大规模网络的高效、可靠的软件分发方法 | |
CN102244645A (zh) | 一种基于udp协议的可靠,透明,通用加速网关*** | |
WO2024037296A1 (zh) | 基于协议族的quic数据传输方法及装置 | |
AU2014200239A1 (en) | System and method for multiple sender support in low latency fifo messaging using rdma | |
CN102137101A (zh) | 一种基于SCTP的嵌入式Linux***数据传输的方法及*** | |
Kissel et al. | Phoebus: A system for high throughput data movement | |
WO2024125106A1 (zh) | 数据传输方法、装置、设备及存储介质 | |
JP5945543B2 (ja) | ミドルウェアマシン環境を含むシステム | |
US9141564B1 (en) | Interconnection of peripheral devices on different electronic devices | |
KR100700717B1 (ko) | 컨텐트 구분에 의한 전송시스템의 클러스터링 장치 및 방법 | |
CN102845042A (zh) | 一种应用层多个活动物理接口的带宽聚集***及方法 | |
US8214851B2 (en) | API interface to make dispatch tables to match API routines | |
US11106359B1 (en) | Interconnection of peripheral devices on different electronic devices | |
de Carvalho Junior et al. | Computer Music through the Cloud: Evaluating a Cloud Service for Collaborative Computer Music Applications. | |
CN116760504B (zh) | 会话同步方法、装置、服务节点、终端及可读存储介质 | |
WO2023103097A1 (zh) | 基于多Agent代理的海量数据平滑调度***、方法及介质 | |
WO2023238284A1 (ja) | 管理システム、管理方法、及び、管理プログラム | |
Ananthanarayanan et al. | Enabling innovation below the communication api |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
DD01 | Delivery of document by public notice |
Addressee: Zhongshan Zhongheng Digital Technology Co., Ltd. Document name: the First Notification of an Office Action |
|
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20110727 |