[譯文]使用Java搭建FTP服務(wù)器
原文鏈接:https://mina.apache.org/ftpserver-project/embedding_ftpserver.html
本文是根據(jù)原文直接翻譯過來晤柄。真正使用下面的代碼是執(zhí)行不了的空凸。如果要查看可執(zhí)行的代碼夸楣,請看我根據(jù)此文檔做的一個demo工程骆莹。https://gitee.com/olencc/FtpServer
FtpServer是為了輕松嵌入到你的系統(tǒng)中而設(shè)計的旧困,啟動和運行基本服務(wù)器非常簡單敷搪,就像下面這樣
FtpServerFactory serverFactory = new FtpServerFactory();
// 啟動服務(wù)
FtpServer server = serverFactory.createServer();
server.start();
想要讓上面的代碼運行,你需要將以下的jar包引入到你的工程中
- mina-core, 2.0-M3 or later
- slf4j-api
- A SLF4J implementation of your choice, for example slf4j-simple-1.5.3.jar
- ftplet-api
- ftpserver-core
現(xiàn)在留量,您可能希望根據(jù)您的特定需求配置服務(wù)器窄赋。例如,您可能希望在非特權(quán)端口上運行楼熄,以便在Linux / Unix上以root身份運行忆绰。為此,您需要配置一個監(jiān)聽器(listener)孝赫。監(jiān)聽器是FtpServer的一部分较木,用于完成網(wǎng)絡(luò)管理红符。默認情況下青柄,會創(chuàng)建名為“default”的監(jiān)聽器,但您可以根據(jù)需要添加任意數(shù)量的監(jiān)聽器预侯,例如致开,您可以提供一個在防火墻外部使用的監(jiān)聽器,一個在內(nèi)部使用的監(jiān)聽器萎馅。
現(xiàn)在双戳,讓我們配置默認監(jiān)聽器等待連接的端口。
FtpServerFactory serverFactory = new FtpServerFactory();
ListenerFactory factory = new ListenerFactory();
// 設(shè)置監(jiān)聽器端口
factory.setPort(2221);
// 替換默認監(jiān)聽器
serverFactory.addListener("default", factory.createListener());
// 啟動服務(wù)
FtpServer server = serverFactory.createServer();
server.start();
現(xiàn)在糜芳,讓我們使客戶端可以使用FTPS(FTP 使用 SSL進行通訊)作為默認監(jiān)聽器飒货。
FtpServerFactory serverFactory = new FtpServerFactory();
ListenerFactory factory = new ListenerFactory();
// 設(shè)置監(jiān)聽器端口
factory.setPort(2221);
// 定義一個ssl配置
SslConfigurationFactory ssl = new SslConfigurationFactory();
ssl.setKeystoreFile(new File("src/test/resources/ftpserver.jks"));
ssl.setKeystorePassword("password");
// 將ssl配置添加到監(jiān)聽器中
factory.setSslConfiguration(ssl.createSslConfiguration());
factory.setImplicitSsl(true);
// 替換默認的監(jiān)聽器
serverFactory.addListener("default", factory.createListener());
// 設(shè)置用戶信息
PropertiesUserManagerFactory userManagerFactory = new PropertiesUserManagerFactory();
userManagerFactory.setFile(new File("myusers.properties"));
serverFactory.setUserManager(userManagerFactory.createUserManager());
// 啟動服務(wù)
FtpServer server = serverFactory.createServer();
server.start();
到這里就差不多了,這是你通常需要的基礎(chǔ)知識峭竣。有關(guān)更多高級功能塘辅,請查看我們的配置文檔。