WARRIOR (Ex-Member)
Guru
Messaggi: 627
Iscritto: 30/03/2007
|
Ragazzi sto portando avanti un progetto che prevende un client ed un server. Quest'ultimo darà la possibilità di scaricare dei file presenti in una directory.
Fin qui tutto bene. Il problema si presenta quando vado a far dialogare client e server. Ho constatato che il server funziona, provandolo con telnet. Ma allo sviluppo del client si sono presentati dei problemi. Infatti quando faccio dialogare i due programmi, inevitabilmente le socket del client sono chiuse, lanciando (da parte del server) una IOException.
E' una anomalia o sono io che dimentico qualche passaggio.
Creata la socket e la serversocket, provo il seguente passaggio.
Codice sorgente - presumibilmente C# |
String Request = ""; String RequestType = ""; String RequestFile = ""; BufferedReader F = new BufferedReader (new InputStreamReader (client_process. getInputStream())); Request = F.readLine(); //Analizzo la richiesta secondo il protocollo stabilito StringTokenizer cmd = new StringTokenizer (Request, "|"); RequestType = cmd.nextToken(); if(cmd.countTokens()>1) { RequestFile = cmd.nextToken(); } if(RequestType.equals("download")) { download(RequestFile); F.close(); client_process.close(); client_list.remove(client_process); } else if(RequestType.equals("upload")) { upload(RequestFile); F.close(); client_process.close(); client_list.remove(client_process); } else { BufferedWriter fout = new BufferedWriter ( client_process.getOutputStream())); File file = new File ("Files/"); String[] fs = file.list(); for(int i=0; i<fs.length; i++) { fout.write(fs[i]+"\n"); } fout.flush(); fout.close(); F.close(); client_process.close(); client_list.remove(client_process); }
|
questa è la parte del server che attende un comando del client. Inviando la stringa REFRESH per esempio, il server dovrebbe spedirmiuna lista di file attraverso lo stream FOUT. Tuttavia questo non avviene, perché la socket è chiusa...
Se provo a chiudere uno stream succede la stessa cosa, la socket si chiude.
Questa è la parte del client che riceve
Codice sorgente - presumibilmente Java |
try { connection = new Socket(ip. getText(),SERVER_PORT ); dbar.setIndeterminate(true); while((RecevFile = f.readLine())!=null) { System. out. println(RecevFile ); files.addItem(RecevFile); } f.close(); List_Request.close(); connection.close(); dbar.setIndeterminate(false); m.showMessageDialog(null,"Lista dei file ricevuta."); } dbar.setIndeterminate(false); m.showMessageDialog(null,"Impossibile raggiungere la destinazione."+error_list.getMessage()); }
|
Potete darmi una mano?
Grazie |