Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [socket java]

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    232

    [socket java]

    Salve sto lavorando sulle socket java...sto usato la tipologia TCP..ho un piccolo problema. I messaggi che devono essere spediti costituiscono un insieme di alcune informazioni che ovviamente viaggiano tutte insieme ossia ogni messaggio spedito appunto costituisce un pacchetto di diverse informazioni informazioni e per fare ciò avevo pensato di usare le linkedlist della java.utili. Il problema si presenta quando dallo stream di byte che dicevo lo devo inserire nella lista:
    codice:
    //messaggi che arrivano dal server
    LinkedList<Message> inFromServerList = new LinkedList<>();
                Message msgFrmServer = null;
                inFromServerList = (LinkedList<Message>)inFromServer.readObject();
                msgFrmServer = inFromServerList.pop();
    la jvm mi segna un warning di conversione per il tipo Objcet...non lo converte...cosa potrei fare grazie...

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da 5t4rdu5t Visualizza il messaggio
    la jvm mi segna un warning di conversione per il tipo Objcet...non lo converte...cosa potrei fare grazie...
    Il cast tecnicamente è "unchecked", perché il compilatore non è certo in grado di verificare che la lista sia davvero di Message.
    Il warning tra l'altro si può anche sopprimere, con una annotazione o con opzioni di compilazione apposite.

    La cosa più semplice: non serializzare la lista. Se l'entità essenziale nel tuo contesto è il messaggio .... serializza direttamente i Message. Se proprio volessi serializzare una lista, puoi incapsularla in una tua classe apposita (es. MessageList).

    E attenzione alla serializzazione, perché di serie (cioè con writeObject/readObject) mantiene un sistema di caching degli oggetti.
    Ultima modifica di andbin; 28-10-2015 a 10:23
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    232
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Il cast tecnicamente è "unchecked", perché il compilatore non è certo in grado di verificare che la lista sia davvero di Message.
    Il warning tra l'altro si può anche sopprimere, con una annotazione o con opzioni di compilazione apposite.

    La cosa più semplice: non serializzare la lista. Se l'entità essenziale nel tuo contesto è il messaggio .... serializza direttamente i Message. Se proprio volessi serializzare una lista, puoi incapsularla in una tua classe apposita (es. MessageList).

    E attenzione alla serializzazione, perché di serie (cioè con writeObject/readObject) mantiene un sistema di caching degli oggetti.
    si si ... infatti ho pensato la classe Message come:
    codice:
    public class Message implements Serializable {
        
        private String server;
        private String mittente;
        private String destinatario;
    
        public Message ( String serv, String Mit, String Dest ) {
            
            this....
            this.....
            this.....
    
            
        }
        public Message ( ) {
            
        }
        public void getMessage () {
            
            System.out.println("mittente: "+...);
            System.out.println("destinatario: "+....);
          ........................
            
        }
    ma ottengo sempre warning.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da 5t4rdu5t Visualizza il messaggio
    ma ottengo sempre warning.
    Serializza i singoli messaggi.

    Message msg = (Message) inFromServer.readObject();

    questo non dà warning!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    232
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Serializza i singoli messaggi.

    Message msg = (Message) inFromServer.readObject();

    questo non dà warning!
    Si ma questo non penso che mi serve..perchè i messaggi tra server e client non saranno dello stesso formato cioè come struttura possono variare ossia contenere delle informazioni, ti tipo stringa ad esempio, in più o in meno. Quindi forse ho sbagliato a postare l'esempio della classe Message.....

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    232
    Quote Originariamente inviata da 5t4rdu5t Visualizza il messaggio
    Si ma questo non penso che mi serve..perchè i messaggi tra server e client non saranno dello stesso formato cioè come struttura possono variare ossia contenere delle informazioni, ti tipo stringa ad esempio, in più o in meno. Quindi forse ho sbagliato a postare l'esempio della classe Message.....
    Ho risolto implementando liste e nodi personalmente ed elimando la classe Message che ormai era diventata superflua.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.