Questa è la classe che gestisce le operazioni del client..
i files che dovrebbe dspedirmi il server devono essere scritti in un componente JTree preesistente attraverso l'utilizzo delle hashtable...ciao graziecodice:import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.*; import java.net.*; import javax.swing.*; import javax.swing.event.*; public class GestisciClient extends Thread { Errore finErrore; Client client; String Indirizzo; int Porta,LunghezzaRichiesta; byte[] BufferListaFile,NomeFileBuffer; Socket socketServer; InputStream Ingresso; OutputStream Uscita; public GestisciClient(Client client,String Indirizzo,int Porta) { this.client = client; this.Indirizzo = Indirizzo; this.Porta = Porta; } public void run() { try { Connetti(Indirizzo,Porta); InviaRichiesta("files"); RiceviFiles(); while(!interrupted()) { } } catch(IOException e) { client.Scrivi("Impossibile connettersi al server"); } } public void Connetti(String Indirizzo,int Porta) throws IOException { if(Porta > 0 && Porta < 65536) { socketServer = new Socket(Indirizzo,Porta); client.Scrivi("Connesso al server " + Indirizzo + "@" + Porta); Ingresso = socketServer.getInputStream(); Uscita = socketServer.getOutputStream(); client.Scrivi("Componenti per la ricezione dati attivati!"); } else { finErrore = new Errore(client,"Porta del server sbagliata"); finErrore.setVisible(true); } } public void Disconnetti() { try { socketServer.close(); interrupt(); stop(); } catch(IOException e) { finErrore = new Errore(client,"Impossibile chiudere la connessione"); finErrore.setVisible(true); client.Scrivi("Errore nella chiusura della connessione"); } } public void InviaRichiesta(String Richiesta) { try { client.Scrivi("Invio richiesta file in corso"); LunghezzaRichiesta = Richiesta.length(); NomeFileBuffer = new byte[LunghezzaRichiesta]; NomeFileBuffer = Richiesta.getBytes("US-ASCII"); Uscita.write(LunghezzaRichiesta); Uscita.write(NomeFileBuffer); Uscita.flush(); client.Scrivi("Richiesta inviata!"); } catch(IOException e) { client.Scrivi("\nServer non attivo!"); Disconnetti(); } } public void RiceviFiles() { int LunghezzaElemento, Elementi; try { client.Scrivi("Ricezione lista"); Elementi = Ingresso.read(); client.Scrivi(Integer.toString(Elementi)); client.DatiServer = new String[2][Elementi]; LunghezzaElemento = Ingresso.read(); BufferListaFile = new byte[LunghezzaElemento]; client.Ingresso.read(BufferListaFile); client.DatiServer[0][0] = new String(BufferListaFile,"US-ASCII"); client.Scrivi("Inizio trasferimento della lista"); if((Elementi) != 0) { for(int i=0;i<Elementi;i++) { LunghezzaElemento = Ingresso.read(); BufferListaFile = new byte[LunghezzaElemento]; Ingresso.read(BufferListaFile); client.DatiServer[1][i] = new String(BufferListaFile,"US-ASCII"); } client.Scrivi("Trasferimento lista completato!"); } else { client.Scrivi("Nessun file da scaricare!!"); client.Scrivi("Prova a caricare dei file e riconnettiti!!"); } client.AlberoServer = new Hashtable(); client.AlberoServer.put(client.DatiServer[0][0],client.DatiServer[1]); client.PannelloDiviso.remove(client.CartellaServer); client.CartellaServer = new JTree(client.AlberoServer); JScrollPane Scroll = new JScrollPane(client.CartellaServer); client.PannelloDiviso.setOneTouchExpandable(true); client.PannelloDiviso.setDividerLocation(190); client.PannelloDiviso.setDividerSize(10); client.PannelloDiviso.setContinuousLayout(true); client.PannelloDiviso.setLeftComponent(Scroll); } catch(IOException e) { client.Scrivi("Errore nella ricezione dei file"); client.Scrivi("Disconnessione in corso..."); Disconnetti(); client.Scrivi("Disconnesso"); } } public void stopClient() { Disconnetti(); } }

Rispondi quotando