Java: Lesen von ObjectInputStream

Habe ich nur angefangen, Java zu lernen. Meine Aufgabe ist es, erstellen Sie eine Datei-server die akzeptiert, dass bestimmte Befehle wie Datei, Datei Setzen und Löschen von Dateien von mehreren clients verwenden von Threading. Ich bin mit einem benutzerdefinierten Klasse DataObject zum serialisieren und senden von Befehlen und Daten, kann zusammen mit ihm. Der Kunde wird interaktiv in dem Sinne, dass es eine manuelle Benutzereingabe der verschiedenen Befehle. Dies bedeutet, dass ObjectInputStream readObject () - Funktion funktioniert nicht in einer while(true) - Schleife, da eine EOFException. Was kann ich tun, damit der server-thread hält beim readObject (), bis er sieht, das nächste Objekt, und dann erneut die while(true) - Schleife?

Code auf dem server (läuft für jeden thread separat):

public void run() {
    ObjectInputStream is = null;
    ObjectOutputStream os = null;
    try{
        is = new ObjectInputStream(clientSocket.getInputStream());
        os = new ObjectOutputStream(clientSocket.getOutputStream());
        while (true) {
            input = (DataObject) is.readObject();
            //System.out.println("Input has been read");
            output = CommandProcessor.process(input);
            if(output.data == null) {
                os.writeObject(output);
                if(output.message.compareToIgnoreCase("Rsp Bye")==0){
                    clientSocket.close();
                }
            }
        }
    }

Code auf dem client:

    public Talker() {
            DataObject input = new DataObject(0), output = new DataObject(0);
            try {
                log = new PrintStream("/home/meher/log.txt");
                InetAddress serverAddress = InetAddress.getByName("127.0.0.1");
                Socket serverSocket = new Socket(serverAddress, port);
                os = new ObjectOutputStream(serverSocket.getOutputStream());
                is = new ObjectInputStream(serverSocket.getInputStream());
                CommandExecuter.Hello(output);
                write(output);
                read(input);
                while(not-end-of-user-input){ //Yet to code this part
                            //Execute commands
                    }
            }
  • Ich muss sagen, dass es eine ziemlich schwierige Aufgabe für eine person, die 'nur angefangen, Java zu lernen'.
  • Es ist eine Aufgabe fällig, morgen in einer Verteilten Betriebssystemen selbstverständlich. Java ist die Sprache, erwartet.
  • Bitte nicht, dass ich nicht die Mühe putting in den catch-Teil der Exception-Handler hier, aber Sie sind es in den code.
InformationsquelleAutor Anand | 2010-09-26
Schreibe einen Kommentar