Przekazywanie łańcucha gniazdko-gniazdko/serwer

0

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();
		}	
	}
}

0

zapisz sobie wszystkich handlerów do jakiegoś arraya, przy odebraniu wiadomości przekaż do jakiejś synchronizowanej metody treść tego co chcesz wysłać, a w tej metodzie iteruj po wszystkich handlerach pomijając nadawce (lub nie jak tam chcesz). No w handlerze tez by się przydała metoda do wpisywania czegoś w ten PrintWriter

1 użytkowników online, w tym zalogowanych: 0, gości: 1