Component之FTP

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,诸多命令可代替.

原文发布于微信公众号 - 这里只有VxWorks(VxWorks567)

原文发表时间:2019-03-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券