Eccomi di nuovo qua, grazie all'aiuto di LeleFT in un post poco sotto ho risolto i problemi circa la realizzazione di una semplice chat.
Adesso sto provado a implementarla graficamente, ma il programma rimane bloccato in esecuzione con il pulsante Connect premuto, vi sarei infinitamente grato se anche questa volta mi deste una mano![]()
Ecco graficamente di che si tratta:
Il mio intento è quello di, ogni volta che si inserisce il testo nell'apposita area, di far spuntare nella history:
Client said: text
Server received: text
Tuttavia bloccandosi non appena tento la connessione non mi è neppure permesso scrivere.
Ecco il codice.
Codice associato al tasto Connect:
Codice associato al tasto Send:codice:Server objs=new Server(); objs.connect;
Ecco il Clientcodice:Client objcl=new Client(); jTextArea2.append("Client said:"+objc.client(jTextArea1.getText())); jTextArea2.append("Server received" + objs.server());
Ecco il server:codice:package chat_v01; import java.net.*; import java.io.*; public class Client { String text; BufferedReader dalServer; PrintWriter alServer; public String client(String text) { this.text=text; try { Socket s1 = new Socket ("127.0.0.1", 5555); dalServer = new BufferedReader(new InputStreamReader(s1.getInputStream())); alServer= new PrintWriter(s1.getOutputStream(),true); alServer.println(text); if(text.equals("bye")) { s1.close(); } } catch (ConnectException connExc) { System.err.println("Errore nella connessione "); } catch (IOException ex) { ex.printStackTrace(); } return text; } }
codice:package chat_v01; import java.net.*; import java.io.*; public class Server { BufferedReader dalClient; PrintWriter alClient; Socket sse; public ServerSocket server = null; public void connect() { try { server = new ServerSocket(5555); sse = server.accept(); dalClient=new BufferedReader(new InputStreamReader(sse.getInputStream())); alClient= new PrintWriter(sse.getOutputStream(),true); } catch (IOException ex) { ex.printStackTrace(); } } public String server() { String text = null; try { text=dalClient.readLine(); if (text.equals("bye")) { sse.close(); } } catch (IOException ex) { ex.printStackTrace(); } return text; } }
Grazie come sempre a tutti coloro che mi vorranno aiutare!


Rispondi quotando