Hallo,
unterhalb sind 2 ausführbare Programme (funktionieren wirklich), ein Server programm und ein Client programm, der Server wird gestartet und mehrere Clients können sich zum Server verbinden.
Das Klappt auch alles wunderbar mit den beiden unteren Programmen,
Jetzt wollte ich implementieren, dass, nachdem sich der/die Client zum Server verbunden haben (sagen wir mal 3), der Server Daten entweder zu allen 3 Clients sendet oder nur zu dem Client, zu dem die Daten gehören, Die Daten, die vom Server zu den Clients gesendet werden sollen, hab ich unten mal von der Console eingelesen.
Was mir nicht klar ist, wie mache ich das, dass alle 3 Clients die selbe nachricht bekommen?
Funktioniert das überhaupt?
unterhalb sind 2 ausführbare Programme (funktionieren wirklich), ein Server programm und ein Client programm, der Server wird gestartet und mehrere Clients können sich zum Server verbinden.
Das Klappt auch alles wunderbar mit den beiden unteren Programmen,
Jetzt wollte ich implementieren, dass, nachdem sich der/die Client zum Server verbunden haben (sagen wir mal 3), der Server Daten entweder zu allen 3 Clients sendet oder nur zu dem Client, zu dem die Daten gehören, Die Daten, die vom Server zu den Clients gesendet werden sollen, hab ich unten mal von der Console eingelesen.
Was mir nicht klar ist, wie mache ich das, dass alle 3 Clients die selbe nachricht bekommen?
Funktioniert das überhaupt?
Java:
package serialsend;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public Server() throws IOException, ClassNotFoundException, InterruptedException {
start();
}
private void start() throws IOException, ClassNotFoundException, InterruptedException {
ServerSocket ss = new ServerSocket(3344);
System.out.println("Server started");
while(true) {
final Socket s = ss.accept();
final ServerThread serverThread = new ServerThread(s);
serverThread.start();
}
}
private final class ServerThread extends Thread {
private final Socket s;
public ServerThread(final Socket s) {
this.s = s;
}
@Override
public void run() {
try {
final ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream());
final ObjectInputStream ois = new ObjectInputStream(s.getInputStream());
Object o = null;
while((o = ois.readObject()) != null) {
System.out.println("Am Server empfangen: " + o);
oos.writeObject("Hallo vom Server");
oos.flush();
final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String consolenString = "";
while((consolenString = br.readLine()) != null) {
oos.writeObject(consolenString);
oos.flush();
}
}
}
catch (Exception ex) {
System.out.println("Ausnahme: " + ex);
}
}
}
public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
new Server();
}
}
Java:
package serialclient;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
public Client() throws UnknownHostException, IOException, ClassNotFoundException {
Socket s = new Socket("localhost", 3344);
System.out.println("Zum Server verbunden: " + s.isConnected());
ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream());
ObjectInputStream ois = new ObjectInputStream(s.getInputStream());
System.out.println("Client started");
oos.writeObject("Hallo vom Client init");
Object o = null;
while((o = ois.readObject()) != null) {
System.out.println("Am Client: " + o);
//oos.writeObject("Hallo vom Client");
//oos.flush();
}
}
public static void main(String[] args) throws UnknownHostException, IOException, ClassNotFoundException {
new Client();
}
}