Salve ragazzi urge il vostro aiuto..
Devo completare un progetto che mi chiede di creare un sensore che comunica con un server e fa le seguenti operazioni:
-CLIENT-SERVER il compito è quello di inviare interamente un file dal lato client al lato server
-Fra CLIENT-SERVER dobbiamo frapporre un Proxy TCP ovvero Dobbiamo interfacciare con esso i lati client e server
Io ho creato il client, il server e il proxy, ma non riesco a collegarli l'uno con l'altro.
Qualcuno può aiutarmi??
Ovviamente se avete qualcosa di pronto è ben accetto!!
CLIENT
codice:package progettois; // PutFileClient.java import java.io.*; import java.net.InetAddress; import java.net.Socket; import java.net.SocketTimeoutException; public class PutFileClient { public static void main(String[] args) throws IOException { /* * Come argomenti si devono passare un nome di host valido e una porta * */ InetAddress addr = null; int port = -1; /* * controllo argomenti */ try { if (args.length == 2) { addr = InetAddress.getByName(args[0]); port = Integer.parseInt(args[1]); } else { System.out.println("Usage: java PutFileClient serverAddr serverPort"); System.exit(1); } } //try // Per esercizio si possono dividere le diverse eccezioni catch (Exception e) { System.out.println("Problemi, i seguenti: "); System.out.println("Usage: java PutFileClient serverAddr serverPort"); System.exit(2); } // oggetti utilizzati dal client per la comunicazione e la lettura del file // locale Socket socket = null; FileInputStream inFile = null; DataInputStream inSock = null; DataOutputStream outSock = null; /* * comunicazione col cliente, da console */ // creazione stream di input da tastiera BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in)); String nomeFile = "/Users/Elena/Desktop/Prova.rtf"; try { while ((nomeFile = stdIn.readLine()) != null) { // se il file esiste creo la socket if (new File(nomeFile).exists()) { // creazione socket try { socket = new Socket(addr, port); // setto il timeout per non bloccare indefinitivamente il client socket.setSoTimeout(30000); System.out.println("Creata la socket: " + socket); } catch (Exception e) { System.out.println("Problemi nella creazione della socket: "); continue; // il client continua l'esecuzione riprendendo dall'inizio del ciclo } // creazione stream di input/output su socket try { inSock = new DataInputStream(socket.getInputStream()); outSock = new DataOutputStream(socket.getOutputStream()); } catch (IOException e) { System.out.println("Problemi nella creazione degli stream su socket: "); continue; // il client continua l'esecuzione riprendendo dall'inizio del ciclo } } // se la richiesta non � corretta non proseguo else { System.out.println("File non presente nel direttorio corrente"); // il client continua l'esecuzione riprendendo dall'inizio del ciclo continue; } /* * Invio file richiesto e attesa esito dal server */ // creazione stream di input da file try { inFile = new FileInputStream(nomeFile); } /* * abbiamo gia' verificato che esiste, a meno di inconvenienti, * es. cancellazione concorrente del file da parte di un altro * processo, non dovremmo mai incorrere in questa eccezione. */ catch (FileNotFoundException e) { System.out.println("Problemi nella creazione dello stream di input da " + nomeFile + ": "); // il client continua l'esecuzione riprendendo dall'inizio del ciclo continue; } // trasmissione del nome try { outSock.writeUTF(nomeFile); System.out.println("Inviato il nome del file " + nomeFile); } catch (Exception e) { System.out.println("Problemi nell'invio del nome di " + nomeFile + ": "); // il client continua l'esecuzione riprendendo dall'inizio del ciclo continue; } System.out.println("Inizio la trasmissione di " + nomeFile); // trasferimento file try { //FileUtility.trasferisci_a_linee_UTF_e_stampa_a_video(new DataInputStream(inFile), outSock); FileUtility.trasferisci_a_byte_file_binario(new DataInputStream(inFile), outSock); // chiusura della socket e del file inFile.close(); // chiudo la socket in upstream, cioe' invio l'EOF al server socket.shutdownOutput(); System.out.println("Trasmissione di " + nomeFile + " terminata "); } catch (SocketTimeoutException ste) { System.out.println("Timeout scattato: "); socket.close(); // il client continua l'esecuzione riprendendo dall'inizio del ciclo continue; } catch (Exception e) { System.out.println("Problemi nell'invio di " + nomeFile + ": "); socket.close(); // il client continua l'esecuzione riprendendo dall'inizio del ciclo continue; } // ricezione esito String esito; try { esito = inSock.readUTF(); System.out.println("Esito trasmissione: " + esito); // chiudo la socket in downstream socket.shutdownInput(); System.out.println("Terminata la chiusura della socket: " + socket); } catch (SocketTimeoutException ste) { System.out.println("Timeout scattato: "); socket.close(); // il client continua l'esecuzione riprendendo dall'inizio del ciclo continue; } catch (Exception e) { System.out.println("Problemi nella ricezione dell'esito, i seguenti: "); socket.close(); continue; // il client continua l'esecuzione riprendendo dall'inizio del ciclo } // tutto ok, pronto per nuova richiesta }// while System.out.println("PutFileClient: termino..."); } // qui catturo le eccezioni non catturate all'interno del while // quali per esempio la caduta della connessione con il server // in seguito alle quali il client termina l'esecuzione catch (Exception e) { System.err.println("Errore irreversibile, il seguente: "); System.err.println("Chiudo!"); System.exit(3); } } // main } // PutFileClient

Salve ragazzi urge il vostro aiuto..
Rispondi quotando