package examples.ftpServer; import <a href="http://lib.csdn.net/base/javase" class='replace_word' title="Java SE知识库" target='_blank' style='color:#df3434; font-weight:bold;'>Java</a>.io.File; import org.apache.ftpserver.FtpServer; import org.apache.ftpserver.FtpServerFactory; import org.apache.ftpserver.ftplet.FtpException; import org.apache.ftpserver.listener.ListenerFactory; import org.apache.ftpserver.ssl.SslConfigurationFactory; import org.apache.ftpserver.usermanager.PropertiesUserManagerFactory; public class StartFTPS { /** * 通过程序启动FTP with SSL认证,以Apache FTPServer为例 * @param args * @throws FtpException */ public static void main(String[] args) throws FtpException { // TODO Auto-generated method stub FtpServerFactory serverFactory = new FtpServerFactory(); ListenerFactory factory = new ListenerFactory(); // set the port of the listener factory.setPort(2221); // define SSL configuration SslConfigurationFactory ssl = new SslConfigurationFactory(); ssl.setKeystoreFile(new File("F:/FTP/ftpserver-1.0.5/apache-ftpserver-1.0.5/res/kserver.keystore")); ssl.setKeystorePassword("123456"); // ssl.setTruststoreFile(new File("F:/FTP/ftpserver-1.0.5/apache-ftpserver-1.0.5/res/tserver.keystore")); // ssl.setKeystorePassword("123456"); // set the SSL configuration for the listener factory.setSslConfiguration(ssl.createSslConfiguration()); factory.setImplicitSsl(true); // replace the default listener serverFactory.addListener("default", factory.createListener()); PropertiesUserManagerFactory userManagerFactory = new PropertiesUserManagerFactory(); userManagerFactory.setFile(new File("F:/FTP/ftpserver-1.0.5/apache-ftpserver-1.0.5/res/conf/users.properties")); serverFactory.setUserManager(userManagerFactory.createUserManager()); // start the server FtpServer server = serverFactory.createServer(); server.start(); } }
然后是客户端连接FTPS
package examples.ftpClient; import java.io.FileInputStream; import java.io.IOException; import java.io.PrintWriter; import java.security.KeyStore; import javax<a href="http://lib.csdn.net/base/dotnet" class='replace_word' title=".NET知识库" target='_blank' style='color:#df3434; font-weight:bold;'>.NET</a>.ssl.KeyManager; import javax<a href="http://lib.csdn.net/base/dotnet" class='replace_word' title=".NET知识库" target='_blank' style='color:#df3434; font-weight:bold;'>.Net</a>.ssl.KeyManagerFactory; import javax.net.ssl.TrustManager; import javax.net.ssl.TrustManagerFactory; import org.apache.commons.net.PrintCommandListener; import org.apache.commons.net.ftp.FTPSClient; public class ConnectFTPS { private static FTPSClient ftpsClient; private static final String trust_path = "F:/FTP/ftpserver-1.0.5/apache-ftpserver-1.0.5/res/kclient.keystore"; private static final String trust_pw = "123456"; private static final String key_path = "F:/FTP/ftpserver-1.0.5/apache-ftpserver-1.0.5/res/tclient.keystore"; private static final String key_pw = "123456"; private static final String serverIP = "127.0.0.1"; private static final int serverPort = 2221; private static final int defaultTimeout = 10000; private static final int soTimeout = 900000; private static final int dataTimeout = 5000; /** * <a href="http://lib.csdn.net/base/softwaretest" class='replace_word' title="软件测试知识库" target='_blank' style='color:#df3434; font-weight:bold;'>测试</a>连接FTP With SSL,以Apache FTPServer为例 * @param args * @throws Exception */ public static void main(String[] args) throws Exception { if (!connect("active")) { connect("passive"); } FileInputStream fs = new FileInputStream(trust_path); System.out.println("storeFile: " + ftpsClient.storeFile("test_file", fs)); fs.close(); ftpsClient.disconnect(); } /** * 登陆FTP * @param active * @return * @throws Exception */ private static boolean connect(String active) throws Exception { ftpsClient = new FTPSClient(true); ftpsClient.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out))); ftpsClient.setKeyManager(getKeyManager()); //ftpsClient.setTrustManager(getTrustManager()); ftpsClient.setDefaultTimeout(defaultTimeout); ftpsClient.connect(serverIP, serverPort); System.out.println("已经连接FTP"); ftpsClient.setSoTimeout(soTimeout); ftpsClient.getReplyCode(); ftpsClient.execPBSZ(0); ftpsClient.execPROT("P"); ftpsClient.login("admin", "admin"); ftpsClient.changeWorkingDirectory("/"); ftpsClient.setDataTimeout(dataTimeout); if (active.equalsIgnoreCase("active")) { ftpsClient.enterLocalActiveMode(); } else { ftpsClient.enterLocalPassiveMode(); } System.out.println("已经登陆FTP"); return testLink(); } /** * 遍历FTP文件 * @return */ private static boolean testLink() { long t1 = System.currentTimeMillis(); try { System.out.println("List file length:" + ftpsClient.listFiles().length); } catch (IOException e) { System.out.println(e.getMessage()); long t2 = System.currentTimeMillis(); long t = (t2 - t1) / 1000; System.out.println("t: " + t); try { ftpsClient.disconnect(); } catch (IOException e1) { e1.printStackTrace(); } return false; } return true; } private static KeyManager getKeyManager() throws Exception { KeyStore key_ks = KeyStore.getInstance("JKS"); key_ks.load(new FileInputStream(key_path), key_pw.toCharArray()); KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); kmf.init(key_ks, key_pw.toCharArray()); KeyManager[] km = kmf.getKeyManagers(); System.out.println("km len: " + km.length); return km[0]; } private static TrustManager getTrustManager() throws Exception { KeyStore trust_ks = KeyStore.getInstance("JKS"); trust_ks.load(new FileInputStream(trust_path), trust_pw.toCharArray()); TrustManagerFactory tf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); tf.init(trust_ks); TrustManager[] tm = tf.getTrustManagers(); System.out.println("tm len: " + tm.length); return tm[0]; } }
相关推荐
"本地FTP服务创建软件"是一个工具,可以帮助用户在自己的计算机上快速设置并运行一个FTP服务器,以便其他人通过网络访问和交互文件。 创建本地FTP服务的步骤如下: 1. **下载和安装**:首先,你需要下载FTP服务的...
FTP 服务器创建用户及其权限设置是互联网信息服务(IIS)服务器中的一项重要功能,通过设置用户和权限,可以控制用户对 FTP 服务器的访问和操作权限。本文将详细介绍如何创建用户及其权限设置在 FTP 服务器中。 一...
利用IIS创建FTP服务 并提供测试
本篇将详细介绍如何使用C#进行FTP操作,包括上传文件、下载文件、在服务器上创建文件夹以及删除服务器上的文件。 首先,进行FTP操作需要使用到System.Net命名空间中的FtpWebRequest和FtpWebResponse类。以下是一些...
2. **创建FTP站点**:打开“Internet 信息服务 (IIS) 管理器”,右键点击“网站” -> “新建” -> “FTP 站点”,按照向导提示进行操作。 3. **设置FTP站点名称**:默认情况下,IIS会自动生成一个名称,也可以根据...
在本文中,我们将深入探讨如何使用C#编程语言创建一个FTP(文件传输协议)服务器。FTP服务器是用于在客户端和服务器之间传输文件的核心组件。在C#中实现FTP服务器涉及理解网络编程、FTP协议规范以及如何处理不同类型...
详解ftp创建文件权限问题 一、问题 有一个这样的需求,admin为一个Linux为其FTP应用创建的一个有权限限制的用户,通过admin用户可以进行登录FTP服务,登录FTP服务后,创建文件夹,该文件夹的用户和用户组都是admin,...
创建FTP服务器的源代码通常涉及网络编程、多线程处理以及文件I/O操作等技术。以下是对FTP服务器创建源代码的一些关键知识点的详细解释: 1. FTP协议基础: FTP基于TCP/IP协议,提供双向数据传输,允许用户从远程...
在这个场景中,我们将探讨如何使用Node.js中的`ftp-srv`库来创建一个简单的FTP服务器。`ftp-srv`是一个易于使用的FTP服务器模块,它允许开发者自定义各种操作,包括处理文件系统的交互。 首先,`index.js`是主入口...
FTP(File Transfer Protocol)是一种用于在互联网上传输文件的标准协议,本地创建FTP服务器可以让用户方便地分享和存储文件。对于初学者来说,了解如何搭建FTP服务器是进入网络服务管理领域的重要一步。 首先,...
本文档主要实现FTP服务器的相关知识点介绍,同时在Centos系统下实现安装
麒麟V10服务器搭建FTP服务 FTP(File Transfer Protocol)是一种常用的文件传输协议,麒麟V10服务器搭建FTP服务可以帮助用户快速搭建FTP服务器,实现文件的上传、下载和共享。本文将指导用户如何在麒麟V10服务器上...
### 创建FTP服务器的知识点 #### 一、FTP服务器概述 FTP(File Transfer Protocol),即文件传输协议,是一种用于在网络上进行文件传输的标准协议。通过FTP,用户可以在网络中的两台计算机之间传输文件,既可以将...
本教程将详细讲解如何使用Java实现FTP服务器的文件上传、下载以及创建多级文件夹的功能,并提供一个可以直接使用的demo。 首先,Java中的FTP操作通常依赖于`org.apache.commons.net.ftp`库,这个库提供了FTPClient...
为了方便开发者在PHP中处理FTP相关的任务,如拷贝、移动、删除文件以及创建目录,经常会使用到FTP操作类。本篇文章将深入探讨这个PHP的FTP操作类,并解释其核心功能和使用方法。 首先,FTP操作类通常包含了一系列的...
5. Ubuntu下与FTP通信:在data目录中创建文件,然后通过FTP服务上传到服务器。同时,也可以下载FTP服务器上的文件到本地计算机。 6. Windows与Ubuntu上FTP服务器的通信:需要将虚拟机的网络适配器设置为桥接模式,...
系统会为FTP服务创建一个名为`ftp`的特殊用户,并在`/home`目录下建立一个名为`ftpd`的目录,作为匿名用户的登录目录。该目录通常包含以下几个子目录: - `/home/ftpd/bin`:存储可供FTP用户使用的可执行文件 - `/...
FTP服务器则是运行FTP服务的软件,它接收客户端的连接请求,处理文件传输操作,并管理用户权限。在这个场景中,我们主要讨论FTP服务器的设置、工作原理以及如何使用。 FTP服务器的运作机制: FTP服务器基于TCP/IP...
创建FTP服务器软件,特别是支持Windows操作系统如Win7、Win10和Win11,是为用户提供便捷的文件共享和交换服务。本文将详细介绍FTP服务器的构建、工作原理以及FileZilla Server在其中的作用。 FTP服务器是通过FTP...