quando fai comunicazioni di questo tipo ricorda che devi avere due canali, uno che sta in ascolto di quello che arriva e uno che usi per inviare.
Es. canale 1,

client1 agisce da Client
client2 agisce da Server

client1 si collega a client2, invia un mex sul suo outputstream, client2 lo riceve dal suo inputstream

canale 2

client1 agisce da Server
client2 agisce da Client

in maniera del tutto analoga.

Quindi istante per istante ogni tua istanza di programma agisce sia da server che da client, in modo da poter avere comunicazione bidirezionale.
come vedi non faccio ipotesi sul tipo di canale, qui non importa perché in realtà devi mettere le parti in condizioni di poter inviare/ricevere un messaggio, come lo fai al momento non importa