2016-04-09 10 views
-1

私は、TCPソケットに基づいてFTPプログラムを作成することになっています。変数級FTPServer.javaについてはTCPソケットに基づくFTPプログラム

は以下のとおりです。

socket, input, output, EXIT_CMD, PUT_CMD, GET_CMD 

方法は以下のとおりです。ここ

FTPServer(), receiveFile(), sendFile(), run(), main() 

は私のコードは、これまでのところです:

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

public class FTPServer extends Thread 
{ 
    private Socket socket = null; 
    private DataInputStream input = null; 
    private DataOutputStream output = null; 
    final private String EXIT_CMD = "exit"; 
    final private String PUT_CMD = "put"; 
    final private String GET_CMD = "get"; 

    public FTPServer(Socket socket) 
    { 
     this.socket = socket 
     input = new DataInputStream(socket.getInputStream()); 
     output = new DataOutputStream(socket.getOutputStream()); 

     public void start() 
     { 
      if(thread == null) 
      { 
       thread = new Thread(this); 
       thread.start; 
      } 
     } 
    } 

    public void receiveFile() 
    { 
     //get file name 
     //write file 
     File file = new File(fileName); 
     FileOutputStream outFile = new FileOutputStream(file); 
     String line; 
     int ch; 
     do 
     { 
      line = intput.readUTF(); 
      ch = Integer.parseInt(line); 
      if(ch != -1); 
      ch = Integer.parseInt(line); 
      if(ch != -1); 
      outFile.write(ch); 
     } while(ch != -1); 

     outFile.close(); 
    } 

    public void sendFile() 
    { 
     output.writeUTF("READY"); 
     FileInputStream inFile = new FileInputStream(file); 
     int ch; 
     do 
     { 
      ch = inFile.read(); 
      output.writeUTF(String.valueOf(ch)); 
     } while(ch != -1); 

     inFile.close(); 
    } 

    public void run() 
    { 
     while(true) 
     { 
      String cmd = input.readUTF(); 

      if(cmd.equals(PUT_CMD) 
      { 
       receiveFile(); 
      } 
      if(cmd.equals(GET_CMD) 
      { 
       sendFile(); 
      } 
      if(cmd.equals(EXIT_CMD)) 
      { 
       System.exit(0); 
      } 
     } 
    } 

    public static void main(String[] args) throws Exception 
    { 
     //check parameters 
     if(args.length != 1) 
     { 
      System.out.println("Usage: java FTPServer <port>"); 
      return; 
     } 

     int port = Integer.parseInt(args[0]); 
     ServerSocket serverSocket = new ServerSocket(port); 
     System.out.println("Waiting..."); 

     while(true) 
     { 
      //open a socket for a client 
      Socket socket = serverSocket.accept(); 
      System.out.println("Connected to client"); 

      FTPServer server = new FTPServer(socket); 
     } 
    } 
} 

私はこれがあるかもしれない知っています混乱。しかし、それが私をここに連れてきました。

+0

投稿に特定の質問が表示されません。あなたは私たちにあなたの仕事を仕上げるように頼んでいますか? –

+0

[RFC114](https://tools.ietf.org/html/rfc114)で定義されている[ファイル転送プロトコル](https://en.wikipedia.org/wiki/File_Transfer_Protocol)を実際に意味しますか?それから、あなたが書いたものよりも少し(あるいはむしろかなりたくさん)かかる。 –

+0

FTPServer.javaとFTPClient.javaを作成する必要がありますが、誰かがFTPServer.javaクラスを終了するのを手伝ってもらえませんか?そこから、私はFTPClientクラスの実行方法を理解できると思います。これは、TCPソケットに基づいたクライアント/ホストFTPプログラムです...これは私の最初の投稿であり、私は本当にそれ以上のことを明確にする方法を知らない。 – Banger2448

答えて

0

練習のためだけにFTPの最も単純な機能を使いたい場合は、かなり近いです。

は、私はあなたがほとんどの必要があると思います。call単にserver.runを

  • 移動主な機能
  • は、あなたの主な機能でwhileループを取り除く別のクラスに、そして()
+1

ありがとうございました!はい、ここでの目標はFTPの単純な機能を使うことだったと思います。 – Banger2448

+0

ようこそ。これがあなたを助けたら、私の答えをアップアップしてもらえますか? –