FTP-клиент / сервер аутентификации входа - PullRequest
0 голосов
/ 16 октября 2019

У меня есть вопрос о создании FTP-клиента в Java.

Я создал что-то вроде FTP-клиента, который должен работать, но когда я запускаю его на терминале, он останавливается, некоторое время ждет, а затем возвращаетсообщение об ошибке. Клиент должен подключиться к IP-адресу сервера, который требует имя пользователя и пароль для аутентификации и входа в систему. Однако я не могу заставить логин работать.

Мне не нужно создавать FTP-сервер, в нашем учреждении уже есть сервер, к которому я должен подключиться.

Этокод, который у меня есть для FTP-клиента:

import java.io.*;
import java.net.*;

class FTPC
{
    public static void main(String[] args) throws Exception
    {
        String option;
        DataInputStream in=new DataInputStream(System.in);
        Socket s=new Socket("10.246.251.39",Integer.parseInt(args[0]));
        System.out.println("MENU");
        System.out.println("1.SEND");
        System.out.println("2.RECEIVE");
        FTPC ftp=new FTPC();

        while(true)
        {
            option=in.readLine();
            if(option.equals("1")){
                System.out.println("SEND Command Received..");
                ftp.sendfile(s);
            }
            else if(option.equals("2")){
                System.out.println("RECEIVE Command Received..");
                ftp.receivefile(s);
            }
        }
    }

    public void sendfile(Socket s) throws Exception
    {
        Socket ssock=s;

        DataInputStream in=new DataInputStream(System.in);

        DataInputStream cin=new DataInputStream(ssock.getInputStream());
        DataOutputStream cout=new DataOutputStream(ssock.getOutputStream());

        cout.writeUTF("RECEIVE");

        String filename=in.readLine();
        System.out.println("Reading File "+filename);
        cout.writeUTF(filename);
        File f=new File(filename);
        FileInputStream fin=new FileInputStream(f);
        int ch;
        do
        {
            ch=fin.read();
            cout.writeUTF(String.valueOf(ch));
        }while(ch!=-1);
        fin.close();
        System.out.println("File Sent");
    }

    public void receivefile(Socket s) throws Exception
    {
        Socket ssock=s;
        DataInputStream in=new DataInputStream(System.in);
        DataInputStream cin=new DataInputStream(ssock.getInputStream());
        DataOutputStream cout=new DataOutputStream(ssock.getOutputStream());

        cout.writeUTF("SEND");

        String filename=in.readLine();
        cout.writeUTF(filename);
        System.out.println("Receiving File "+filename);
        File f=new File(filename);
        FileOutputStream fout=new FileOutputStream(f);
        int ch;
        do
        {
            ch=Integer.parseInt(cin.readUTF());
            if(ch!=-1) fout.write(ch);
        }while(ch!=-1);
        System.out.println("Received File...");
        fout.close();
    }
} 
...