Hallo,
ich habe ein kurzes Programm geschrieben, bei dem der Client einen Array über Streams an den Server schickt, und dieser als Bestätigung einfach zurück echot.
Allerdings möchte ich, dass der Server die empfangene nachricht nicht nur an den einen Client zurück sendet, sondern an alle.
Dazu habe ich schon mehrere verschiedene Beiträge gesehen, und versucht diese in meine Lösung mit aufzunehmen, bis jetzt allerdings erfolglos.
Leider gibt es im .nt package keine "sendToAllConnectedClients()" methode o.ä.
Kann mir jemand einen Lösungsansatz empfehelen, der sich für Java Netzwerk erinsteiger eignet? Die Methoden werden später von Buttons angesteuert, die Endlosschleife unud die Main Methoden sind nur zum testen. (Der converter erledigt nicht für das Netzwerk wichtiges)
Vielen Dank!
[CODE lang="java" title="Server"]public class Server {
public static void main (String [] args){
Server server = new Server();
}
public static final int PORT = 9090;
private InputStream in = null;
private OutputStream out = null;
Converter converter = new Converter();
public Server(){
try{
ServerSocket listener = new ServerSocket(PORT);
System.out.println("[SERVER] waiting for client connection...");
while(true){
Socket client = listener.accept();
System.out.println("[SERVER] Connected to client: ") ;
in = new DataInputStream(client.getInputStream());
out = new DataOutputStream(client.getOutputStream());
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte buffer [] = new byte[1024];
baos.write(buffer,0, in.read(buffer));
byte result [] = baos.toByteArray();
int [] intResult = converter.byte2int(result);
String res = Arrays.toString(result);
System.out.println("Recieved from Client: " + Arrays.toString(intResult));
out.write(result);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}[/CODE]
[CODE lang="java" title="Client"]public class Client {
public static void main (String [] args)throws Exception{
Client client = new Client();
}
public static final int PORT = 9090;
public static final String HOST= "localhost";
public OutputStream out = null;
private InputStream in = null;
Converter converter = new Converter();
public Client() throws Exception{
try {
while(true) {
//neue Clientverbindung wird initialisiert
Socket socket = new Socket(HOST, PORT);
//Dem socket werden Output und Inputstream zugewiesen
out = new DataOutputStream(socket.getOutputStream());
in = new DataInputStream(socket.getInputStream());
int intArray[] = {0, 1, 2, 3, 4, 5, 130};
byte[] byteArray = converter.int2byte(intArray);
//zum Server schicken
out.write(byteArray);
String req = Arrays.toString(byteArray);
System.out.println("Zum Server gesendet (IntArray)" + Arrays.toString(intArray));
System.out.println("Zum Server gesendet (ByteArray)" + req);
//empfangen
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte buffer[] = new byte[1024];
baos.write(buffer, 0, in.read(buffer));
byte[] result = baos.toByteArray();
String res = Arrays.toString(converter.byte2int(result));
System.out.println("Vom Server empfangen: " + res);
}
}catch(Exception e){
e.printStackTrace();
}
}
}[/CODE]
ich habe ein kurzes Programm geschrieben, bei dem der Client einen Array über Streams an den Server schickt, und dieser als Bestätigung einfach zurück echot.
Allerdings möchte ich, dass der Server die empfangene nachricht nicht nur an den einen Client zurück sendet, sondern an alle.
Dazu habe ich schon mehrere verschiedene Beiträge gesehen, und versucht diese in meine Lösung mit aufzunehmen, bis jetzt allerdings erfolglos.
Leider gibt es im .nt package keine "sendToAllConnectedClients()" methode o.ä.
Kann mir jemand einen Lösungsansatz empfehelen, der sich für Java Netzwerk erinsteiger eignet? Die Methoden werden später von Buttons angesteuert, die Endlosschleife unud die Main Methoden sind nur zum testen. (Der converter erledigt nicht für das Netzwerk wichtiges)
Vielen Dank!
[CODE lang="java" title="Server"]public class Server {
public static void main (String [] args){
Server server = new Server();
}
public static final int PORT = 9090;
private InputStream in = null;
private OutputStream out = null;
Converter converter = new Converter();
public Server(){
try{
ServerSocket listener = new ServerSocket(PORT);
System.out.println("[SERVER] waiting for client connection...");
while(true){
Socket client = listener.accept();
System.out.println("[SERVER] Connected to client: ") ;
in = new DataInputStream(client.getInputStream());
out = new DataOutputStream(client.getOutputStream());
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte buffer [] = new byte[1024];
baos.write(buffer,0, in.read(buffer));
byte result [] = baos.toByteArray();
int [] intResult = converter.byte2int(result);
String res = Arrays.toString(result);
System.out.println("Recieved from Client: " + Arrays.toString(intResult));
out.write(result);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}[/CODE]
[CODE lang="java" title="Client"]public class Client {
public static void main (String [] args)throws Exception{
Client client = new Client();
}
public static final int PORT = 9090;
public static final String HOST= "localhost";
public OutputStream out = null;
private InputStream in = null;
Converter converter = new Converter();
public Client() throws Exception{
try {
while(true) {
//neue Clientverbindung wird initialisiert
Socket socket = new Socket(HOST, PORT);
//Dem socket werden Output und Inputstream zugewiesen
out = new DataOutputStream(socket.getOutputStream());
in = new DataInputStream(socket.getInputStream());
int intArray[] = {0, 1, 2, 3, 4, 5, 130};
byte[] byteArray = converter.int2byte(intArray);
//zum Server schicken
out.write(byteArray);
String req = Arrays.toString(byteArray);
System.out.println("Zum Server gesendet (IntArray)" + Arrays.toString(intArray));
System.out.println("Zum Server gesendet (ByteArray)" + req);
//empfangen
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte buffer[] = new byte[1024];
baos.write(buffer, 0, in.read(buffer));
byte[] result = baos.toByteArray();
String res = Arrays.toString(converter.byte2int(result));
System.out.println("Vom Server empfangen: " + res);
}
}catch(Exception e){
e.printStackTrace();
}
}
}[/CODE]