приложение для обмена файлами Java, регистрация пользователей - PullRequest
0 голосов
/ 09 января 2010

ОК. У меня так много вопросов относительно моего приложения для обмена файлами, что я не знаю, с чего начать. Мои знания Java очень ограничены, и я буду удовлетворен любой помощью, которую вы мне предоставите.

Как говорится, вот и вопросы.

Во-первых, я работаю над методом входа пользователя, который должен выглядеть примерно так:

import java.io.File;
import java.util.ArrayList;


public class User {

    String username;
    String IPAdresa;

    public User(String username, String IPAdresa) {

         this.username = username.toLowerCase();
         this.IPAdresa = IPAdresa;

    }

    public void fileList() {

        ArrayList<String> list = new ArrayList<String>();

        File folder = new File("C:\\userfolder");

           File[] files = folder.listFiles();

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

                list.add(i, files[i].toString());

           }

    }
}

Как вы можете видеть, у меня есть класс пользователя, который содержит параметры относительно пользователя, такие как имя пользователя и IP-адрес, а также метод fileList, который выводит список файлов из определенной папки и создает массив, содержащий эти имена файлов в виде строк.

Следующее, что мне нужно сделать, это создать класс или метод, который предоставляет функцию поиска клиентам / пользователям. Например, когда пользователь входит в приложение, он захочет найти определенный файл, а также предоставит список файлов из общей папки другим пользователям. Насколько я понял, мой наставник должен содержать класс Request для каждого цикла, который может выполнять поиск в соответствующих списках файлов пользователя. Я не уверен, как это осуществить, и у меня много проблем с работой со списками массивов.

Вот как это должно выглядеть примерно так: (пока я использую псевдокод для этого)

public class RequestForFile {

    ArrayList list = new ArrayList();
    User user = new User("Slavisha","123.23.34.45");

    public RequestForFile() {
        list.add(user);
            foreach (User user in userlist) {
              foreach (String str in User.fileList()) {
                  if (str == request)
                  ...
              }
            }

    }

}

Следующий вопрос: Как пользователи входят в приложение Java? Я думал об этом весь день и пытался обойти это, но я просто потерпел неудачу. У меня пока нет GUI / Swing, надеюсь в конце концов сделать это.

У меня есть еще 3 класса, которые представляют Client, Server и HandleClient.

Как я уже сказал, любой вклад приветствуется. Я вернусь с большим количеством вопросов наверняка. Спасибо

Ответы [ 3 ]

0 голосов
/ 09 января 2010

GUI будет использоваться для предоставления пользователю чего-то другого, кроме командной строки, но Swing или AWT не предоставляют функциональность, с которой вы, похоже, ассоциируете их, а именно - соединение сервера и клиента, что позволяет пользователю войти в работающий экземпляр Сервера. Графический интерфейс сделает этот процесс более удобным для пользователя, но в основном вы говорите об использовании сокетов, чтобы клиент мог подключиться к серверу (известный IP-адрес и открытый порт, заданный для соединения), отправляющих некоторую информацию пользователя (имена общих файлов), а затем получает список всех возможных общих файлов с сервера. Клиент может затем локально искать через этот список.

Вы можете сделать это наоборот - Сервер получает запрос от Клиента, выполняет поиск и просто отправляет результат Клиенту. Зависит от того, где вы хотите разместить большую часть своей рабочей нагрузки. В любом случае, вы говорите об отправке строк через сокетное соединение. По крайней мере, пока вы не перейдете от просмотра списков имен файлов к фактической отправке файлов от одного клиента другому.

Итак, вы, вероятно, захотите начать с учебника по сокетам , чтобы посмотреть, как две отдельные программы на разных компьютерах могут отправлять информацию друг другу.

0 голосов
/ 09 января 2010

Вы задаете слишком много вопросов в одном вопросе. Один вопрос касается того, как ваш объект RequestForFile знает, с каким пользователем он имеет дело. Это вопрос входа в систему. Предлагаю вам поднять это отдельно.

Давайте пока предположим, что мы знаем, что это Славиша на том ipaddress, который спрашивает. Здесь довольно много проблем:

1). Что просят? RequestForFile () не принимает никаких параметров, чтобы сказать, какой файл запрашивается. Так в чем же заключается повторяемость RequestForFile ()? предполагается ли представлять один запрос? Это ответственно за фактическое нахождение файла? Возвращаете это?

2). Ваш метод User.fileList () на самом деле не делает ничего полезного. Он ничего не возвращает, поэтому по завершении все, что он обнаружил, потеряно.

3). В любом случае, кажется, что каждый пользователь просматривает одну и ту же папку: «C: \ userfolder» вы намеревались создать отдельный каталог для каждого пользователя.

4). Просматривать списки, вероятно, неэффективно, вам нужно прочитать о наборах и картах.

Я думаю, вам нужен довольно подробный редизайн. Ваш пользовательский класс должен ответить на такие вопросы, как «есть ли у этого пользователя этот файл». Класс REquest должен идентифицировать конкретного пользователя и запросить у него файл. Мне не ясно, как вы собираетесь передавать файл с клиента на сервер.

Я должен сказать, что программирование клиента / сервера в качестве начального учебного процесса довольно амбициозно.

0 голосов
/ 09 января 2010

Я не совсем уверен, что вы подразумеваете под "входом". Если (как я считаю) вы хотите идентифицировать пользователя в вашем Java-приложении, используйте:

System.getProperty("user.name");

, который дает вам имя пользователя, который в данный момент запускает ваше приложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...