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

    [java]Client Chat non funzionante

    Ho un client chat strutturato così:

    codice:
    // $Id$
    import java.applet.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import java.net.*;
    
    public class Client extends Panel implements Runnable
    {
        // Parti grafiche (per successiva implementaz. tramite Applet)
        private TextField tf = new TextField();
        private TextArea ta = new TextArea();
    
        private Socket socket = null;
        // Oggetti DataOutputStream con i quali comunichiamo col Server
        private DataOutputStream dout;
        private DataInputStream din;
        // Costruttore
        public Client( String host, int port ) {
            // Set up the screen
            setLayout( new BorderLayout() );
            add( "North", tf );
            add( "Center", ta );
            // We want to receive messages when someone types a line
            // and hits return, using an anonymous class as
            // a callback
            tf.addActionListener( new ActionListener() {
            public void actionPerformed( ActionEvent e ) {
            processMessage( e.getActionCommand() );
        }
    } );
            // Connessione al server
            try {
                // Initiate the connection
                socket = new Socket( host, port );
                // We got a connection! Tell the world
                System.out.println( "connected to "+socket );
                // Let's grab the streams and create DataInput/Output streams
                // from them
                din = new DataInputStream( socket.getInputStream() );
                dout = new DataOutputStream( socket.getOutputStream() );
                // Start a background thread for receiving messages
                new Thread( this ).start();
                } catch( IOException ie ) { System.out.println( ie ); }
                }
        // 
        private void processMessage( String message ) {
    		try {
    		// 
    		dout.writeUTF( message );
    		// 
    		tf.setText( "" );
    		} catch( IOException ie ) { System.out.println( ie ); }
    	}
        // 
        public void run() {
    		try {
    		// 
    		while (true) {
    			// 
    			String message = din.readUTF();
    			// 
    			ta.append( message+"\n" );
    			}
    		} catch( IOException ie ) { System.out.println( ie ); }
    	}
            
            static public void main( String args[] ){
            // 
            String host = args[0];
            int port = Integer.parseInt( args[1] );
            // 
            // 
            new Client( host, port);
            }   
    }
    E un Applet così strutturata:

    codice:
    // $Id$
    import java.applet.*;
    import java.awt.*;
    import java.io.*;
    import java.net.*;
    
    public class ClientApplet extends Applet{
            public void init() {
            String host = getParameter( "host" );
            int port = Integer.parseInt( getParameter( "port" ) );
            setLayout( new BorderLayout() );
            add( "Center", new Client( host, port ) );
            }
    }
    Il server funziona regolarmente, lo posso mettere in ascolto su una porta qualsiasi. Il client ho provato a modificarlo ma non funziona. Tramite applet come lo devo richiamare??Da una pagina web, come posso farlo??Quali parametri devo passare??
    Non essendo necessaria una interfaccia grafica, come posso modificare il client, anche per farlo andare magari da riga di comando??
    Ringrazio tutti in anticipo per le eventuali risposte...

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2002
    Messaggi
    867
    per lanciare le applet senza pagina web c'e' il comando 'appletviewer' e mi pare lo chiami passandogli come parametro il nome del file cless senza estensione, esattamente come per il comando 'java'

    Ciao ciao

  3. #3
    Da riga di comando? ok...e per passare i parametri??
    La classe client è corretta??

  4. #4
    Nessuno può darmi una mano??
    Volendo posto anche il codice del Server...

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Per lanciarlo da riga di comando con appletviewer si deve passare al comendo appletviewer la pagina html dove c'è l'applet:
    codice:
    $ appletviewer index.html
    C'è qualche messaggio di errore quando provi a lanciare il client?
    Sostituisci, nella sezione catch, questa istruzione al posto della stampa dell'eccezione:
    codice:
    ie.printStackTrace();
    Così si vede l'intero stack di eccezione.

    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

  6. #6
    grazie...sono riuscito a farlo funzionare...

  7. #7
    C'è qualcuno che mi può segnalare dei tutorial o manuali On-Line per implementare la grafica dell'Applet??

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Fai una ricerca sul forum... si è parlato spesso di questi argomenti. Prova ad allargare la ricerca a Java AWT e Swing, senza restringere il campo alle sole Applet, tanto progettare la grafica di una Applet non è affatto diverso dal progettare la grafica di una qualsiasi applicazione Java... i package sono gli stessi, gli oggetti pure.



    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

  9. #9
    Problema....devo passare un id..un qualcosa....perchè nei messaggi ci sia un identificatore di chi manda il mess....

    qualcuno mi può aiutare??

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Se usi ObjectInputStream e ObjectOutputStream puoi costruirti una classe ad hoc per i messaggi in cui codifichi tutto quello che vuoi...

    Una soluzione potrebbe essere quella di far precedere il messaggio vero e proprio da un messaggio in cui c'è l'identificatore del mittente (il nome utente, per esempio).



    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

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.