Ci sono alcuni modi per risolvere questo problema. Ho capito dal tuo diagramma e chiedo al tuo cliente che il client 1 è il server e il tuo server è in realtà un proxy per reindirizzare le connessioni. Le seguenti soluzioni sono in ordine di la loro complessità.
La prima è una soluzione di rete: se la connettività tra client 1 e client 2 è tutto ciò che devi realizzare. Tutto quello che devi fare nei tuoi clienti è aggiungere un percorso all'altro client, aggiungere un percorso al client 1 per raggiungere il client 2 e viceversa. Non devi cambiare il design del tuo programma.
Il secondo è un server proxy Web: se nel server è in esecuzione un server Web, è possibile configurare il server Web come proxy inverso. ( istruzioni del proxy Apache ). Ciò è utile se non si ha molto controllo sulla rete, ma si ha privilegi amministrativi per i propri server
Terzo è una soluzione di programmazione: credo che tu abbia in mente la soluzione giusta per scrivere un programma per "inoltrare" i pacchetti al client. Questo è chiamato server proxy, quindi ciò che il proxy farà sarà ricevere richieste dal client al server e riceve la risposta dal server e la inoltra al client.Ma questo non garantisce prestazioni che potrebbero avere qualche problema di prestazioni. Sceglierei in questo modo solo quando ho privilegi che mi permetteranno di cambiare solo l'applicazione I Ho scritto e ho accesso limitato a reti o server e eviterò assolutamente di intraprendere questa strada Se possibile per i sistemi di produzione.
La tua affermazione su Java che non ha un buon socket web non è vera, l'API socket Java è probabilmente uno dei socket più utili là fuori.