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

Rispondi quotando
al volante son nervoso
