Um den Zusammenhang besser zu verstehen hier ein kleiner Programmablauf (kleiner Tipp: das ist viel Text, nur der obere Absatz ist erstmal wichtig, weil in dem Teil des Programms der Fehler sitzt):

Die Hauptklasse RSS erzeugt einen neuen Thread, der der Server ist. Eigentlich sollte, wenn sich ein Client, also ein Plugin, verbindet ein neues Exemplar der Klasse Client erstellt werden. Diese Client Klasse bildet die "Kommunikationsschittstelle" für das Plugin. Am Anfang schickt das Plugin einen String "identety" an seine Schnittstelle, der seine ID beinhaltet. Die Client-Klasse leitet die ID (in Form eines Integers) und sich selbst an die Funktion registerPlugin() der Hauptklasse RSS weiter. registerPlugin() fügt einem Client Array nun an der id'ten Stelle den übergebenen Client hinzu (clientarray[id] = client). (So ist gewähleistet, das später auf die Schnittstelle eines bestimmten Plugins zugegriffen werden kann)

Die Client Klasse ist selbst auch ein Thread und startet sich nach dem registrieren des Plugins bei der Hauptklasse selbst. (siehe start())
Die überschrieben run()-Methode, aus dem Interface Runnable beinhaltet eine endlos-Schleife, die den Input vom Plugin abfragt. Herreinkommende Strings haben das Format "id+msg" (z.B. 00hallo) als die ersten beiden Stellen sind die ID des Plugins an den die Mittelung geht und alle nachfolgenden Stellen sind die Mitteilung. Der String wird genau in diese Bestandteile zerlegt und der Methode messagePlugin() in der Hauptklasse RSS übergeben. Diese greift auf den Client-Array wieder an der id'ten Stelle zu und ruft die sendMessage()-Methode des dort gespeicherten Clients auf. Der wiederrum leitet den Nachrichten-String über den Socket an das Ziel-Plugin weiter. So können die Plugins miteinander kommunizieren.

So, das soll der fertige Programmaufbau werden. Wie gesagt, das Problem besteht darin, das der Server-Thread eben kein Exemplar der Klasse Client erzeugt und so alles nicht funktioniert.

Gruß, Jan.