No właśnie - mam napisać coś takiego = serwer odbiera wiadomosc od klienta, a nastepnie wysyla ja do wszystkich podlaczonych klientow. Klient mi dziala, bo z serwerem znalezionym w sieci sie komunikuje. Problem jest z serwerem - ani nie czyta od klienta, ani nie wysyla odebranej wiadomosci wszystkim polaczonym klientom:( Prosze o pomoc.
import java.io.*;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;
public class Server {
public static Socket[] klienci = new Socket[10];
public static int aktualnyKlient_NR = 0;
public static void main(String argv[]) throws IOException {
for (int i = 0; i < 10; i++) {
Server.klienci[i] = null;
}
ServerSocket ss = new ServerSocket(1234);
System.out.println("starting...");
while (true) {
klienci[aktualnyKlient_NR] = ss.accept();
new ServerConnection(aktualnyKlient_NR).start();
System.out.println("new connection");
aktualnyKlient_NR++;
}
}
}
class ServerConnection extends Thread {
int aktualnyKlient_NR;
private DataOutputStream dout[] = null;
private DataInputStream din = null;
ServerConnection(int aktualnyKlient_NR) throws SocketException {
this.aktualnyKlient_NR = aktualnyKlient_NR;
setPriority(NORM_PRIORITY - 1);
}
@Override
public void run() {
boolean connection = true; // connection tester for current client
try {
while (connection) {
for (int i = 0; i < aktualnyKlient_NR; i++) {
dout[i] = new DataOutputStream(Server.klienci[i].getOutputStream());
}
din = new DataInputStream(Server.klienci[aktualnyKlient_NR-1].getInputStream());
while (1 == 1) {
String s = din.readUTF();
s = s.trim();
if (s.startsWith("EXIT")) {
//informuj wszystkich, ze uciekl 1 klient
for (int i = 0; i < aktualnyKlient_NR; i++) {
dout[i].writeUTF("UCIEKL 1 KLIENT");
dout[i].flush();
}
Server.klienci[aktualnyKlient_NR].close();
System.out.println("PAPA, KLIENCIE");
} else if (s.startsWith("ADD")) {
//informuj wszystkich, ze przyszedl 1 klient
for (int i = 0; i < aktualnyKlient_NR; i++) {
dout[i].writeUTF("PRZYSZEDL 1 KLIENT");
dout[i].flush();
}
} else {
//informuj wszystkich, ze przyszedl 1 klient
for (int i = 0; i < aktualnyKlient_NR; i++) {
dout[i].writeUTF("KTOS NAPISAL: " + s);
dout[i].flush();
}
}
}//while connected
}//while true
} catch (IOException e) {
System.out.println("I/O error " + e);
Server.aktualnyKlient_NR--;
System.out.println("ILE KLIENTOW " + Server.aktualnyKlient_NR);
}
}
}