2

簡単な説明:

私のアプリケーションはサーバー側からクライアント側にファイルを送信し、クライアントはファイルの名前と拡張子を選択しますが、クライアントがファイルのリストを見ることができるように、サーバ。

メソッドは機能していますが、ファイル名をクライアントに送信し、それらをに挿入しJPanelてそこにリストする必要があるため、ユーザーは必要なファイルを選択できます。

サーバー側での私の方法は次のとおりです。

 public static void listfile() {

 String path = "C:/SAVE"; 

  String files;
  File folder = new File(path);
  File[] listOfFiles = folder.listFiles(); 

  for (int i = 0; i < listOfFiles.length; i++) 
  {

   if (listOfFiles[i].isFile()) 
   {
   files = listOfFiles[i].getName();
   System.out.println(files);
      }
  }
    }

呼び出し時にファイルのリストをクライアントに送信するように変更するにはどうすればよいですか。

4

1 に答える 1

1

TCP 接続を使用している場合、サーバーは「listFiles」というコマンドを実装できます。このコマンドを受信すると、クライアントにファイル リストを送信する必要があります。

クライアントはサーバーに接続し、コマンド「listFiles」を送信し、サーバーから送信されたファイルのリストを読み取り、それを JPanel に表示する必要があります。

次のパターンの単純なシングル スレッド サーバーがあるとします。

class Server
{
    public void run()
    {
        ServerSocket server = new ServerSocket(<portno>);

        Socket socket = server.accept();

        InputStream in = socket.getInputStream(); // for reading the command

        OutputStream out = socket.getOutputStream(); // for writing out the list

        // Now read the argument from in, say the result is in variable "cmd"

        if("listFiles".equals(cmd))
        {
            // invoke your list files logic, and instead of writing to the console
            // write it to out
        }
    }
}

クライアントは次のパターンに従う必要があります。

class Client
{
    public void getList()
    {
        Socket client = new Socket(<portno>);
        InputStream in = client.getInputStream(); // to read in the file list
        OutputStream out = client.getOutputStream(); // to send the listFiles command

        // Write the  listFiles command to out

        // Read in the list of files from in

        // Update your JPanel with the list
    }
}

ソケットから/への実際の読み取りと書き込みは省略しましたが、アイデアは理解できるでしょう。

于 2013-01-14T14:26:46.587 に答える