Salve a tutti. Vi espongo il mio problema:
Vorrei realizzare un client e un server che siano installati su macchine diverse.
Quando dico macchine diverse intendo che io ho il server e qualcuno di voi ha il client.
Le classi base che ho implementato sono le seguenti:
- SERVERcodice:public class Server { public static void main(String[] args) { try { // apertura del socket server ServerSocket server = new ServerSocket(12345); // dichiarazione del socket client e del buffer di ingresso Socket client; BufferedReader in; System.out.println("Server ready (CTRL-C quits)\n"); // ciclo infinito while(true) { // chiamata bloccante, in attesa di connessione da parte di un client client = server.accept(); System.out.println("Client connected: "+client); // lettura e stampa del messaggio in ingresso in = new BufferedReader(new InputStreamReader(client.getInputStream())); System.out.println(">> "+client.getInetAddress()+": "+in.readLine()+"\n"); // chiusura del client socket client.close(); } } catch (Exception e) { e.printStackTrace(); } } }
- CLIENT
codice:public class Client { public static void main(String[] args) { // verifica correttezza dei parametri String messaggio = "Ciao mondo"; try { // preparazione dell'indirizzo del server InetAddress address = InetAddress.getByName("localhost"); // creazione socket Socket client = new Socket(address, 12345); System.out.println("Client ready.\n"); // creazione buffer di scrittura PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(client.getOutputStream())), true); System.out.println("Buffer ready, sending message \""+messaggio+"\"...\n"); // scrittura del messaggio (passato come parametro) nel buffer in uscita out.println(messaggio); System.out.println("Message sent.\n"); // chiusura socket client.close(); } catch (Exception e) { e.printStackTrace(); } } }
Allora in locale il tutto funziona. Ora per fare il passo avanti ovvero fare un programma distribuito, ovviamente il client deve conoscere a priori l'indirizzo ip del server.
Quindi basta modificare nel Client le seguenti righe?
codice:InetAddress address = InetAddress.getByName("localhost"); Socket client = new Socket(address, 12345);
Eliminando la prima riga e scrivendo manualmente ad esempio :
codice:Socket client = new Socket("111.22.3.4", 12345);
Illuminatemi su questo perchè avrei altre domande forse più interessanti
e grazie in anticipo![]()


Rispondi quotando