File Transfer Protocol,文件传输协议,是一种应用层协议。
还记得TCP/IP模型和OSI模型吗^_^
FTP分两部分:Server和Client。 Server监听网络上其它设备(Client)的连接请求;Client连接到Server后,可以操作Server的文件,例如上传、下载、改名、删除等。VxWorks既支持Server,也支持Client。
一
先来看看FTP Server - INCLUDE_IPFTPS
首先找到VxWorks的一个存储设备
有个硬盘分区叫'/ata0:1',就用它了来存放FTP文件吧
包含FTP Server的组件 INCLUDE_IPFTPS,并指定参数 FTPS_INITIAL_DIR
编译并启动VxWorks,可以看到 FTP Server 启动了
先确认一下VxWorks的IP地址
在Windows端,登录这个Server试试
可以看到,不需要用户名和密码就登录成功了。
换个图形化的客户端工具试试,例如免费的FileZilla,也是没有问题的
安全起见,我们还是加上用户名和密码吧: INCLUDE_SECURITY
在VxWorks Development Shell 中,使用工具 vxencrypt 来转换密码
例如输入'password'作为密码明文,得到随机Salt值和哈希加密后的密码密文,将其填入对应的组件中
然后build-reboot,再试试
这次就得输入用户名和密码了
图形化工具也一样
然后可以试试上传、下载、改名、删除等操作。
二
接下来咱们看看VxWorks如何做为 Client 来访问其它设备的 Server。
包含了这个 INCLUDE_IPFTPC 组件后,在 VxWorks 中就可以调用相关的函数来进行FTP操作了,主要函数有两个:
ftpXfer() - 初始化FTP连接
ftpCommand() - 发送FTP命令,并接收返回的状态
常用的cmd有'RETR'和'STOR'。全部命令如下图
返回状态主要有
另外,还有一个 ftpReplyGet() 可以用来接收返回的状态,返回值与 ftpCommand() 也是一样的
咱们来试试VxWorks做为 FTP Client 下载文件
先在Windows端创建一个文件,例如 d:/software/a.txt,里面随便写点
看一下Windows的IP
Windows端启动一个 FTP Server,例如风河默认提供的WFTPD,设置 User Name、Password、Home Directory
启动VxWorks,先声明两个fd变量
使用函数ftpXfer()登录Windows的 FTP Sverver,并准备下载文件
ftpXfer()返回值为0,表示连接成功了。
分配一块内存,用于存放文件
使用read()下载文件,直到文件尾部,即read()返回0
然后使用ftpCommand()退出FTP连接,并关闭fd
返回值为2,就表示FTP_COMPLETE了
把'RETR'改为'STOR'就是上传文件了
可以看到Server端的文件被修改了
最后还有一个小惊喜:VxWorks的cmd命令行支持FTP操作了
INCLUDE_IPFTP_CMD
启动VxWorks后,先在VxWorks的当前目录里随便找一个文件
然后在VxWorks的CMD里进入FTP模式
运行help,可以看到CMD支持的所有FTP命令
用Windows的IP当参数,登录Windows的 FTP Server
试试下载文件
试试上传文件
怎么样,挺方便的吧
这正是:
文件传输有协议,英文就叫F T P.
如若当作服务器,用户登录可加密.
同时也是客户端,函数参数很齐全.
还有Shell CMD,诸多命令可代替.
我是泰山,专注VX14年!
联系客服