好的,所以我编写了非常简单的JAVA ftp服务器。我现在想在同一台机器上连接它。我正在使用ubuntu 11.10。我一直在尝试使用命令“ftp localhost”,但我一直拒绝连接。我一直在搜索,看起来我需要安装一个ftp服务器?? ....
我在问这是否是我应该做的,如果是的话,哪一个,哪里可以找到它。或者我只是没有正确使用ftp命令?
源代码:
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class FTPserver
{
public static void main(String [] args)
{
if (args.length != 1)
throw new IllegalArgumentException( "Parameter(s): <Port>");
int threadPoolSize = 10;
int port = Integer.parseInt(args[0]);
final ServerSocket server;
try
{
server = new ServerSocket(port);
}
catch (IOException e1)
{
return;
}
ExecutorService exec = Executors.newFixedThreadPool(threadPoolSize);
while (true)
{
try
{
Socket sock = server.accept();
exec.submit(new FTPProtocol(sock));
}
catch (IOException e)
{
System.err.println(e.getMessage());
return;
}
}
}
}
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
class FTPProtocol implements Runnable
{
static String greeting = "220 Service Ready.\r\n";
static String needPassword = "331 User name ok, need password.\r\n";
static String closing = "421 Service not available, closing control connection.\r\n";
static byte[] reply220 = null;
static byte[] reply331 = null;
static byte[] reply421 = null;
Socket sock = null;
public FTPProtocol(Socket so)
{
sock = so;
reply220 = greeting.getBytes();
reply331 = needPassword.getBytes();
reply421 = closing.getBytes();
}
public void run()
{
handleFTPClient(sock);
}
void handleFTPClient(Socket sock)
{
InputStream is = null;
OutputStream os = null;
byte[] inBuffer = new byte[1024];
try
{
is = sock.getInputStream();
os = sock.getOutputStream();
os.write(reply220);
int len = is.read(inBuffer);
System.out.write(inBuffer, 0, len);
os.write(reply331);
len = is.read(inBuffer);
System.out.write(inBuffer, 0, len);
os.write(reply421);
sock.close();
}
catch (IOException e)
{
System.err.println(e.getMessage());
return;
}
}
}
答案 0 :(得分:0)
在Linux下,除非您是root用户,否则无法使用端口21。而是绑定到例如2121并使用允许您指定端口号的客户端。