前面讨论了基本的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服务器负担不会过重。
(待续)
闽公网安备 35060202000074号