扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
前面讨论了基本的FTP协议和会话,下面我们用Java来开发一个简单的Ftp服务器。
为了简单起见,我们只设计两个类:一个FtpServer类用于监听,一个FtpConnection类代表一个用户连接,每个连接都使用一个线程。
FtpServer负责初始化ServerSocket并监听用户连接,它接受一个参数来初始化Ftp服务器的根目录:
package jftp;
import java.net.*;
public class FtpServer extends Thread{
public static final int FTP_PORT= 21; // default port
ServerSocket ftpsocket = null;
public static void main(String[] args) {
if(args.length!=1) {
System.out.println("Usage:");
System.out.println("java FtpServer [root dir]");
System.out.println("nExample:");
System.out.println("java FtpServer C:\\ftp\\");
return;
}
FtpConnection.root = args[0];
System.out.println("[info] ftp server root: " + FtpConnection.root);
new FtpServer().start();
}
public void run() {
Socket client = null;
try {
ftpsocket = new ServerSocket(FTP_PORT);
System.out.println("[info] listening port: " + FTP_PORT);
for(;;) {
client = ftpsocket.accept();
new FtpConnection(client).start();
}
}
catch(Exception e) { e.printStackTrace(); }
}
}
每当有一个客户连接,就创建一个新的FtpConnection线程以便为用户服务,你可以很方便地限制最大连接数以确保Ftp服务器负担不会过重。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者