uip的ftp在单片机stm32上的实现客户端
原因
在集中器终端和专变终端的实际应用中,经常会使用远程升级。在某些地方,用户要求采用FTP进行远程升级。将终端厂家的升级文件放在一个FTP服务器上,命令终端登录FTP服务器,通过get命令获取升级文件进行升级。这样,终端需要实现FTP客户端。并且可以实现远程操作和传输。
原理
我们知道,FTP是一种文件传输协议,在网络中属于应用层,基于TCP协议实现。而uip协议可以基于TCP链接进行传输,方法可行。
登陆FTP服务器
与Telnet类似,会用FTP服务器之前,要先登陆。客户端发起一个TCP连接,目标端口号是FTP服务器的命令侦听端口,一般是21,也有例外。当连接成功后,服务器首先会发送欢迎信息,例如:“220-Microsoft FTP Service<CRLF>”和“220 FTP OF LEOGON_BOOK<
CRLF >”。FTP服务器的响应都是以3个表示数字的字母开头,表示响应信息的代码,接着是一个空格或‘-’字符,最后是响应的信息内容。响应信息代码是标准定义的,代表了特定的含义,响应信息的内容是提供给人工阅读的,不同的FTP服务器可能会有不同的信息内容表达方法,但是信息代码是含义是明确的。响应信息代码后面如果是空格,表示响应信息就只有一行或是最后一行,如果是‘-’,则表示有多行。因此,如果欢迎信息只有第2行的话,我们也应该认为可以继续了。
收到FTP的欢迎信息后,就可以登陆了。首先是发送用户名命令,使用“USER <username><CRLF>”命令。服务器返回“331 <username> access allowed, send identity (e-mail name) as password”,表示希望用户继续输入密码。接着发送密码命令,使用“PASS <password><CRLF>”命令,服务器返回类似“230-Welcome to FTP site of LEOGON-BOOK!<CRLF>”和“230 Anonymous user logged in<CRLF>”这两行(这是我Windows XP上的FTP服务器的响应信息,我认为某些服务器可能是返回一行,我们的程序只要能识别最后一行就可以了),这样,登陆完成。如果密码错误,服务器将返回“530”代码,如果想重试,必须从用户名命令开始。
这种方案可以在stm32上实现,再花几十块钱就可以实现远程操作了,此种方案可以应用于个人的智能家居监测控制系统,上传图片,控制家里的家居,只要有自己的服务器就可以搞定,当然加一个域名去访问更完美了
参考资料下载 密码:y4ub