FTP客服端编程(ftp协议指令编程)
来源:互联网 发布:nginx 跨域访问配置 编辑:程序博客网 时间:2024/05/16 12:31
先上图
第一步应该做的就是搭建服务器,或者下载简易ftp服务器。如果不知道怎么在主机上搭建ftp服务器上篇文章中有详细解说。
ftp客户端的实现大致是这么几个流程:
ftp客户端需要两个tcpSocket,一个tcpSock负责给服务器发送指令、接受服务器的响应信息,另一个dataSock用来接收下载数据,或是接收服务器文件名列表数据
1.客户端使用tcpSock连接服务器。
ftp服务器IP为主机IP,指令端口号为21,通过ip和端口号可连接上ftp服务器
连接成功后ftp服务器会给客户端发送响应信息(这些信息存储在tcpSock中),补充说明tcpSock通过IP连接ftp服务器,在自己主机上搭建的ftp服务器IP地址都是主机地址
连接成功后具体的响应信息如下:
响应信息:"220 Microsoft FTP Service"
2.客户端通过账户、密码登陆ftp服务器
客户端通过tcpSock给服务器发送用户名指令:m_user表示用户名
QString user_cmd = QObject::tr("USER ")+m_user + "\r\n";
tcpSock->write(user_cmd.toLatin1());tcpSock收到的响应信息如下:
响应信息:"331 Anonymous access allowed, send identity (e-mail name) as password."
然后客户端给服务器发送用户名指令:m_pwd表示密码
QString pwd_cmd = QObject::tr("PASS ")+m_pwd + "\r\n";
tcpSock->write(pwd_cmd.toLatin1());
如果成功登陆tcpSock收到的响应信息为:
响应信息:"230 User logged in."
3.登陆成功后需要进入被动连接模式(PORT是主动连接模式,当客户端选择这种模式与服务器进行连接的时候,它需要向服务器提供一个IP地址和一个端口号,而PASV是被动模式,当选择这种模式时,服务器需要提供给客户端一个IP地址和一个端口号)
进入被动模式代码如下:
QString pasv = "PASV \r\n";
tcpSock->write(pasv.toLatin1());tcpSock可收到响应信息:
响应信息:"227 Entering Passive Mode (192,168,2,159,18,94)."
前4个数为ftp的IP地址,根据后两个数计算下载或上传的数据通信的端口号,端口号计算方式:18*256+94
根据IP和端口号使用dataSock连接ftp服务器
4.往服务器发送LIST指令遍历服务器文件
QString find_list="LIST \r\n";
tcpSock->write(find_list.toLatin1());
然后通过dataSock接收遍历结果数据。
5.往服务器发送RETR指令下载文件
首先需要重新进入被动模式(即进行第三步操作),在此过程中可以把dataSock销毁重新构建一个dataSock
然后往服务器发送RETR指令,m_fileName是文件名
QString retrStr = "RETR "+m_fileName+"\r\n";
tcpSock->write(retrStr.toLocal8Bit());之后就可以从dataSock里面读取下载的文件数据了。
- FTP客服端编程(ftp协议指令编程)
- ftp协议常用指令
- 电子邮件协议、FTP 和 CGI 编程
- 网络编程之FTP文件传输协议
- FTP协议(指令集)
- FTP 协议(指令集)
- FTP协议(指令集)
- Ftp客户端编程
- Ftp客户端编程结构
- VB与FTP编程
- VC++实现FTP编程
- VC++实现FTP编程
- FTP客户端编程
- qt FTP客户端编程
- qt FTP客户端编程
- VC++实现FTP编程
- Python编程-FTP
- VC++实现FTP编程
- sublime快捷键
- 分布式跟集中式系统
- 字符流,缓冲字符流(各种复制文件,文件夹),集合与文件,序列化与反序列化
- Fabric 1.0 Crypto Generator的使用
- 《Spark快速大数据分析》笔记Ch4 键值对操作
- FTP客服端编程(ftp协议指令编程)
- 数据仓库分层架构设计
- 常用 Git 命令清单
- 在Java中如何高效判断数组中是否包含某个元素
- linux 常用命令
- Maven构建应用程序常用配置
- 无向图的深度和广度优先遍历
- 基本在每个项目中都会遇到发送邮件的需求,大家熟知的邮箱有新浪、雅虎、QQ、OUTLOOK等,想必大家也遇到过发送邮件总是被发送到垃圾邮箱中,下面是我找到的一个解决办法,仅供参考。
- hadoop之eclipse插件