Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 28
  1. #1

    [java] problemi comunicazione client server

    Salve a tutti. Sto realizzando a fini di studio una chat in java, ho scritto il client e il server in modo che si scambino messaggi da me definiti da una classe Messaggio nella quale metto tutte le info che mi servono

    codice:
    public class Messaggio implements Packet, Serializable{
        private int tipo;
        String contenuto;
        String privato; // contiene nick client destinatario
        String mittente; // contiene il nick mittente
        /** Creates a new instance of Messaggio
            prende in input solo il mittente*/
        public Messaggio(String m) { 
      ecc
      ecc
    Per lo scambio di messaggi invece mi sono creato degli object i/o streams. Ecco la parte ad esempio del server

    codice:
    server = new ServerSocket( 5000, 100 );
    Socket s1 = server.accept();
    connection.getInetAddress().getHostName() );
    input = new ObjectInputStream(
               connection.getInputStream() );
    output = new ObjectOutputStream( connection.getOutputStream() );
                    output.flush();
    Messaggio s=new Messaggio("CHATSERVER",3,"Benvenuto,
     inserisci il tuo nickname"); // invio richiesta login
    I problemi sorgono quando invece che inviare una stringa (che ho provato viene scambiata senza problemi) invio sullo stream un messaggio
    codice:
    output.writeObject(s);
    // s istanza di Messaggio
    
    e quando leggo sul client
    Messaggio m=(Messaggio)input.readObject();
    Mi viene lanciata una ClassNotFoundException, e non riesco a capire perchè dato che la classe messaggio è implementata tale e quale sia nel server che nel client.
    :master:
    Grazie per il vostro aiuto in anticipo.
    WWW.UTMIB.COM site and forum administrator
    www.utmib.com/forum
    Unreal Tournament Men In Black Clan

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    posta il nome package di Messaggio

  3. #3
    Mi viene lanciata una ClassNotFoundException, e non riesco a capire perchè dato che la classe messaggio è implementata tale e quale sia nel server che nel client.
    In che senso?
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  4. #4
    Il server e il client sono 2 applicazioni diverse, e ho fatto 2 package diversi.

    Il package server si chiama chatServer (che fantasia!)
    Il package client si chiama chatClient

    La classe messaggio e l'interfaccia Packet sono presenti in entrambi i package. Ho fatto copiaincolla del file e cambiato la riga package.
    WWW.UTMIB.COM site and forum administrator
    www.utmib.com/forum
    Unreal Tournament Men In Black Clan

  5. #5
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    in pratica cerchi di castare un oggetto della classe com.ciccio.Messaggio in una classe com.trippone.Messaggio
    e direi che dice class cast exc
    fai un com.util.Messaggio che faccia parte del server e del client

  6. #6
    Quanto meno dovrebbero condividere l'interfaccia della classe se non vuoi che l'implementazione sia comune.
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  7. #7
    Originariamente inviato da floyd
    in pratica cerchi di castare un oggetto della classe com.ciccio.Messaggio in una classe com.trippone.Messaggio
    e direi che dice class cast exc
    fai un com.util.Messaggio che faccia parte del server e del client
    Ottimo, se ho ben capito devo far appartenere lo stesso file ad entrambi i package e caricarlo tramite import.
    Come si fa? In che modo va dichiarata una classe così? Non l'ho mai fatto.
    WWW.UTMIB.COM site and forum administrator
    www.utmib.com/forum
    Unreal Tournament Men In Black Clan

  8. #8
    La soluzione migliore sta nel creare un terzo package di supporto ai due applicativi. (Meglio)
    O usare un unico package per server e client.
    O inserire la classe solo nel package del client e fare in modo che il server la richiami da li'. O viceversa. (Peggio)
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  9. #9
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    dico che devi fare una classe che appartiene a un package che vuoi e poi la metti sia nel client che nel server
    in pratica
    client.jar:
    com.client.A
    com.client.B
    com.client.C
    com.util.Messaggio
    server.jar:
    com.server.D
    com.server.E
    com.server.F
    com.util.Messaggio
    chiaro?

  10. #10
    Praticamente? come faccio a far vedere al programma delle classi che non sono nel suo package?

    Se ho capito bene:

    Messaggio appartiene al package che voglio.

    chatServer.java

    package chatserver;
    import com.util.Messaggio;

    ? così?
    WWW.UTMIB.COM site and forum administrator
    www.utmib.com/forum
    Unreal Tournament Men In Black Clan

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.