Pergunta

Ok, tenho tantas perguntas sobre meu aplicativo de compartilhamento de arquivos que não sei por onde começar. Meu conhecimento Java é muito limitado e ficarei satisfeito com qualquer ajuda que você me forneça.

Dito isto, aqui vêm as perguntas.

Em primeiro lugar, estou trabalhando em um método de login de usuários que precisa parecer mais assim:

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());

           }

    }
}

Como você pode ver, eu tenho classe de usuário que contém parâmetros em relação ao usuário, como nome de usuário e iPaddress, e também o método da lista de filas que lista arquivos de uma determinada pasta e cria a lista de ArrayList que contém esses nomes de arquivos como strings.

A próxima coisa que preciso fazer é fazer uma classe ou um método que forneça função de pesquisa para clientes/usuários. Por exemplo, quando os usuários estão logon no aplicativo, ele desejará procurar um determinado arquivo e também fornecerá a lista de arquivos de sua pasta compartilhada para outros usuários. Do jeito que eu entendi meu menthor, a classe de solicitação precisa conter para cada loops capazes de pesquisar nas respectivas listas de arquivos dos usuários. Não tenho certeza de como fazer isso e tenho muitos problemas em relação ao trabalho com listas de matrizes.

É assim que deveria parecer aproximadamente: (estou usando uma espécie de pseudo-código para este até agora)

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

    }

}

Próxima pergunta: Como os usuários fazem login no aplicativo Java? Eu tenho pensado nisso o dia todo e tentei contornar isso, mas apenas falhei. Ainda não tenho GUI/Swing, espero fazê -lo no final.

Tenho mais 3 classes que representam cliente, servidor e manual.

Como eu disse, qualquer contribuição é bem -vinda. Voltarei com mais perguntas, com certeza. Obrigado

Foi útil?

Solução

Você está fazendo muitas perguntas em uma pergunta. Uma pergunta diz respeito a como seu objeto RequestFile sabe com qual usuário está lidando. Essa é a pergunta de login. Sugira que você aumente isso separadamente.

Vamos supor, no momento, que sabemos que é Slavisha naquele iPaddress quem está perguntando. Existem alguns problemas aqui:

1). O que está sendo solicitado? RequestforFile () não leva nenhum parâmetro para dizer qual arquivo está sendo solicitado. Então, qual é a resposta do requestforFile ()? É suposto representar uma solicitação? É responsável por realmente encontrar o arquivo? Retornando?

2). Seu método user.filelist () não faz nada útil. Não retorna nada, então, ao concluir, tudo o que descobriu perdeu.

3). De qualquer forma, todo usuário parece estar procurando na mesma pasta: "C: userFolder", você pretendia ter um diretório separado para cada usuário.

4). Olhar através de listas provavelmente não é eficiente, você precisa ler sobre conjuntos e mapas.

Eu acho que você precisa de uma reformulação bastante detalhada. Sua classe de usuário precisa responder a perguntas como "Este usuário tem esse arquivo". A classe de solicitação precisa identificar um usuário específico e solicitar o arquivo. Não estou claro como você pretende transferir o arquivo do cliente para o servidor.

Devo dizer que fazer a programação de clientes/servidores como um exercício de educação inicial é bastante ambicioso.

Outras dicas

Não tenho muita certeza do que você quer dizer com 'login'. Se (como eu acredito) você quer identificar O usuário no seu aplicativo Java, use:

System.getProperty("user.name");

O que fornece o nome de usuário do usuário atualmente executando seu aplicativo.

Uma GUI seria usada para dar ao usuário algo diferente da linha de comando para olhar, mas Swing ou AWT não fornece a funcionalidade com a qual você parece associá -los - a saber, conectar o servidor e o cliente, permitindo que o usuário faça login no a instância em execução do servidor. A GUI tornaria esse processo mais fácil de usar, mas fundamentalmente você está falando sobre o uso de soquetes para permitir que o cliente se conecte ao servidor (endereço IP conhecido e aberto conjunto de portas para a conexão), envia algumas das informações do usuário (os nomes de arquivos compartilhados) e, em seguida, recebe uma lista de todos os arquivos compartilhados possíveis do servidor. O cliente pode pesquisar localmente nesta lista.

Você pode fazer isso no contrário - o servidor recebe uma solicitação do cliente, faz a pesquisa e apenas envia um resultado para o cliente. Depende de onde você deseja colocar a maior parte da sua carga de trabalho. De qualquer forma, você está falando sobre enviar strings através de uma conexão de soquete. Pelo menos, até que você vá de procurar listas de nomes de arquivos para realmente enviar os arquivos de um cliente para outro.

Então você provavelmente quer começar a olhar para Um tutorial sobre soquetes Observar como dois programas separados em diferentes computadores podem enviar informações um para o outro.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top