serwer i dwóch klientów

0

Próbuję zrobić prosty program klient-serwer. Serwer ma obsługiwać dwóch klientów i ma to działać tak:
klient 1 wysyła komunikat do serwera, a serwer wysyła ten komunikat do klienta 2
klient 2 wysyła komunikat do serwera, a serwer wysyła ten komunikat do klienta 1
Oto metoda odpowiadająca za odbieranie i przesyłanie danych:

private DataOutputStream[] output = new DataOutputStream[2];
private DataInputStream[] input = new DataInputStream[2];

    public void odbierzWyslij() {
	int dane = 0, numerOdbiorcy = 0;
	
	if (liczbaKlientow == 2) {
		for (int i = 0; i < liczbaKlientow ; i++) {
			try {
				dane = input[i].readInt();
			} catch (IOException e) {
				e.printStackTrace();
			}
                            try {
                                    if (i == 1) numerOdbiorcy = 0;
            	                        else if (i == 0) numerOdbiorcy = 1;
				output[numerOdbiorcy].writeInt(dane);
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}</i>

Problem mam z tym że trzeba najpierw coś wysłać by można było odbierać. Jak zrobić żeby wysyłanie nie blokowało odbioru?

0

Sory pomyliły mi się nick z tematem :-D

Jeszcze raz kod sformatowany tym razem

        private DataOutputStream[] output = new DataOutputStream[2];
        private DataInputStream[] input = new DataInputStream[2];

        public void odbierzWyslij() {
                int dane = 0, numerOdbiorcy = 0;
               
                if (liczbaKlientow == 2) {
                        for (int i = 0; i < liczbaKlientow ; i++) {
                                try {
                                        dane = input[i].readInt();
                                } catch (IOException e) {
                                        e.printStackTrace();
                                }
                                try {
                                        if (i == 1) numerOdbiorcy = 0;
                                                else if (i == 0) numerOdbiorcy = 1;
                                        output[numerOdbiorcy].writeInt(dane);
                                } catch (IOException e) {
                                        e.printStackTrace();
                                }
                        }
                }
        }
0

O wątkach słyszałeś?

0

Słyszałem o wątkach, a bez wątków nie da się tego zrobić jakoś?

0

Da sie, poczytaj o java.nio i selectorach.
Wierz mi, duzo latwiej z watkami.

0

A z wątkami to jak by to mniej więcej miało wyglądać? Tworzyć osobny wątek dla każdego klienta czy zrobić odbiór i wysyłanie w osobnych wątkach?

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