Отправка списка файлов с сервера на JPanel клиента

Краткое объяснение:

Мое приложение отправляет файлы со стороны сервера на сторону клиента, и клиент выбирает имя файла и расширение, однако, для того, чтобы клиент увидел список файлов, я написал метод, который выводил бы список файлов, доступных на сервер.

Хотя метод работает, но мне нужно отправить имена файлов клиенту и вставить их в 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);
      }
  }
    }

Как я могу изменить его так, чтобы он отправлял список файлов клиенту при вызове.

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

Я упустил фактическое чтение и запись из / в сокеты, но вы поймете идею.

Другие вопросы по тегам