ftp客户端开发
❶ Windows端有哪些ftp客户端软件值得推荐
Windows端有哪些FTP客户端软件值得推荐?
Filezilla
FileZilla是一个免费的 FTP 客户端软件,虽然它是免费软件,可功能却一点也不含糊,比起那些共享软件来有过之而无不及,在新的版本中作者改进了手动下载的界面和功能等,不过该软件暂时还是不支持断点续传功能。总的来说是一款优秀的免费软件。
功能介绍:
1、易于使用
2、支持FTP, FTP并支持SSL/TLS (FTPS)协议,支持SSH文件传输协议(SFTP)
3、跨平台。在 Windows, Linux, *BSD, Mac OS X 和其它平台下运行 more
4、支持IPv6协议
5、多种可用的语言(包含中文)
6、断点续传且支持容量大于4GB的文件
7、多标签用户界面
8、功能强大的站点管理器(Site Manager)和传输队列管理
9、书签功能
10、拖拽功能支持
11、支持传输限速功能
12、文件名过滤器
13、文件夹比较功能
14、网络设置向导
15、远程文件编辑功能
16、保持链接功能
17、支持HTTP/1.1, SOCKS5 和 FTP代理(FTP-Proxy)
18、登录到文件功能
19、同步文件夹浏览
20、远程查找文件

❷ 怎样用java开发ftp客户端
package zn.ccfccb.util;
import hkrt.b2b.view.util.Log;
import hkrt.b2b.view.util.ViewUtil;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import zn.ccfccb.util.CCFCCBUtil;
import zn.ccfccb.util.ZipUtilAll;
public class CCFCCBFTP {
/**
* 上传文件
*
* @param fileName
* @param plainFilePath 明文文件路径路径
* @param filepath
* @return
* @throws Exception
*/
public static String fileUploadByFtp(String plainFilePath, String fileName, String filepath) throws Exception {
FileInputStream fis = null;
ByteArrayOutputStream bos = null;
FTPClient ftpClient = new FTPClient();
String bl = "false";
try {
fis = new FileInputStream(plainFilePath);
bos = new ByteArrayOutputStream(fis.available());
byte[] buffer = new byte[1024];
int count = 0;
while ((count = fis.read(buffer)) != -1) {
bos.write(buffer, 0, count);
}
bos.flush();
Log.info("加密上传文件开始");
Log.info("连接远程上传服务器"+CCFCCBUtil.CCFCCBHOSTNAME+":"+22);
ftpClient.connect(CCFCCBUtil.CCFCCBHOSTNAME, 22);
ftpClient.login(CCFCCBUtil.CCFCCBLOGINNAME, CCFCCBUtil.CCFCCBLOGINPASSWORD);
// Log.info("连接远程上传服务器"+"192.168.54.106:"+2021);
// ftpClient.connect("192.168.54.106", 2021);
// ftpClient.login("hkrt-CCFCCBHK", "3OLJheziiKnkVcu7Sigz");
FTPFile[] fs;
fs = ftpClient.listFiles();
for (FTPFile ff : fs) {
if (ff.getName().equals(filepath)) {
bl="true";
ftpClient.changeWorkingDirectory("/"+filepath+"");
}
}
Log.info("检查文件路径是否存在:/"+filepath);
if("false".equals(bl)){
ViewUtil.dataSEErrorPerformedCommon( "查询文件路径不存在:"+"/"+filepath);
return bl;
}
ftpClient.setBufferSize(1024);
ftpClient.setControlEncoding("GBK");
// 设置文件类型(二进制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.storeFile(fileName, fis);
Log.info("上传文件成功:"+fileName+"。文件保存路径:"+"/"+filepath+"/");
return bl;
} catch (Exception e) {
throw e;
} finally {
if (fis != null) {
try {
fis.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
if (bos != null) {
try {
bos.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
}
}
/**
*下载并解压文件
*
* @param localFilePath
* @param fileName
* @param routeFilepath
* @return
* @throws Exception
*/
public static String fileDownloadByFtp(String localFilePath, String fileName,String routeFilepath) throws Exception {
FileInputStream fis = null;
ByteArrayOutputStream bos = null;
FileOutputStream fos = null;
FTPClient ftpClient = new FTPClient();
String SFP = System.getProperty("file.separator");
String bl = "false";
try {
Log.info("下载并解密文件开始");
Log.info("连接远程下载服务器"+CCFCCBUtil.CCFCCBHOSTNAME+":"+22);
ftpClient.connect(CCFCCBUtil.CCFCCBHOSTNAME, 22);
ftpClient.login(CCFCCBUtil.CCFCCBLOGINNAME, CCFCCBUtil.CCFCCBLOGINPASSWORD);
// ftpClient.connect(CMBCUtil.CMBCHOSTNAME, 2021);
// ftpClient.login(CMBCUtil.CMBCLOGINNAME, CMBCUtil.CMBCLOGINPASSWORD);
FTPFile[] fs;
ftpClient.makeDirectory(routeFilepath);
ftpClient.changeWorkingDirectory(routeFilepath);
bl = "false";
fs = ftpClient.listFiles();
for (FTPFile ff : fs) {
if (ff.getName().equals(fileName)) {
bl = "true";
Log.info("下载文件开始。");
ftpClient.setBufferSize(1024);
// 设置文件类型(二进制)
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
InputStream is = ftpClient.retrieveFileStream(fileName);
bos = new ByteArrayOutputStream(is.available());
byte[] buffer = new byte[1024];
int count = 0;
while ((count = is.read(buffer)) != -1) {
bos.write(buffer, 0, count);
}
bos.flush();
fos = new FileOutputStream(localFilePath+SFP+fileName);
fos.write(bos.toByteArray());
Log.info("下载文件结束:"+localFilePath);
}
}
Log.info("检查文件是否存:"+fileName+" "+bl);
if("false".equals(bl)){
ViewUtil.dataSEErrorPerformedCommon("查询无结果,请稍后再查询。");
return bl;
}
return bl;
} catch (Exception e) {
throw e;
} finally {
if (fis != null) {
try {
fis.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
if (bos != null) {
try {
bos.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
if (fos != null) {
try {
fos.close();
} catch (Exception e) {
Log.info(e.getLocalizedMessage(), e);
}
}
}
}
// 调用样例:
public static void main(String[] args) {
try {
// 密钥/res/20150228
// ZipUtilAll.unZip(new File(("D:/123/123.zip")), "D:/123/");
// ZipDemo1232.unZip(new File(("D:/123/123.zip")), "D:/123/");
// 明文文件路径
String plainFilePath = "D:/req_20150204_0011.txt";
// 密文文件路径
String secretFilePath = "req_20150204_00134.txt";
// 加密
// encodeAESFile(key, plainFilePath, secretFilePath);
fileDownloadByFtp("D://123.zip","123.zip","req/20150228");
ZipUtilAll.unZip("D://123.zip", "D:/123/李筱/");
// 解密
plainFilePath = "D:/123.sql";
// secretFilePath = "D:/test11111.sql";
// decodeAESFile(key, plainFilePath, secretFilePath);
} catch (Exception e) {
e.printStackTrace();
}
}
}
❸ 如何用java实现ftp客户端程序
FTP 的主要操作都是基于各种命令基础之上的。常用的命令有: · 设置传输模式,它包括ASCⅡ(文本) 和BINARY 二进制模式; · 目录操作,改变或显示远程计算机的当前目录(cd、dir/ls 命令); · 连接操作,open命令用于建立同远程计算机的连接;close命令用于关闭连接; · 发送操作,put命令用于传送文件到远程计算机;mput 命令用于传送多个文件到远程计算机; · 获取操作,get命令用于接收一个文件;mget命令用于接收多个文件。 编程思路 根据FTP 的工作原理,在主函数中建立一个服务器套接字端口,等待客户端请求,一旦客户端请求被接受,服务器程序就建立一个服务器分线程,处理客户端的命令。如果客户端需要和服务器端进行文件的传输,则建立一个新的套接字连接来完成文件的操作。 编程技巧说明 http://www.jacken.com.cn/Programming/Java/2008-10-24/Java-.html
❹ java开发ftp客户端对服务器文件状态如何识别
我们当时是这样处理的:
上传一个文件,比如名字为:aaa.rar
当文件上传完的时候就会上传一个aaa.fin的空文件做标识,表明这个文件上传成功。
下载的时候首先检查aaa.fin是否存在。然后下载!
建议你在文件目录下放一个list.xml(存放当前上传成功的文件名,下载前在里面检索它是否存在)
❺ 如何用VC开发SFTP的客户端
一、路由器下的FTP服务端:
路由器下的FTP服务端,需要解决一个“安全验证”问题,IE客户端会核对服务端的IP
地址,因为服务端是内外两个IP,而使IE客户端安全验证失败,但专业FTP客户端CuteFTP9、LeapFTP3
可以不核对IP验证,而使访问成功,但用户总是喜欢IE做客户端,为此需要找一个解决“安全验证”
的FTP服务端,FileZilla FTP Server就是最实用小巧的FTP理想服务端,只有1M多一点,非常小巧。
二、路由器下的FTP服务端要被外网IE访问的因素:
1. FTP服务端WINDOWS电脑要关闭自带的防火墙或设成FTP服务程序为“例外”;
2. 路由器下的电脑服务器要设成路由器的DMZ主机,这样服务端端口就.开.放在外网,
才能被外网所访问,所以,服务端电脑要设成静态IP如 192.168.1.10,并把路由器的
DMZ主机设为此IP,设DMZ后就不需要再设.端.口.映.射.了;
3. FileZilla FTP SERVER要设成被动方式PASV,并要指定一个外网IP,以解决NAT的安全验
证问题,否则,客户端不能被WINDOWS的IE所访问,但能被CuteFTP访问;
4. 外网的端.口不能被运营商所封或者不能是共享外网IP地址的NAT代理,端口会因NAT改变;
三、FileZilla FTP Server需要的设定:
1. 需要设定为 Passive被动模式:端口范围可为设为 10000-10050
2. 指定的IP要设为外IP:以解决“安全验证”问题
这个外IP就是将要被访问的FTP://外IP
3. 用户增加 anonymous,密码不设,这是匿名方式;
4. 共享文件夹设成你的一个被访问目录;
5. 其它21号服务端口等缺省参数不需改动。
四、程序说明:
一、FileZilla server.exe 这是后台服务程序,运行后启动服务就可;
二、FileZilaa Server Interface.exe 这是界面管理程序,让管理员设定参数的。
❻ 怎样利用WinInet技术开发FTP客户端程序
摘要:WinInet是微软MFC类库提供的Win32Internet扩展接口,利用WinInet开发人员可以方便地编写出Internet客户端程序。本文主要阐述利用WinInet在VC 2005中实现FTP客户端程序的方法。相对于通常采用的IE浏览器,本FTP客户端程序更加安全可靠。
关键词:MFC;WinInet;FTP客户端程序;VC 2005
一、WinInet概述
为了开发Internet客户端程序,微软的MFC类库提供了专门的Win32Internet扩展接口,即WinInet。WinInet提供了Internet会话类CInternetSession、Internet连接类CInternetConnection、Internet文件类CInternetFile、Internet文件操作类CFileFind、Internet通用异常类CInternetException等类。WinInet为HTTP、FTP和Gopher提供了统一的函数集,用户使用这些类可以大大简化针对HTTP、FTP等协议的编程,特别是客户端的编程。
二、建立FTP客户端程序的步骤
FTP客户端程序首先要建立与服务器的连接,这需要一个CInternetSession和CFtpConnection对象,但并不需要直接创建CFtpConnection对象,而是通过调用CInternetSession::GetFtpConnection来实现;然后通知FTP服务器改变目录到当前服务目录,通过CFtpConnection::SetCurrentDirectory实现;读写服务器中的数据,必须创建一个CFtpFileFind的实例;找到第一个文件,如果文件没找到返回FALSE,通过CFtpFileFind::FindFile实现;循环找下一个文件,如果文件没找到返回FALSE,通过CFtpFileFind::FindNextFile实现;最后打开找到的文件进行相应的操作。
三、建立FTP客户端程序的实例
1.功能描述
本FTP客户端程序实现如下功能:通过用户名、密码(只要是合法的用户名、密码均可)登录到指定的FTP服务器,在文件列表框中列出FTP服务器当前目录所在的文件和目录,然后以“另存为”对话框实现对选定文件的下载功能。
2.设计
(1)在VisualStudio2005创建一个名为FTPClient项目
项目类型:开发语言为VisualC 的基于对话框的MFC应用程序,设计对话框模板如图1所示。
图1FTPClient对话框模板
(2)为各控件添加变量
为“FTP服务器地址”文本框添加Cstring类型的变量m_strFTPServer;为“端口”文本框添加UINT类型的变量m_nFTPPort;为“用户名”文本框添加Cstring类型的变量m_strUserName;为“密码”文本框添加Cstring类型的变量m_strPassword,其Password属性为TRUE;为“下载目录”文本框添加Cstring类型的变量m_strFTPDirectory;为“下载目录文件列表”列表框控件添加CListBox类型的变量m_listFiles;为“连接”按钮添加Cbutton类型的变量m_bnConnect;为“下载文件”按钮添加Cbutton类型的变量m_bnDownloadFile。
3.实现
(1)建立与FTP服务器的连接
为此需要在对话框类(FTPClientDlg.h)中添加CInternetSession类的对象m_Session和CFtpConnection对象指针m_pConnection两个变量。为使程序可使用WinInet类,需要在stdafx.h中加入一个对afxinet.h和afx.h的包含。建立连接主要是通过单击对话框中的“连接”按钮来实现的(调用FTPClientDlg.cpp中的CFTPClientDlg::OnBnClickedButtonconnect()),其代码如下。
voidCFTPClientDlg::OnBnClickedButtonconnect()
{
UpdateData(TRUE);//从对话框中获取数据
if(!m_pConnection)//进行连接
{
if(m_strFTPServer!="")
{
//利用Internet对话对象m_Session打开一个FTP连接
m_pConnection=m_Session.GetFtpConnection(m_strFTPServer,m_strUserName,m_strPassword,m_nFTPPort);
if(m_pConnection)
{
//如果连接成功,则获取当前目录
m_pConnection->GetCurrentDirectory(m_strFTPDirectory);
//将“连接”按钮改为“断开连接”按钮
m_bnConnect.SetWindowText(_T("断开连接"));
LoadListofFtpFiles();//获取文件列表
//FTP已连接,“下载文件”按钮使能
m_bnDownloadFile.EnableWindow(TRUE);
UpdateData(FALSE);//更新对话框数据
}
}
}
else//断开连接
{
m_pConnection->Close();//断开连接并删除连接对象
deletem_pConnection;
m_pConnection=NULL;//重置连接对象指针为NULL
//将“断开连接”按钮改为“连接”按钮
m_bnConnect.SetWindowText(_T("连接"));
m_strFTPDirectory="";//重置目录
m_listFiles.ResetContent();//清空列表框
//FTP断开连接,“下载文件”按钮Disable
m_bnDownloadFile.EnableWindow(FALSE);
UpdateData(FALSE);//更新对话框数据
}
}
BOOLCFTPClientDlg::OnInitDialog()
{
Cdialog::OnInitDialog();
…//省略原有代码
//TODO:在此添加额外的初始化代码
//设置默认的FTP服务器名(IP)、端口、用户名(匿名)和登录密码,目录
m_strFTPServer=_T("192.168.0.1");//设置FTP的IP
m_nFTPPort=21;//设置FTP端口:默认的端口是21
m_strUserName=_T("user1");//设置登录用户名,默认的是匿名:user1
m_strPassword=_T("user1");//设置登录密码:user1
m_listFiles.ResetContent();//清空文件目录列表
m_pConnection=NULL;//初始状态FTP未连接,FTP连接类的指针变量初始化为空
//FTP未连接,“下载文件”按钮Disable
m_bnDownloadFile.EnableWindow(FALSE);
UpdateData(FALSE);//交换数据,对话框显示初始化内容
returnTRUE;//除非将焦点设置到控件,否则返回TRUE
}
voidCFTPClientDlg::OnClose()
{
m_Session.Close();//在对话框关闭时关闭Internet连接
Cdialog::OnClose();
}
(2)读FTP服务器中的文件和目录到列表框中
该功能是通过FTPClientDlg.cpp中的CFTPClientDlg::LoadListofFtpFiles(void)来实现的,其代码如下。
voidCFTPClientDlg::LoadListofFtpFiles(void)
{
m_listFiles.ResetContent();//清空列表框
//构建一个FTP文件操作类对象,同时把FTP连接指针传递给该对象,
//打开一个文件查找对话
CFtpFileFindfFiles(m_pConnection);
CstringstrFileName;//用来保存文件名
BOOLbMoreFiles;//用来设置文件搜索状态
//利用默认的方法找到第一个文件,同时找到文件列表
bMoreFiles=fFiles.FindFile(NULL);
while(bMoreFiles)//文件搜索,直到最后一个文件
{
bMoreFiles=fFiles.FindNextFile();//查找下一个文件
strFileName=fFiles.GetFileName();//获取该文件名
if(fFiles.IsDirectory())//若为目录,则在名后加一个标志
strFileName ="<DIR>";
m_listFiles.AddString(strFileName);//将文件名添加到列表框中
}
fFiles.Close();//关闭文件查找对话框
}
(3)下载FTP服务器中的文件
下载文件是通过单击对话框中的“下载文件”按钮来实现的(调用FTPClientDlg.cpp中的CFTPClientDlg::OnBnClickedButtondownloadfile()),其具体实现是利用CFileDialog的保存功能来完成文件下载的,其主要代码如下。
voidCFTPClientDlg::OnBnClickedButtondownloadfile()
{
UpdateData(TRUE);//从对话框中获取数据
m_listFiles.GetText(m_listFiles.GetCurSel(),m_strFile);
//将列表框选中的项的值赋给m_strFile(选中的文件或目录)
if(m_strFile!="")
{
if(m_strFile.Right(5)=="<DIR>")//判断用户选择的是否目录
MessageBox(_T("无法下载目录!"));//如果是目录,报错
else
{
//打开文件对话框,询问下载位置
CFileDialogfiledlg(FALSE,NULL,m_strFile);
if(filedlg.DoModal()==IDOK)
{
//确定地址后开始下载文件
if(!m_pConnection->GetFile(m_strFile,filedlg.GetFileName()))
MessageBox(_T("无法下载文件!"));//下载出错
else
MessageBox(_T("文件下载完毕!"));//下载成功
}
}
}
}
4.最终实现界面,如图2所示。
图2程序运行界面
四、结束语
只要安装.NET2.0且FTP服务器能提供正常的服务,本客户端程序可以运行在WindowsXP(SP2)、Windows2000pro/server下。若FTP服务器没有正常运行,则无法连接,提示:“与服务器的连接被重置”。利用WinInet不仅可以实现FTP客户端程序,还可以方便地编写HTTP等其它客户端程序。
参考文献:
[1]VisualC#.NET面向程序设计教程赵卫伟机械工业出版社2006年5月第1版
[2]VisualC .NET应用编程150例王兴晶电子工业出版社2003年8月第1版
[3]MSDN(msdn.microsoft.com)
Tags:
发布:crazyapple
❼ 怎么用Java开发FTP客户端
摘要
本文解释了如何利用库用Java语言编写FTP客户端代码。它比较了FTP库的一个完全列表,演示了每个库的优点和缺点,并且帮助决策者为他们的需要选择适当的库。另外,本文阐述了Fa?ade模式如何在取代一个库时改变管理。最后,作者Jean-Pierre Norguet讨论并解决了由于缺乏权威性的说明书引起的一些问题。
让我们假设一个情景:我们要编写一个纯Java应用程序,该程序必须从运行FTP服务器的远程计算机上下载文件。我们也通过远程文件信息,像名字、日期、或者尺寸,来过滤下载。
自己来写一个FTP协议处理,尽管是有可能,并且可能很有趣。但是这样做也有可能有困难、花费长时间、并且有潜在的风险。既然我们不肯花费时间、精力、或者金钱自己来写一个处理器,那我们推荐使用一个可重用的现有的软件组件。万维网上有并且大量的库可供使用。有了一个FTP客户端库,下载一个文件用Java语言编写就像下面一样简单:
FTPClient ftpClient = new FTPClient();
ftpClient.connect("ftp.foo.com", "user01", "pass1234");
ftpClient.download("C:\\Temp\\", "README.txt");
// Eventually other operations here ...
ftpClient.disconnect();
寻找一个适合我们需要的高质量的Java FTP客户端库并不像他看起来那么简单;它可能相当困难。要找到一个Java FTP客户端库需要花一些时间。接着,在我们找到所有的已存在的库之后,我们选哪个?每个库适合不同的需要。库在质量上是不等的,并且它们的设计有本质的区别。每个提供一套不同的属性和使用不同类型的行话来描述他们。
因此,计算和比较FTP客户端库证明是困难而且令人迷惑的。重复使用已存在的组件是一个值得推荐的过程,但在这个例子中,启动它也是令人沮丧的。并且这有点羞愧:在选好的一个好的FTP库之后,剩下的工作就是例程了。
本文旨在使选择过程简短、容易、并且有价值。我首先列出了所有的FTP客户端库。接着,我定义和描述了库应该用某种方式找到的相关标准的一个表格。最后,我列出了一个总浏览的矩阵,该矩阵给出了库间相互比较的过程的快速浏览。所有的信息提供了我们作出一个迅速、可靠、和长期的决定所需的每件事。
使用JDK(Java 开发工具集)的FTP支持
用于FTP的访问规范是用于注释的请求:959(RFC959)。Sun Microsystems提供了JDK的一个RFC959执行。但是它是内部的、非文档化的、并且不提供任何资源。当RFC959在尚未公开时,它实际上是执行RFC1738、URL规范的一个公共界面的后终端。如图1。
图1. 使用JDK的FTP支持。
RFC1738的一个执行过程在JDK中作为标准给出。它为基本的FTP传送做一个可推理的工作。它是公共的、文档化的、并且提供源代码。要使用它,我们可编写下面语句:
URL url = new URL("ftp://user01:[email protected]/README.txt;type=i");
URLConnection urlc = url.openConnection();
InputStream is = urlc.getInputStream(); // To download
OutputStream os = urlc.getOutputStream(); // To upload
使用JDK的FTP客户端严格的遵守标准推荐,但它有以下几个说明:
它从根本上区别于第三方的FTP客户端库;这些执行RFC959而不是RFC1738
RFC959用大多数的桌面FTP客户端工具执行。许多Java程序员使用这些工具连接到FTP服务器上。作为一个尝试,这些工具及有可能优先于类似的RFC959库。
URL 和URLConnection类只开放用于通讯的流。Sun库不为构造原始的FTP服务器响应成为像String、 File、 RemoteFile、 或者 Calendar之类的更合用的Java对象而提供直接支持。所以我们不得不编写更多的代码,只是为了把数据写入一个文件中或者开始一个目录列表。
正像RFC1738的3.2部分解释的一样,"最优化",FTP URL在每个操作后要求关闭(控制)连接。这对于传送许多小文件是一种浪费、并且毫无效率。而且,作了特别限制FTP服务器可能把会这样一个通讯开销认为一个是恶毒的网络攻击或者滥用而拒绝提供进一步的服务。
最后,它缺乏几个有用的属性。
由于以上所有或者某种原因,可优先使用一个第三方的库。下面部分列出了可供选择的第三方的库。
见:http://www.javaworld.com/javaworld/jw-04-2003/ftp/jw-0404-ftptable.html
❽ ftp工具是什么
1.什么是FTP呢?FTP 是 TCP/IP 协议组中的协议之一,是英文File Transfer Protocol的缩写。该协议是Internet文件传送的基础,它由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。简单的说,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上,称之为“下载(download)”文件。若将文件从自己计算机中拷贝至远程计算机上,则称之为“上载(upload)”文件。在TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。
2.FTP的工作方式
FTP支持两种模式,一种方式叫做Standard (也就是 PORT方式,主动方式),一种是 Passive (也就是PASV,被动方式)。 Standard模式 FTP的客户端发送 PORT 命令到FTP服务器。Passive模式FTP的客户端发送 PASV命令到 FTP Server。
3.ftp工具,就是专门用来进行FTP上传下载的工具。常用FTP工具有:
CuteFTP Pro :CuteFTP Pro是一个全新的商业级FTP客户端程序,其加强的文件传输系统能够完全满足今天的商家们的应用需求。这里文件通过构建于SSL或SSH2安全认证的客户机/服务器系统进行传输,为VPN、WAN、Extranet开发管理人员提供最经济的解决方案!企业再不需要为了一套安全的数据传输系统而进行破费了。此外,CuteFTP Pro还提供了Sophisticated Scripting、目录同步、自动排程、同时多站点连接、多协议支持(FTP、SFTP、HTTP、HTTPS)、智能覆盖、整合的HTML编辑器等功能特点以及更加快速的文件传输系统。
LeapFTP:一款被多家网站评估为五星级、功能强大、能媲美BulletProof FTP的FTP软件。跟Netscape相仿的书签形式,连线更加方便。下载与上传文件支持续传。可下载或上传整个目录,亦可直接删除整个目录。可让你编列顺序一次下载或上传同一站台中不同目录下的文件。浏览网页时若在文件连结上按鼠标右键选[复制捷径]便会自动下载该文件。具有不会因闲置过久而被站台踢出的功能。可直接编辑远端Server上的文件。可设定文件传送完毕自动中断Modem连接。
FlashFXP:功能强大的 FXP / FTP 软件,融合了一些其他优秀 FTP 软件的优点,如像 CuteFTP 一样可以比较文件夹,支持彩色文字显示;像 BpFTP 支持多文件夹选择文件,能够缓存文件夹;像 LeapFTP一样的外观界面,甚至设计思路也差相仿佛。支持文件夹(带子文件夹)的文件传送、删除;支持上传、下载及第三方文件续传;可以跳过指定的文件类型,只传送需要的文件;可以自定义不同文件类型的显示颜色;可以缓存远端文件夹列表,支持FTP 代理及 Socks 3 & 4;具有避免空闲功能,防止被站点踢出;可以显示或隐藏“隐藏”属性的文件、文件夹;支持每个站点使用被动模式等。!
TurboFTP:一款绝对老牌的FTP传输工具。它支持断线自动重新连接并自动恢复传输,文件列表过滤,远程编辑,整个远端目录删除,目录上传下载,断点续传, 多达八种的代理服务器,完成传送后自动挂线或关机,方便的 FTP 站点地址薄,等等。
ChinaFTP:ChinaFTP是一款完全由国人开发的免费的FTP客户端软件,软件支持对文件传输的所有操作,支持MSDOS和Unix两种目录结构。ChinaFTP与服务器的交互快,文件传输速度快,支持整个目录及子目录的上传,软件包含站点管理,方便用户对所访问的站点进行访问保存,无需每次访问时都输入服务器名、用户名和密码。简单的操作和方便的管理,软件界面清晰,左侧为本地磁盘文件,右侧为FTP文件服务器。文件上传下载显示进度查看、已传送字节、传输速度显示、服务器状态显示等。
AceFTP Pro:相当强大且好用的FTP软件,使用者只需以软件本身的浮动按钮即会操作,它提供多文件下载,且可同时至多个Sever下载,使用者更可边上FTP下载文件,边浏览网页一个FTP软件,结合了浏览器与FTP的功能,它可以在下载或上传文件之前先预览 GIF、JPG和 HTML的文件,并且你可以在同一个视窗下开启多个远端的目录或是登入多个远端的FTP服务器,你也可以直接输入欲下载文件的位址来下载文件,支持 FTP 和 HTTP。
EmFTP Pro:EmFTP 是一个易于使用的,高品质的 FTP 客户端软件。EmFTP 是共享软件。EmFTP 可以与 EmEditor (Windows 下很好用的一个文本编辑器)很好的结合在一起。如果你已安装 EmEditor,你可以直接编辑一个服务器上的文件,就像编辑一个本地文件一样。同样,你可以可以非常容易的从其他客户端中导入设置,例如:FFFTP、Internet Explorer、WS_FTP。 同步上传功能可以直接复制本地文件夹的正确结构到服务器上。
以上几个软件下载地址,请参考网页http://bbs.zj.chinavnet.com/topic_show.jsp?id=1463289&oldpage=1&thesisid=45&flag=topic1
