0 0

关于apache-commons-net FTPS支持的问题25

package examples.ftp;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.security.NoSuchAlgorithmException;

import javax.net.SocketFactory;
import javax.net.ssl.SSLSocketFactory;

import org.apache.commons.net.PrintCommandListener;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPConnectionClosedException;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import org.apache.commons.net.ftp.FTPSClient;

public final class FTPSExample {
public static final String USAGE = "Usage: ftp [-s] [-b] <127.0.0.1> <shanming> <shanming> <test.txt> <shanming.txt>\n"
+ "\nDefault behavior is to download a file and use ASCII transfer mode.\n"
+ "\t-s store file on server (upload)\n"
+ "\t-b use binary transfer mode\n";

public static final void main(String[] args)
throws NoSuchAlgorithmException {
int base = 0;
boolean storeFile = false, binaryTransfer = false, error = false;
String server, username, password, remote, local;
String protocol = "SSL"; // SSL/TLS 
FTPClient ftps;
for (base = 0; base < args.length; base++) {
if (args[base].startsWith("-s"))
storeFile = true;
else if (args[base].startsWith("-b"))
binaryTransfer = true;
else
break;
}
if ((args.length - base) != 5) {
System.err.println(USAGE);
System.exit(1);
}
server = args[base++];
username = args[base++];
password = args[base++];
remote = args[base++];
local = args[base];
ftps = new FTPSClient(protocol);
ftps.enterLocalPassiveMode();
ftps.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out)));
try {
int reply;
ftps.connect(server);
System.out.println("Connected to " + server + ".");
// After connection attempt, you should check the reply code to verify 
// success. 
reply = ftps.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftps.disconnect();
System.err.println("FTP server refused connection.");
System.exit(1);
}
} catch (IOException e) {
if (ftps.isConnected()) {
try {
ftps.disconnect();
} catch (IOException f) {
// do nothing 
}
}
System.err.println("Could not connect to server.");
e.printStackTrace();
System.exit(1);
}
__main: try {
ftps.setBufferSize(1000);
if (!ftps.login(username, password,"990")) {
ftps.logout();
error = true;
break __main;
}

System.out.println("Remote system is: " + ftps.getSystemName());
System.out.println("Working directory is: " + ftps.printWorkingDirectory());
System.out.println("default port is: " + ftps.getDefaultPort());
//if (binaryTransfer)
//ftps.setFileType(FTP.BINARY_FILE_TYPE);
// Use passive mode as default because most of us are 
// behind firewalls these days. 
SocketFactory factory = SSLSocketFactory.getDefault();
ftps.setSocketFactory(factory);
FTPFile[] files=ftps.listFiles();
for(FTPFile file:files){
System.out.println("ftpfile name is :" + file.getName());
}

if (storeFile) {
System.out.println("Here is upload!");
ftps.changeWorkingDirectory("/");
InputStream input;
input = new FileInputStream(local);
ftps.storeFile(remote, input);
input.close();
} else {
System.out.println("Here is download!");
ftps.changeWorkingDirectory("/");
OutputStream output;
output = new FileOutputStream(local);
ftps.retrieveFile(remote, output);
output.close();
}
ftps.logout();
} catch (FTPConnectionClosedException e)
{
error = true;
System.err.println("Server closed connection.");
e.printStackTrace();
} catch (IOException e) {
error = true;
e.printStackTrace();
} finally {
if (ftps.isConnected()) {
try {
ftps.disconnect();
} catch (IOException f)

{
// do nothing 
}
}
}
System.exit(error ? 1 : 0);
} // end main 
}
==============================
输出结果:
220-FileZilla Server version 0.9.39 beta
220-written by Tim Kosse (Tim.Kosse@gmx.de)
220 Please visit http://sourceforge.net/projects/filezilla/
AUTH TLS
234 Using authentication type TLS
Connected to 127.0.0.1.
USER shanming
331 Password required for shanming
PASS shanming
230 Logged on
SYST
215 UNIX emulated by FileZilla
Remote system is: UNIX emulated by FileZilla
PWD
257 "/" is current directory.
Working directory is: /
default port is: 21
PORT 127,0,0,1,9,238
200 Port command successful
LIST
521 PROT P required

Here is download!
CWD /
250 CWD successful. "/" is current directory.
PORT 127,0,0,1,9,239
200 Port command successful
RETR ss.txt
521 PROT P required
QUIT
221 Goodbye
2011年8月09日 16:10
目前还没有答案

相关推荐

    apache commons-net-3.5

    3. **安全性和SSL/TLS支持**:考虑到网络安全,Apache Commons Net也支持FTP over SSL (FTPS)和Explicit TLS/SSL,以加密传输数据,保护敏感信息的安全。 4. **文件上传策略**:在实际应用中,Apache Commons Net...

    最新org.apache.commons.net..包完整、干净、实用

    在压缩包子文件的文件名称列表中,"commons-net-2.2"很可能是这个库的一个具体版本号,表示这是Apache Commons Net的2.2版本。每个版本都可能包含对前一版本的改进、新功能的添加或者bug的修复,所以选择最新版本...

    jar包-commons-net-3.3.jar

    这里的"commons-net-3.3"部分揭示了这是Apache Commons Net库的一个特定版本,即3.3版本。 **描述解析:**"commons-net-3.3.jar,欢迎下载" 描述简单地重申了我们正在处理的文件名,暗示这是一个可供下载的资源。...

    commons-net-3.1.jar,3.3,3.6版本

    这个库在不同的版本中提供了各种功能的增强和优化,比如`commons-net-3.1.jar`, `commons-net-3.3.jar`, 和 `commons-net-3.6.jar`。下面将详细阐述这些版本中涉及的主要知识点: 1. **FTP(文件传输协议)支持**:...

    ant-commons-net-1.6.jar.zip

    在Ant的世界里,`ant-commons-net-1.6.jar`是一个非常重要的组件,它是Apache Ant对Apache Commons Net库的封装,为Ant提供了丰富的网络操作功能。这个库的版本号为1.6,体现了其在发布时的稳定性和兼容性。 Apache...

    aduna-commons-net-2.6.0.jar.zip

    标题中的"aduna-commons-net-2.6.0.jar.zip"是一个Java库的压缩文件,其中包含了"aduna-commons-net-2.6.0.jar"这个特定版本的Java档案(JAR)文件。Aduna Commons Net是Aduna项目的一部分,它是一个开源软件框架,...

    commons-net-3.3.jar

    在`commons-net-3.3.jar`中,FTPClient类是核心,它实现了完整的FTP协议。开发者可以通过创建FTPClient实例,然后连接到FTP服务器,进行登录、设置传输模式(ASCII或BINARY)、改变工作目录、上传和下载文件等一系列...

    commons-net-3.3-3.4-3.5-3.6.zip

    在这个压缩包"commons-net-3.3-3.4-3.5-3.6.zip"中,包含了Apache Commons Net库的四个不同版本:3.3、3.4、3.5和3.6,这使得开发者可以根据项目的具体需求选择适合的版本。 Apache Commons Net库是Apache软件基金...

    commons-net-1.4.1.jar

    在这个版本中,我们聚焦于"commons-net-1.4.1.jar",这是一个专注于FTP(文件传输协议)功能的组件。该库为Java开发者提供了丰富的API,以便在他们的应用程序中轻松地集成FTP服务。 FTP是互联网上最古老的协议之一...

    commons-net-3.2.jar

    1. FTP/FTPS模块:Apache Commons Net提供了强大的FTP客户端支持,包括文件上传、下载、列表、删除、重命名等操作,同时也支持FTP over SSL/TLS(FTPS)以确保数据传输的安全性。 2. Telnet模块:这个模块提供了对...

    Apache Commons NET 3.0

    1. FTP支持:Apache Commons Net 3.0提供了全面的FTP客户端实现,允许开发者进行文件上传、下载、目录浏览、文件重命名等操作。它支持FTP和FTPS(FTP over SSL/TLS)协议,确保数据传输的安全性。FTPClient类是主要...

    org.apache.commons.net.ftp

    2. **FTPSServer**: 如果你需要支持安全的FTP(FTPS),Apache Commons Net也提供了这个类,它支持SSL/TLS协议,可以提供数据传输的安全性。 3. **FTPFile**: 该类代表FTP服务器上的一个文件或目录,提供了获取...

    commons-net-3.0.1.jar

    Apache Commons Net是一个由Apache软件基金会开发的Java库,它提供了多种网络协议的实现,包括FTP(文件传输协议)、FTPS(安全文件传输协议)、TFTP(小型文件传输协议)以及SMTP(简单邮件传输协议)等。...

    commons-net-2.0

    标题中的"commons-net-2.0"指的是Apache Commons Net库的2.0版本。这个库是Apache软件基金会的一个项目,提供了各种网络协议的实现,包括FTP、FTPS、TFTP、NNTP、SMTP、POP3以及telnet等。在Java编程环境中,这个库...

    commons-net-2.2.jar_JAR包源码

    Apache Commons Net库的`commons-net-2.2.jar`为我们提供了强大的FTP文件上传功能。通过源码学习,不仅可以理解其内部工作机制,还能为我们的开发工作带来便利。无论是初学者还是经验丰富的开发者,都能从中受益,...

    commons-net-1.4.1-src.tar.gz

    在这个"commons-net-1.4.1-src.tar.gz"压缩包中,包含了Apache Commons Net 1.4.1版本的源代码,对于需要深入理解或定制FTP文件操作的开发者来说,这是一个宝贵的资源。 FTP是互联网上最常用的文件传输机制之一,...

    commons-net-2.0.jar.zip

    在描述中提到的问题,开发者在寻找`org.apache.commons.net.telnet.TelnetClient`类的过程中遇到困扰,而`commons-net-2.0.jar`正是解决这个问题的关键。 Apache Commons Net 2.0版本包含了对Telnet协议的全面支持...

    commons-net-3.0.1.rar

    在Android中使用Apache Commons Net,首先需要将"commons-net-3.0.1.jar"文件添加到项目的libs目录下,并在构建路径中包含它。在Gradle构建系统中,可以在app的build.gradle文件中添加如下依赖: ```groovy ...

    commons-net-3.3

    Apache Commons Net是一个强大的Java库,专门用于处理各种网络协议,如FTP、FTPS、TFTP、NNTP、SMTP等。在3.3版本中,这个库提供了丰富的功能,使得开发者可以方便地在Java应用程序中实现文件和文件夹的上传、下载...

Global site tag (gtag.js) - Google Analytics