Das musst du dir natürlich selbst ausdenken. Ein Programm kann schließlich nicht Gedanken lesen um heraus zu finden welchen Nickname sich jemand geben will.
Du musst dir also ein Kommando ausdenken welches der Client an den Server schicken kann, auf welches der Server mit einer Auflistung der verbundenen Clients reagiert. Ob jeder Eintrag der Liste aus einer Socket-ID besteht oder ein Nickname dahinter steckt bleibt dir überlassen. Wenn ein Nickname oder dergleichen dahinter steckt, muss jeder Client nach dem Verbinden zum Server, dem Server natürlich auch eben diese Informationen übermitteln.
Also:
- Client verbindet zu Server
- Client schickt Nickname/LoginID zu Server
- Server wartet auf Verbindungen
- Server wartet auf Commandos (Anmeldung, Abfrage der Nutzerliste, Senden einer Nachricht an xy)
- Wenn Anmeldung erfolgt, prüfen ob eventuelles Passwort stimmt und dann in eine Liste angemeldeter Nutzer einfügen
- Wenn Nutzerliste abgefragt wird dann alle IDs(Nicknames) zurück schicken (natürlich nur dann möglich wenn Client erfolgreich einen Nickname/LoginID übermittelt hat)
- Wenn Nachricht an XY geschickt werden soll, prüfen ob XY angemeldet ist und die Nachricht entsprechend an den entsprechenden Client weiter leiten
Im übrigen macht es keinen Sinn einen kompletten Beitrag zu zitieren wenn dieser der direkte Vorgänger ist. Würde das jeder machen würde jede Antwort nur noch aus einem riesen Zitat des vorhergehenden Beitrages bestehen welcher wiederum aus einem Zitat der Beitrag vor jenem besteht etc.