Witam!
Posiadam program, który łączy kilka klientów z serwerem. Serwer oczywiście korzysta z wątków.
Chcę napisać prosty czat.
Wiadomości wysłane od klienta A są odczytywane przez gniazdko (A). Nie wiem jednak jak mogę wiadomość odczytaną przez gniazdko (A
), przekazać serwerowi LUB innym gniazdkom (B, C
...) aby wszyscy klienci (B, C ...) otrzymali wiadomość klienta (A). Chodzi tutaj o czat.
Chcę aby zmienna "line" z klasy ClientHandler była wysłany do wszystkich obecnie połączonych clientów
Zamieszcze fragmenty kodu serwera:
public class Serwer
{
static PrintWriter out;
PanelS panelS;
public static void main(String[] args){
System.out.println("Serwer ON");
try
{
int i = 1;
ServerSocket s = new ServerSocket(8189);
while(true)
{
Socket incoming = s.accept();
Runnable r = new ClientHandler(incoming, i);
Thread t = new Thread(r);
t.start();
i++;
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
class ClientHandler implements Runnable {
public JTextArea area;
PanelS panelS;
public static PrintWriter out;
public Socket incoming;
public int counter;
public int identificator;
public String line;
public ClientHandler(Socket i, int c) {
incoming = i; counter = c;
System.out.println(i);
}
public void run(){
try {
try{
InputStream inStream = incoming.getInputStream();
OutputStream outStream = incoming.getOutputStream();
Scanner in = new Scanner(inStream);
final PrintWriter out = new PrintWriter(outStream, true);
out.println("Jestes polaczony z Serwerem");
while (in.hasNextLine())
{
String line = in.nextLine();
System.out.println("From Client i:" + incoming + line);
}
}
finally
{
incoming.close();
}
}
catch (IOException e){
e.printStackTrace();
}
}
}