Domanda

Ok, ho così tante domande sulla mia applicazione di condivisione di file che non so da dove iniziare. La mia conoscenza di Java è molto limitata e sarò soddisfatto di qualsiasi aiuto che mi fornisce.

Detto questo, ecco le domande.

In primo luogo, sto lavorando a un metodo di accesso utente che deve assomigliare a questo:

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

           }

    }
}

Come puoi vedere, ho una classe utente che contiene parametri relativi all'utente, come nome utente e iPaddress, e anche metodo filelist che elenca i file da una determinata cartella e crea l'ArrayList contenente quei nomi di file come stringhe.

La prossima cosa che devo fare è creare una classe o un metodo che fornisce la funzione di ricerca a clienti/utenti. Ad esempio, quando gli utenti accedono all'applicazione, vorrà cercare un determinato file e fornirà anche l'elenco dei file dalla sua cartella condivisa ad altri utenti. Nel modo in cui ho capito il mio mentalità, la classe di richiesta deve contenere per ogni loop che è in grado di cercare all'interno degli elenchi di file di file degli utenti. Non sono sicuro di come farlo e ho molti problemi riguardo al lavoro con gli elenchi di array.

Questo dovrebbe sembrare approssimativamente: (Sto usando una specie di pseudo-codice per questo finora)

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

    }

}

Domanda successiva: in che modo gli utenti accedono all'applicazione Java? Ci ho pensato tutto il giorno e ho provato a aggirarlo, ma ho appena fallito. Non ho ancora GUI/Swing, spero di farlo alla fine.

Ho altre 3 classi che rappresentano client, server e manuale.

Come ho detto, qualsiasi contributo è il benvenuto. Tornerò sicuramente con altre domande. Grazie

È stato utile?

Soluzione

Stai facendo troppe domande in una domanda. Una domanda riguarda il modo in cui l'oggetto requestForFile sa con quale utente sta affrontando. Questa è la domanda di accesso. Suggerrti di sollevarlo separatamente.

Supponiamo per il momento in cui sappiamo che è slavisha su quell'iPaddress che sta chiedendo. Ci sono alcuni problemi qui:

1). Cosa viene chiesto? RequestFile () non richiede alcun parametro per dire quale file viene richiesto. Allora qual è la respostibilità di requestFilfile ()? È supposto rappresentare una richiesta? È responsabile di trovare effettivamente il file? Restituirlo?

2). Il tuo metodo User.fileList () non fa nulla di utile. Non restituisce nulla, quindi al termine tutto ciò che ha capito è perso.

3). Ad ogni modo, ogni utente sembra guardare nella stessa cartella: "C: userfolder" avevi intenzione di avere una directory separata per ogni utente.

4). Guardare attraverso gli elenchi non è probabilmente efficiente, è necessario leggere su set e mappe.

Penso che tu abbia bisogno di una riprogettazione piuttosto dettagliata. La tua classe utente deve rispondere a domande come "questo utente ha quel file". La classe di richiesta deve identificare un determinato utente e chiederlo il file. Non sono chiaro come intendi quindi trasferire il file dal client al server.

Dovrei dire che fare la programmazione client/server come esercizio di educazione precoce è piuttosto ambizioso.

Altri suggerimenti

Non sono del tutto sicuro di cosa intendi per "accedere". Se (come credo) vuoi identificare L'utente nell'applicazione Java, usa:

System.getProperty("user.name");

che ti dà il nome utente dell'utente attualmente in esecuzione dell'applicazione.

Una GUI verrebbe utilizzata per dare all'utente qualcosa di diverso dalla riga di comando da guardare, ma Swing o AWT non forniscono la funzionalità con cui sembra associare - vale a dire, collegando il server e il client, consentendo all'utente di accedere l'istanza in esecuzione del server. La GUI renderebbe questo processo più intuitivo, ma fondamentalmente stai parlando di utilizzare i prese per consentire al client di connettersi al server (indirizzo IP noto e set di porte aperte per la connessione), invia alcune informazioni dell'utente (i nomi di file condivisi) e quindi riceve un elenco di tutti i possibili file condivisi dal server. Il client può quindi cercare localmente attraverso questo elenco.

Puoi farlo al contrario: il server ottiene una richiesta dal client, esegue la ricerca e invia solo un risultato al client. Dipende da dove vuoi mettere la maggior parte del tuo carico di lavoro. Ad ogni modo, stai parlando di inviare stringhe tramite una connessione socket. Almeno, fino a quando non si passa a guardare elenchi di nomi di file all'invio effettiva dei file da un client a un altro.

Quindi probabilmente vuoi iniziare a guardare Un tutorial sulle prese Per esaminare come due programmi separati su computer diversi possono inviare informazioni l'una all'altra.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top