come fa il server ad aprire una connessione TCP con il client se ogni volta che il client apre e chiude una connessione.
Anche si si registra l'ultima socketaddress dell' ultimo messaggio ricevuto dal server del client in oggetto per tempi brevi magari l'IP è persistente ma il sistema operativo ad ogni open/close non garantisce di conservare il numero di porta anddirittura di solito lo cambia vanificando la raggiungibilità.
L'unica escamotage che mi viene in mente è che il client attivi una propria ServerSoket dove ascoltare che non chiude mai e in qualche modo comunica al server magari via RMI (quello vero) il rispettivo IP, nome porta a cui accedere
Sarebbe stato secondo me piu semplice che il server avvertisse il client via RMI con una apposita callback per le richieste di amicizia.