Die Idee ist garnicht mal so falsch.
Was du richtig erkannt hast : du brauchst irgendwo EIN Objekt was für ALLE Clients gleich ist. Nur war deine Wahl des Objektes eher sub-optimal. In der Regel werden nämlich nicht die auszutauschenden Nachrichten in eine List gepackt sondern die Client-Threads *Achtung : du sprichst von zwei "Servern" die mit ein ander reden ... was du meinst sind aber nur zwei Client-Threads die über die EINE Server-Instanz mit ein ander kommunizieren*.
Auch wenn du mit dem Beispiel jetzt etwas Probleme bekommen wirst da du ja deine "zusammengeklebte" Socket/Stream-Klasse hast kann ich folgendes "Tutorial" nur bestens empfehlen
http://java.seite.net/chat/index.html
Das , was da beschrieben ist , ist zwar eigentlich ein Chat ... wenn du das ganze aber etwas abstrakter siehst ist eigentlich nichts weiter als das was du willst : mehrer Clients kommunizieren über einen Server.
Auch hier gibt es wieder verschiedene Konzepte :
1) Server-weiter Broadcast : alle Clients erhalten die von einem Client gesendete Nachricht , inklusive er selbst
2) Channel-weiter Broadcast : nur Mitglieder eines bestimmten Channels erhalten die Nachricht , dabei können mehrere von ein ander unabhängige Channels auf dem Server exisitieren , dadurch ist es möglich die Menge der Clients die eine bestimmte Nachricht die von einem bestimmten Client gesendet wird auch nur an die zu senden die diese empfangen sollen
3) dierekte Kommunikation : dabei teilt der sendene Client dem Server mit für welchen anderen Clienten die folgende Nachricht bestimmt ist , dabei wird diese Nachricht nur einfach an den Ziel-Client durchgereicht , es gibt kein Echo
Die 1te Grundform ist in dem Tutorial beschrieben welches ich die gelinkt habe. Für die Formen 2 und 3 braucht es dann noch zusätzliche logik um die man sicher aber erst kümmern sollte wenn man das Grundgerüst fertig hat da der Server nur erweitert , nicht aber in seiner bisheringen Form verändert wird.
btw : ein Echo-Server ist eine Sonderart : hierbei ist der Server zwar in der Lage mehrer Clienten gleichzeitig zu bedienen , jedoch reden diese nur mit sich selbst , eine Interkommunikation zwischen verschiedenen Clienten ist ausgeschlossen.
Ich hoffe ich konnte dir einen Denkanstoß geben.
Bei Problem , Fragen oder sonstigem frag hier lieber 2 mal bevor du es einmal falsch machst.