推荐给好友   您现在的位置: 主页 > 编程文档 > VC文档 > FTP协议解析与实现

FTP协议解析与实现

时间:2010-03-04 21:10 来源:未知 作者:admin 收藏到:[百度书签] [QQ书签]
一、FTP通信原理简述
1.1 FTP简介
FTP是基于TCP/IP协议的一个应用协议。主要实现在不同的计算机之间的数据共享。FTP 采用的是C/S模式。客户既可以下载文件也可以上传文件。当然,FTP给用户一定的权限。用户只能在权限下使用。目前,FTP的服务器种类很多,比如常用的SERV-U,客户端程序也很多,比如:CuteFTP。WINDOWS也提供了一个FTP客户程序。它们都根据相同的协议标准来设计的,具体协议内容可参考RFC文档。
SERV-U工作界面
windows提供的客户端
1.2 FTP工作原理
FTP工作原理与其它的应用协议有些不同。它是用两个端口进行通信的。一个端口用于命令交互。这个端口在用户连接之后一直保持;而另一个端口只是在数据传时打开(比如:上传文件,下载文件,获取服务端文件列表),在数据传输时有两种不同的模式,一是用户开通这个数据端口,这种模式叫做主动模式;二是服务器提供一个接口,这个模式叫被动模式。
FTP原理图
1.3 用户登录
FTP服务器提供了用户的访问权限,有的服务器可以匿名登录,有的服务器要求用户使用密码登录。在每一个与登录有关的命令时,服务器都会有一个返回信息。
下面显示了一个登录过程:
1.4 数据传输
在FTP中可以定义数据的传输格式,比如:二进制(进行图象和应用程序传输这种格式)。下面是一个传输过程:
二、FTP命令
在WINDOWS中提供的命令不是FTP的标准命令。有些命令是许多命令的合集。而FTP标准命令,每发送一个,服务器就会做出一个相应的动作,并把认证信息发送给用户。
具体的命令可以参照有关的资料
三、实例
在这里我们用一个FTP客户端来说明以上的知识。这里面主要是一个封装的类。
CFTPClient这个类实现的文件的上传与下载并能获得服务端文件的信息。
1.1 CFTPClient类
class CFTPClient
{
//成员变量
private:
CSocket *m_pSocket;
CArchive *m_pRxarch;
CArchive *m_pTxarch;
CSocketFile *m_psfSokFile;
CString m_strMsg;//服务器发回的消息
CString m_fc;
CftpclientDlg *m_pWnd; //用于对窗口的操作
CByteArray m_btBuf;
//成员函数
public:
CFTPClient(void);
~CFTPClient(void);
//发送命令到服务器
BOOL FtpCommand (CString strCommand);
//登录到FTP服务器,这个函数只支持在没有防火墙的时候
BOOL LogOnToserver ( CString strHostname , int nHostPort , CString strUserName , CString strPassword );
//退出服务器
void LogOffServer();
//上传下载文件
BOOL MoveFile (CString strRemoteFile,CString strLocalFile , BOOL bPasv , BOOL bGet);
//列出文件列表
BOOL List();
void ProcessList();
//获取一行信息
BOOL GetLine(int ndx,CString &strLine);
//发送数据
BOOL WriteStr(CString strOutPut);
//接收数据

文章tags:

顶一下
0
0%
踩一下
(0)
0%

Copyright © 2010 代码天下 版权所有
ad