ciao avevo in mente di realizzare una simil chat.. senza un server.. ma con connessioni dirette..
ma c'è qualcosa che non mi torna..
su entrambi i client che voglio far dialogare apro un thread e rimango in ascolto tramite ServerSocket
quando ricevo un messaggio lo leggo e chiudo il socket (non il serverSocket)codice:public void run() { try{ ServerSocket ss = new ServerSocket(9080,100, InetAddress.getLocalHost()); while(true) { // se ricevo chiamate Socket socket = ss.accept(); // avvio client socket SocketThread st = new SocketThread(socket, null); st.run(); } }catch(Exception e){ e.printStackTrace(); } }
per inviare un messaggio invece apro il socket, invio il messaggio e chiudo il socket immediatamente..codice:public void run() { try { in = new BufferedReader(new InputStreamReader(socket.getInputStream())); String message = in.readLine(); System.out.println(socket.getInetAddress() + "> " + message); socket.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
funziona tutto, ma dal punto di vista delle performance, del traffico etc ?codice:public void sendMessage(){ try { String key = list.getItem(list.getSelectionIndex()); Socket sd = new Socket((String)contatti.get(key), 9080); PrintWriter out = new PrintWriter(sd.getOutputStream(), true); out.println(textArea.getText()); sd.close(); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
è giusto continuare ad aprire e chiudere socket ?
quello che voglio non è una vera chat, quindi mi pare inutile tenere aperto il socket..
o sbaglio ??


Rispondi quotando
