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