Beror på hur du har implementerat servern.
Din server lyssnar ju på nya klienter. Skapa en klass som hanterar varje klient. Varje gång en ny klient kopplar upp sig till chatten så instansieras en ny klienthanterare som sköter försändelse till och från servern.
Varje klienthanterare har en referens till server-objektet.
varje klienthanterare har en referens till en Socket objekt.
Varje klienthanterare har metoden sendMessage().
Lagra denna klienthanterare i en Vector i server-klassen.
Ha en sendAll() metod i servern som skickar meddelandet till alla andra klienter.
Denna metod fungerar således att du loopar vector:n och plockar fram varje element från den, dvs en klienthanterare åt gången.
server.sendAll(KlientHanterare ignoreMe, String meddelande):
ignoreMe är den klienthanterare som skickade detta meddelande.
hämta varje element ur vectorn i en for-loop
KlientHanterare h = (KlientHanterare)vector.get(i);
Kontrollera att h inte är samma som ignoreMe. Detta för att du inte vill skicka meddelandet till dig själv.
if(!ignoreMe.equals(h) )
{
h.sendMessage(message);
}
sendMessage(String message):
OutputStream out = socket.getOutputStream();
out.write(message.getBytes() );
Ifall du har tänkt att alla klienter samt servern är uippbyggda med Java så kan du köra med ObjecktOutputStream samt ObjectInputStream för då kan du skriva och läsa egenskapade klasser. Du kan då t ex ha en Message klass som innehåller mottagaren, sändaren samt meddelandet. Sen får du själv implementera ett sätt hur du behandlar message objektet.
hmm, du har en while loop där du väntar på data från servern.
while ((fromServer = myInput.readLine()) != null)
{
din kod
}
Så länge fromServer är null så kommer du inte in i loopen. Du kommer bara åt myOuput då du är inuti loopen. Därför kan du bara skriva svara då nån har skrivit.
Dela upp programmet i två trådar, en som lyssnar på input och en som lyssnar på tangentbordet.
Skapa en klass som antingen ärver från Thread eller implementerar interfacet Runnable.
Kolla på klassen Thread samt interfacet Runnable i API doc:
http://java.sun.com/j2se/1.4.2/docs/api/
mer info hittar du även här:
http://java.sun.com/docs/books/tutorial/essential/threads/
Jag har tidigare gjort en Java-chat som du kan titta på, bara jag hittar den. :) Klienten är applet-baserad varvid servern är en vanlig Java-applikation.
Den har stöd för multipla användare, smilies och timestamps.
Säg till om du är intresserad av att se på den.
Om du vill så kan vi diskutera mer Messenger. Heter jme på Messenger.