Guarda le classi che svolgono le funzioni di server e client in java non le conosco precisamente ma immagino che poco cambi da .NET puro, dove hai le classi TcpListener che rimane in accolto su una porta (Veci di server) e TcpClient che invece si connette.
Il metodo piu immediato che mi viene per creare la chat che desideri è:
-Un solo programma per ogni utente
-Il programma crea un istanza del server(semplifico) quindi si mette in ascolto su una determinata porta
-Subito dopo crea un istanza del client e rimane in attesa che l'utente decida di connettersi ad un altro client, ho riceva una connessione in entrata
Ora un client dovra tentare la connessione verso un altro, quindi l'utente1 immette i dati per connettersi all'utente2, quindi per l'utente1 il server smette di essere in ascolto e il client tenta una connessione verso il server dell'utente2. Utente2 riceve la richiesta di connessione e decide se rifiutare o accettare, se accetta anche il suo server smetti di ascoltare per tanto i due utenti rimangono con solo la parte client in funzione e possono comunicare tranquillamente attraverso uno stream di dati, quando la connessione viene terminata i due utenti si rimettono in ascolto di nuove connessioni.
Non guardare la terminologia, ne il discorso contorto che ho tirato in piedi, questa è una semplice soluzione che puo servirti a creare una versione semplificata di una chat p2p.
Tieni sempre a mente che hai a che fare con due classi, una che svolge veci di server e una che svolge veci di client, in poche parole una che rimane in attesa di connessione e l'altra che la tenta.
|