Non conosco GWT, ma la creazione di Socket in Java è piuttosto semplice.
Il server (che accetta connessioni) crea una ServerSocket su una determinata porta e si mette in ascolto con il metodo accept(). All'arrivo di una connessione, tale metodo restituisce un oggetto Socket con il quale instaurare la comunicazione.
Il client, invece, crea un oggetto Socket passando l'indirizzo a cui collegarsi e la porta.
Server:
codice:
ServerSocket server = new ServerSocket( 5432 ); // Voglio restare in ascolto sulla porta 5432
Socket client = server.accept(); // Qui rimango in ascolto di un client
// Apro i canali di input/output verso il client
InputStream is = client.getInputStream();
OutputStream os = client.getOutputStream();
Client:
codice:
// Viene creata una socket e effettuata subito la connessione
Socket s = new Socket("indirizzo del server", 5432);
// Ok, apro i canali di comunicazione col server
OutputStream os = s.getOutputStream();
InputStream is = s.getInputStream();
L'unica accortezza (che non è scritta da nessuna parte) è che i canali di input/output devono essere aperti in modo incrociato (come nell'esempio). Se sul server apro prima l'input e poi l'output, nel client dovrò fare il contrario.
Ciao.