Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [Java] Socket aiuto

  1. #1
    Utente di HTML.it L'avatar di sersul
    Registrato dal
    Feb 2003
    Messaggi
    75

    [Java] Socket aiuto

    Client:
    codice:
    ...
    oos = new ObjectOutputStream(socket.getOutputStream());
    ois = new ObjectInputStream(socket.getInputStream());
    oos.writeObject(new RequestCertificate());
                    
    while (true) {
      fromServer = (Packet) ois.readObject();
      toServer = processInput(fromServer);
    
      oos.writeObject(toServer);
    }
    ...
    Server:
    codice:
    ...
    ObjectInputStream ois = new ObjectInputStream
                                (socket.getInputStream());
    ObjectOutputStream oos = new ObjectOutputStream 
                                 (socket.getOutputStream());
                
    while(true) {
      System.out.println("Waiting");
      fromCustomer = (Packet) ois.readObject();
      System.out.println("Received");
      fromCustomer.toString();
      toCustomer = vp.processInput(fromCustomer);
      oos.writeObject(toCustomer);
    }
    ...
    Il Server si blocca su Waiting e nn va avanti. Mentre il Client va avanti e quando legge l'oggetto ho una EOFException.

    Cosa può essere? E' tutta oggi che impazzisco.. per favore aiuto!



    Packet è un mio oggetto che uso per interfacciare i vari oggetti tra client e server...

  2. #2
    Con il codice che scritto qui nn si capisce molto quello che vuoi fare. Comunque le istruzioni di lettura da uno stream sono bloccanti. Nel codice nn vedo alcuna istruzione writeObject e quindi le istruzioni readObject rimangono bloccate. Nn puoi solo lettere devi anche scrivere, quindi devi usare in modo coordinato sia readObject che writeObject

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Subito dopo le writeObject() prova ad inserire una chiamata a flush() in modo da forzare il buffer a scrivere:
    codice:
    oos.writeObject( ... );
    oos.flush();
    Poi vedo che la prima istruzione eseguita dal client è la scrittura di un oggetto RequestCertificate: io immagino che questa classe estenda (o implementi o derivi ad un certo livello) la classe Packet, dato che nel server leggi oggetti di questo tipo.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Utente di HTML.it L'avatar di sersul
    Registrato dal
    Feb 2003
    Messaggi
    75
    Ho risolto.. il mio problema era che nn interfacciavo bene Packet tra client e server... mi è bastato spostare l'interfaccia in un package a parte ed ora tutto funziona..

    Sn xò incazzato nero perchè ho perso due giorni dietro a questa cazzata...

    Grazie cmq a tutti,


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.