您好,欢迎来到九壹网。
搜索
您的当前位置:首页嵌入式系统中FTP开发应用

嵌入式系统中FTP开发应用

来源:九壹网
第1期 电光系统 No.1 2011年o3月 Electronic and Electro-optical Systems Mar.20l1 嵌入式系统中FTP开发应用 王艺。韩树科,谢安 中国电子科技集团公司第二十七研究所,郑州450047 摘要:文章以利用丌1P在嵌入式系统间进行文件传输为目的,简要介绍了FTrP工作原理, 讨论了在DSP和VxWorks系统下基于套接字网络编程开发兀’P服务端及客户端的方法,利 用该方法的FTI.P软件已在某嵌入式管理系统中投入使用,工作正常。 关键词:FTP;嵌入式系统;DSP;VxWorks 中图分类号:TP311.5 文献标识码:A Development and Application of FTP in Embedded System WANG Yi.HAN Shu.ke.×lE An f弛e 27 Research Institute of China Electronics TechnoloKy Group Corporation。Z engzhou 47。C ina) Abstract:For the purpose of using FTP to transfer file in embedded system.this article briefly introduces the working principle of FTP.discusses the method for developing FTP server and client based on network program— uring with sockets in DSP and VxWorks systems.The FTP software with this method has been deployed in a em. bedded management system and is running normally. Key words:FTP;Embedded System;DSP;VxWorks 的TCP端口21建立监听,等待客户端连接,客户 1 引言 端主动连接到服务端TCP端口21,建立控制连 接。控制连接始终等待客户与服务端之间的通 gl'P是用于文件传输的互联网标准协议,广 信,该连接将命令从客户传给服务端,并传回服务 泛应用于不同主机甚至不同系统之间进行文件传 端的应答。_l 输。该协议在常用操作系统中已有很多成熟可靠 (2)当需要进行文件数据传输时,客户端与服 的应用软件,但在DSP,VxWorks等资源有限的嵌 务端之间建立TCP数据连接。数据连接的建立根 入式系统下,经常需要开发人员基于基本的套接 据连接方向可分为主动(PORT)和被动(PASV)两 字编程自行设计。本文基于fvrP协议原理,从 种方式。由客户端开放自己的数据端口,让服务 FTrP命令及应答、通信设计流程等方面介绍FTP 端主动连接到客户端时是PORT方式;由服务端 服务端和客户端的设计原理,并介绍在嵌入式产 开放自己的数据端口,被动接收客户端的连接时 品中的应用。 是PASV方式。数据连接用来在服务端和客户端 之间传送文件或文件列表,数据发送结束后,通常 2 FTP协议简介 以关闭数据连接作为文件发送结束的标志。因此 需要时建立数据连接,结束后及时关闭连接,下次 2.1通信连接概述 文件传送重新建立数据连接。 FrP采用S/C模式即“服务端一客户端”模 2.2 FI'P命令与应答 式,利用两个TCP连接来实现文件传输——控制 在进行FTP文件控制和传输时,客户端应按 连接与数据连接。控制连接负责传输命令和应 照规范向服务端发送命令,并从服务端接收该命 答,数据连接负责文件数据传输。 令的应答以了解命令完成情况,进行进一步操作。 (1)控制连接的建立:服务端首先在兀’P专用 客户命令和应答在控制连接上以ASCII码形 作者简介:王艺(1983一),男,助理工程师,毕业于信息工程大学信息工程学院,研究方向:计算机科学与技术。 总第135期 王艺,等:嵌入式系统中FTP开发应用 39 式传送,并且要求在每行以CR,LF对结尾(即回 车、换行的ASCII码)。命令都是3个或4个字节 的大写ASCII字符,其中一些需要带选项参数。 服务端在收到客户端的命令后,必须返回对该命 令的应答,应答是ASCII码形式的3位数字应答代 码,并跟随报文选项。数字应答代码是客户端判 别命令完成情况的依据,具有统一的约定,而跟随 的报文选项是面向人工处理的描述性字符串,用 户可以通过阅读选项串来确定应答的含义,不必 记忆所有数字应答代码表示的意义 。如客户端 通过发送字符串“USER abc”来尝试使用用户名 abc登录服务端,服务端回复字符串“331 User name okay,need password.”表示用户名abc被允 许登录,但需要密码。 一些特殊的命令不仅需要客户端解析应答码 未理解服务端的进行状态,还要解析其后字符串 里特定内容。例如PASV命令发送给服务端后,服 务端应该开放一个数据端口,回送227并在随后 字符串里包含所开放的IP地址和端口,以括号包 围,形式如“(hl,h2,h3,h4,pl,p2)”,h1至h4是 IP地址的四个字节,p1,p2分别是端口的高字节 和低字节。例如: reply=“227 Entering Passive Mode(192,168, 0,100,10,20).\r\n” 回复该字符串即通知客户端连接到地址192. 168.0.100,端口10 256+20=2580以接收数据。 另外,需要注意的还有LIST命令的响应。该 命令要求服务端返回指定目录的文件列表,服务 端不但需要在控制连接上回复合适的应答代码, 而且要在数据连接上发送列表数据。列表数据以 ASCII码格式传输,列表内容包括9个字段,按照 一定格式,通常是“属性+用户数+用户名+工作 组+文件大小+月份+Et+年或时间+文件或目 录名”,每个字段之问有空格隔开,一个文件或目 录一行,每行以回车换行结束。 2.3典型的命令及应答流程示意 在客户端和服务端交互过程中,双方需要按 照一定的命令序列及应答来实现文件传输功能。 互联网标准协议里的RFC959里有详细规范,介绍 了各种命令及其不同应答代码。在设计FTrP服务 端或客户端时,不但要考虑命令成功解析或者实 现后如何操作,还要考虑各种失败后如何应答或 操作,以做到更好的兼容性。 如图1为一例简单的命令及应答交互流 程 。 客户端 服务端 匡李毫 萼圃 囱 臣巫 由三230 UseTloggedin<CRIJ'> [ 三 霉 ' I m叭一一l llI …… l 搂 件 I五5D …n。n r dy。P帅;tmnskr In;n <cRl > 数据琏接被关闭,文件结隶  226Cl ̄ing d山… n0n(CRI I文件传输结束,关闭数据连接 请求退出  IQUIT<CRI I返回府答,关闭控制连接,退出I ' 关闭莲接,退出 I2 sm,ice closin6…trol…ect…(c }> 图1 命令与应答交互示例 3 FTP设计流程及在嵌入式系统下 的设计应用 在任何支持TCP/IP协议栈和多线程的嵌入 式系统中,只要遵循丌P协议规范,利用基本的套 接字编程即可实现FvrP文件传输,命令和应答的 传递都是通过“创建TCP套接字(socket)、绑定到 指定端口(bind)、连接(connect)或监听(accept) 套接字、发送(send)或接收(recv)规范化的字符 串”等等标准的编程手段实现。按照上述FTP规 范编写的服务端和客户端分别在某系统网络电子 存储阵列及监控台管理系统软件中得以应用。 3.1服务端设计 某系统网络电子存储阵列是一套基于FLASH 阵列存储视频文件、DSP管理和控制视频文件存 储传输的设备,其中文件下载通过网络FTP接口 实现。该DSP管理系统硬件基于AD公司的DSP —BF537,其自带的微型内核系统VDK支持1wIP (轻型TCP/IP协议栈)和多线程,利用2~3个线 程即可设计出一个运行在DSP上的微型fTrP服务 端接口。 DSP下资源有限,FTP功能设计既要满足要求 又要尽量简洁高效。在本应用中,服务端通常需 要长时间处于开放和监听状态,因此至少需要2 电光系统 第1期 个线程,一个监听客户连接,收到连接请求后建立 新的线程进行客户处理,然后继续监听新连 接;一个专门处理客户命令。新连接受资源 不宜过多,可在服务端外部连接监听线程里控制 外部连接的数量,达到一定数量则禁止新用户的 连接。处理客户命令的线程在保证基本的文件传 输功能能够实现的基础上,尽量增强容错性和扩 展性,以适应外部不同系统、不同客户端的访问。 服务端创建和监听线程流程如图2所示。 图2服务端外部连接监听线程流程 在该系统网络存储阵列硬件条件下,由 于内部PPI数据传输不能被多线程同时复用,因 此连接为只接收同时有一路客户进行数据访 问下载,如果硬件条件允许则可以多用户同时访 问和下载,每个用户占用1个线程资源。 客户命令接收处理线程简要流程如图3所 示。 3.2客户端设计 在某系统监控台管理系统软件中,需要通过 FTP下载网络电子存储阵列里的视频文件。该系 统是VxWorks嵌入式操作系统,其开发软件本身 提供有简单的F_rP访问接口功能,但实用性和功 能性不强,不便程序员灵活控制。因此,重新封装 了FTP客户端各种控制命令接口,并在客户端文 件访问下载的具体应用中按照合理的时序灵活调 用需要的命令,控制管理系统安全有效地下载视 频文件。利用这些接口命令,监控台管理系统下 的FrP客户端模块不仅能够访问网络电子存储阵 列内的FTP服务端,而且同样能够访问其他多种 现有的商用兀1P服务端软件。 封装控制命令的方法: 刚开始进行n’P连接时的建立连接命令流程 如图4所示。 图3 客户命令接收和处理线程流程 图4建立连接的接口命令流程 获取列表的处理流程如图5所示。 其他命令如用户名命令、密码命令、下载命令 等等都是类似形式——将命令字符串发送给服务 端,再从服务端读取应答码,判断命令是否成功, 再进一步发送其他命令。 将各种需要用到的命令按步骤封装后,根据 具体应用按照顺序调用,来实现一次文件访问、下 载或者上传功能。例如,一次完整的列表查询、文 件下载命令处理流程可以如图6所示。 在实际应用中,针对DSP下的FrP服务端硬 件受限,不宜长时间占用连接资源的特点,在设计 总第135期 王艺,等:嵌入式系统中FTP开发应用 41 图5 PASV命令流程 ~ :::竺: ———一 —发送用户名和密码,是否成功?二=: ——~—~————一  ——-L Y N—— _ Y 解析根目录内容进行显示 _ —— ●Y 解析子目录内容,显示文件列表I - ———、————一 、 +Y厂: 退出服务端I+— ; 图6文件访问下载流程 客户端时刻意将获取文件列表、下载文件等主要 步骤分开操作,完成一次列表查询和解析后即退 出服务端,释放FTP连接,下次查询或下载时再次 重新连接服务端,下载一次文件后随即退出连接, 避免在fYrP连接期问有太多空闲时间。 3.3设计过程中关键技术解决 在上述产品相关的服务端客户端设计过程 中,经常出现因FTP连接和传输过程中阻塞、超时 等情况,造成系统功能异常。例如在服务端接受 了新客户连接,等待客户命令时,如果客户长时间 不发送操作命令也不进行退出动作,则该线程将 一直等待在这里;或者客户端连接服务端时,如果 服务端有异常不能及时响应,则connect函数可能 阻塞在这里无法返回。为了对阻塞和超时时间进 行严格控制,在服务端和客户端编程时灵活应用 套接字select功能机制,在FTP建立连接、接收命 令或应答、接收数据时,设定合适的套接字超时时 间,超过指定时间没有数据返回则强制退出或结 束,以此实现在合理时间内超时退出或中断,避免 线程阻死。在应用了超时机制后,服务端和客户 端的健壮性大大增强,且通过访问多种第三方 FrP服务端和客户端,验正了其兼容性和通用性, 不足的是由于硬件资源有限,文件下载速度等性 能瓶颈,但足以满足嵌入式系统下文件传输功能 要求。 4结束语 以上FYP服务端和客户端的设计方法在某系 统文件传输下载功能中使用正常,且通过访问多 种第三方FTP服务端和客户端,验证了其兼容性 和通用性,不足的是由于硬件资源有限,文件下载 速度等性能瓶颈,但足以满足嵌入式系统下文件 传输功能要求。对于其他没有现成FFP软件或接 口程序可用,需要利用基本的网络套接字编程来 实现FTP应用的开发人员,本文介绍的设计原理 同样有一定指导意义。 参考文献 [1]W.Richard Stevens.TCP/IP详解,卷1:协议[M].范建 华译,北京:机械土业出版社,2008. [2]J.Postel,J.Reynolds.File Transfer Protocol(FTP). RFC959,October 1985. 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务