`

ftp服务创建

 
阅读更多
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服务器,以便其他人通过网络访问和交互文件。 创建本地FTP服务的步骤如下: 1. **下载和安装**:首先,你需要下载FTP服务的...

    ftp服务器创建用户及其权限设置的演示说明(自动保存的).pdf

    FTP 服务器创建用户及其权限设置是互联网信息服务(IIS)服务器中的一项重要功能,通过设置用户和权限,可以控制用户对 FTP 服务器的访问和操作权限。本文将详细介绍如何创建用户及其权限设置在 FTP 服务器中。 一...

    FTP服务创建与测试

    利用IIS创建FTP服务 并提供测试

    C#FTP操作:上传、下载、在服务器上创建文件夹、删除服务器上的文件

    本篇将详细介绍如何使用C#进行FTP操作,包括上传文件、下载文件、在服务器上创建文件夹以及删除服务器上的文件。 首先,进行FTP操作需要使用到System.Net命名空间中的FtpWebRequest和FtpWebResponse类。以下是一些...

    在xp系统下搭建ftp服务器

    2. **创建FTP站点**:打开“Internet 信息服务 (IIS) 管理器”,右键点击“网站” -&gt; “新建” -&gt; “FTP 站点”,按照向导提示进行操作。 3. **设置FTP站点名称**:默认情况下,IIS会自动生成一个名称,也可以根据...

    使用 C# 创建一个 FTP 服务器

    在本文中,我们将深入探讨如何使用C#编程语言创建一个FTP(文件传输协议)服务器。FTP服务器是用于在客户端和服务器之间传输文件的核心组件。在C#中实现FTP服务器涉及理解网络编程、FTP协议规范以及如何处理不同类型...

    详解ftp创建文件权限问题

    详解ftp创建文件权限问题 一、问题 有一个这样的需求,admin为一个Linux为其FTP应用创建的一个有权限限制的用户,通过admin用户可以进行登录FTP服务,登录FTP服务后,创建文件夹,该文件夹的用户和用户组都是admin,...

    ftp服务器的创建源代码

    创建FTP服务器的源代码通常涉及网络编程、多线程处理以及文件I/O操作等技术。以下是对FTP服务器创建源代码的一些关键知识点的详细解释: 1. FTP协议基础: FTP基于TCP/IP协议,提供双向数据传输,允许用户从远程...

    使用 ftp-srv 在 nodejs 创建FTP服务器,简单版

    在这个场景中,我们将探讨如何使用Node.js中的`ftp-srv`库来创建一个简单的FTP服务器。`ftp-srv`是一个易于使用的FTP服务器模块,它允许开发者自定义各种操作,包括处理文件系统的交互。 首先,`index.js`是主入口...

    本地创建FTP服务器

    FTP(File Transfer Protocol)是一种用于在互联网上传输文件的标准协议,本地创建FTP服务器可以让用户方便地分享和存储文件。对于初学者来说,了解如何搭建FTP服务器是进入网络服务管理领域的重要一步。 首先,...

    Linux系统下FTP服务器实现

    本文档主要实现FTP服务器的相关知识点介绍,同时在Centos系统下实现安装

    麒麟V10服务器搭建FTP服务

    麒麟V10服务器搭建FTP服务 FTP(File Transfer Protocol)是一种常用的文件传输协议,麒麟V10服务器搭建FTP服务可以帮助用户快速搭建FTP服务器,实现文件的上传、下载和共享。本文将指导用户如何在麒麟V10服务器上...

    创建FTP服务器

    ### 创建FTP服务器的知识点 #### 一、FTP服务器概述 FTP(File Transfer Protocol),即文件传输协议,是一种用于在网络上进行文件传输的标准协议。通过FTP,用户可以在网络中的两台计算机之间传输文件,既可以将...

    java FTP服务器文件上传下载,创建多级文件夹.zip

    本教程将详细讲解如何使用Java实现FTP服务器的文件上传、下载以及创建多级文件夹的功能,并提供一个可以直接使用的demo。 首先,Java中的FTP操作通常依赖于`org.apache.commons.net.ftp`库,这个库提供了FTPClient...

    php的FTP操作类( 拷贝、移动、删除文件 创建目录 ).zip

    为了方便开发者在PHP中处理FTP相关的任务,如拷贝、移动、删除文件以及创建目录,经常会使用到FTP操作类。本篇文章将深入探讨这个PHP的FTP操作类,并解释其核心功能和使用方法。 首先,FTP操作类通常包含了一系列的...

    Linux下ftp服务器安装与配置实验报告

    5. Ubuntu下与FTP通信:在data目录中创建文件,然后通过FTP服务上传到服务器。同时,也可以下载FTP服务器上的文件到本地计算机。 6. Windows与Ubuntu上FTP服务器的通信:需要将虚拟机的网络适配器设置为桥接模式,...

    配置WU-FTP服务器.doc

    系统会为FTP服务创建一个名为`ftp`的特殊用户,并在`/home`目录下建立一个名为`ftpd`的目录,作为匿名用户的登录目录。该目录通常包含以下几个子目录: - `/home/ftpd/bin`:存储可供FTP用户使用的可执行文件 - `/...

    FTP服务器 FTP服务器

    FTP服务器则是运行FTP服务的软件,它接收客户端的连接请求,处理文件传输操作,并管理用户权限。在这个场景中,我们主要讨论FTP服务器的设置、工作原理以及如何使用。 FTP服务器的运作机制: FTP服务器基于TCP/IP...

    创建FTP服务器软件,支持WIN7,WIN10,WIN11

    创建FTP服务器软件,特别是支持Windows操作系统如Win7、Win10和Win11,是为用户提供便捷的文件共享和交换服务。本文将详细介绍FTP服务器的构建、工作原理以及FileZilla Server在其中的作用。 FTP服务器是通过FTP...

Global site tag (gtag.js) - Google Analytics