Отправка списка файлов с сервера на 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
}
}
Я упустил фактическое чтение и запись из / в сокеты, но вы поймете идею.