Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Aiuto Chat Java

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    49

    Aiuto Chat Java

    Ciao A tutti
    ho creato una chat copiando il codice dall'articolo scritto nella sezione java=> articoli di qs sito agli indirizzi:

    http://www.html.it/articoli/1772/jchat.html (Gui)
    http://www.html.it/articoli/1772/jchatclient.html (client)
    http://www.html.it/articoli/1772/jchatserver.html (server)

    allora, come potete vedere all'interno della classe (client) è stata inserita anche una classe interna chiamata "ParallelServer" che come voi sapete sicuramente meglio di me dovrebbe mandare in esecuzione il server e metterlo in ascolto su una determinata porta tipo la 7777.

    il mio problema è il seguente:
    Quando clicco sul bottone "Entra in Chat" posto sulla GUI, dopo i vari controlli, viene eseguito il metodo "joinToChat" che:

    -Istanzia un client dalla classe (client che per comodità vi posto di seguito)
    -richiama il metodo "start" contenuto nella classe(client) il quale però crea subito una socket socket=new Socket("10.17.7.147",7777); , senza aver prima avviato il server attraverso il metodo serverChat.start(); contenuto nella classe innestata JchatServerRunner e quindi ottengo il seguente errore:

    ERRORE:
    -------------------------------------------------------------------------------------
    Eccezione durante la creazione del client
    java.net.NoRouteToHostException: No route to host: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(Unknown Source)
    at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at java.net.Socket.<init>(Unknown Source)
    at java.net.Socket.<init>(Unknown Source)
    at JChatClient.start(JChatClient.java:12)
    at JChat.joinToChat(JChat.java:140)
    at JChat.buttonEnter_actionPerformed(JChat.java:203)
    at JChat.access$7(JChat.java:201)
    at JChat$3.actionPerformed(JChat.java:113)
    at javax.swing.AbstractButton.fireActionPerformed(Unk nown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed (Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed (Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseRe leased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent( Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(U nknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unkno wn Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilter s(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(U nknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarch y(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
    java.lang.NullPointerException
    at JChatClient.sendMessage(JChatClient.java:19)
    at JChat.disconnect(JChat.java:186)
    at JChat.destroy(JChat.java:41)
    at sun.applet.AppletPanel.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

    ---------------------------------------------------------------------------------
    CLASSE CLIENT
    --------------------------------------------------------------------------
    codice:
    public class JChatClient {
    	private DataOutputStream os;
    	private BufferedReader is; 
    	private Socket socket;
    	
    	//TODO: studiare il throws
    	public void start() throws IOException{
    		//Connessione della Socket con il server
    		socket=new Socket("10.17.7.147",7777);
    		
    		//Stream di byte da passare al Socket
    		os=new DataOutputStream(socket.getOutputStream());
    		is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
    	}
    	public void sendMessage(String strMessage)throws IOException{
    		os.writeBytes(strMessage + '\n');
    	}
    	public String receiveMessage()throws IOException{
    		return is.readLine();
    	}
    	public void close()throws IOException{
    		System.out.println("Chiusura client");
    		os.close();
    		is.close();
    		socket.close();
    	}
    }
    //La classe JchatServerRunner viene utilizzata semplicemente per mandare in esecuzione il server:
    
    class JchatServerRunner{
    	public static void main(String [] args){
    		JChatServer serverChat= new JChatServer();
    		try{
    			serverChat.start();
    		}catch(Exception ex){
    			ex.printStackTrace();
    		}
    	}
    }
    ------------------------------------------------------------------------------

    DOMANDA:

    -Come posso fare affinche venga eseguito prima il codice della classe innestata, in modo da avviare il server, e poi il metodo start della classe Client che crea un client e lo mette in comunicazione con il server in ascolto??

    Spero di essermi spiegato bene
    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    356
    Non ho ben capito...tu vorresti che il client prima di creare il socket mandasse in esecuzione il server??

    Ma client e server sono due cose separate. Se il server non è attivo, la chat non può funzionare. Il server va avviato separatamente prima di far connettere i client...se no addio chat
    Jekkil

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    49
    Ciao Jekkil
    innanzitutto ti ringrazio per la risposta e sono d'accordo con te che bisogna prima attivare il server e poi il client.
    Proprio per questo non capisco come mai ne progetto che ho postato (dai un'occhiata ai tre link) è stata inserita una classe innestata "JchatServerRunner" all'interno della classe client che pero non fa partire il server prima del client.
    Mi chiedevo quindi: cosi come concepita la classe client, come posso far avviare prima il server?

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Non è che è stata inserita "all'interno": se guardi, sono entrambe dichiarate public class... prendi lo starter, mettilo in un file a parte e compila. Le hanno pubblicate insieme solo per questioni di "spazio", ovvero non volevano creare un'altra pagina .html sul sito per 4 righe di codice.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    49
    Ciao Andrea1979
    così gia mi torna di più, infatti solo cosi posso avviare preventivamente il server e poi fare tutto il resto.
    A mio avviso pero avrebbero potuto anche creare una pagina html in più anche se solo per 4 righe di codice evitando di fare confusione, ma qs è solo un mio pensiero.
    Grazie mille per l'aiuto.
    Ciao

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    502
    Originariamente inviato da Vbnet
    Ciao Andrea1979
    così gia mi torna di più, infatti solo cosi posso avviare preventivamente il server e poi fare tutto il resto.
    A mio avviso pero avrebbero potuto anche creare una pagina html in più anche se solo per 4 righe di codice evitando di fare confusione, ma qs è solo un mio pensiero.
    Grazie mille per l'aiuto.
    Ciao
    Beh, ma due classi dichiarate public, nello stesso file, mi sembra non possano convivere
    al volante son nervoso

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    49
    infatti hai ragione
    avevo bisogno di una conferma in piu a quelle che erano le mie perplessità.
    Grazie cmq a tutti di nuovo.
    Ciaoooo

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    49
    scusate...un'altra domandina.
    Io uso eclipse e fin quando eseguo il codice da eclipse, avvio manualmente la classe JchatServerRunner che manda in esecuzione il server e successivamente avvio, sempre manualmete, la GUI e tutto funziona.
    Come faccio ad avviare automaticamente prima la JchatServerRunner?

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Nel panorama reale dell'uso di una chat, JchatServerRunner sarebbe avviata al tempo 0, manualmente dall'amministratore o in automatico (via Esecuzione Automatica su macchina Windows, o Crontabs su unix/linux), conditio sine qua non la chat non funziona. Quindi non ti resta che avviare a manina JchatServerRunner, come si farebbe davvero, e aspettare che i vari client lancino l'applet visitando la pagina apposita.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    49
    ah ecco...
    perfetto
    Grazie

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.