Java et Ubuntu, problèmes de connexion au serveur FTP java


Ok, j'ai donc écrit mon serveur ftp JAVA très simple. Je veux m'y connecter, sur la même machine. J'utilise ubuntu 11.10. J'essaie d'utiliser la commande "ftp localhost" mais je reçois connexion refusée. J'ai cherché et il semble que j'ai besoin d'installer un serveur FTP??....

Je demande si c'est ce que je devrais faire, si oui lequel et où puis-je le trouver. Ou est-ce que je n'utilise tout simplement pas la commande ftp?

Code source:

FTPServer.java

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;
        }
    }
}
}

FTPProtocol.java

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;
        }
    }
}
Author: Thorbjørn Ravn Andersen, 2012-05-21

1 answers

Sous Linux, vous ne pouvez pas utiliser le port 21 sauf si vous êtes root. Au lieu de cela, liez - vous à par exemple 2121 et utilisez un client qui vous permet de spécifier le numéro de port.

 0
Author: Thorbjørn Ravn Andersen, 2012-05-21 17:26:03