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:

- SERVER
codice:
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