Hallo zusammen
Ich möchte mit einem Client mit einem Server über Sockets kommunizieren und Daten austauschen. Zusätzlich möchte ich von einem Client über den Server mit einem anderen, verbundenen Client direkt eine Verbindung haben.
Ich habe jetzt alles mit dem BufferedReader gemacht. Nur ist jetzt das ganze sehr statisch, daher wenn ich vom Client etwas sende, muss der Server genau wissen für was das gut ist, damit der Server es einlesen kann.
Client-Code:
Zuerst loggt sich der Client beim Server ein, bekommt danach eine Liste mit allen verfügbaren Usern, kann dort einen User wählen, mit wem er sich gerne verbinden möchte.
Gebe es keine Möglichkeit, direkt ein Objekt vom Server an den Client zu schicken? (Mal abgesehen von RMI, oder sollte ich doch lieber RMI verwenden?)
Und wie könnte ich jetzt eine Verbindung von einem Client über den Server zu einem anderen Client aufbauen?
Vielen Dank im Voraus und Gruss
Ich möchte mit einem Client mit einem Server über Sockets kommunizieren und Daten austauschen. Zusätzlich möchte ich von einem Client über den Server mit einem anderen, verbundenen Client direkt eine Verbindung haben.
Ich habe jetzt alles mit dem BufferedReader gemacht. Nur ist jetzt das ganze sehr statisch, daher wenn ich vom Client etwas sende, muss der Server genau wissen für was das gut ist, damit der Server es einlesen kann.
Client-Code:
Zuerst loggt sich der Client beim Server ein, bekommt danach eine Liste mit allen verfügbaren Usern, kann dort einen User wählen, mit wem er sich gerne verbinden möchte.
Java:
private void connect() throws IOException
{
try
{
kkSocket = new Socket("localhost", 4444);
out = new PrintWriter(kkSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(kkSocket.getInputStream()));
out.println(nameField.getText());
out.println(numberField.getText());
// First line is null
in.readLine();
String loginSuccessful = in.readLine();
if ("true".equals(loginSuccessful)) {
infoLabel.setText("Login successful");
// Receiving the userlist
String socketList = in.readLine();
showSocketList(socketList);
System.out.println("LOGGER - " + socketList);
Thread clientThread = null;
if (clientThread == null) {
clientThread = new Thread(this, "Client");
clientThread.start(); // start() method in Thread
}
}
else if ("false".equals(loginSuccessful)) {
infoLabel.setText("Login not successful");
}
} catch (UnknownHostException e)
{
System.err.println("Don't know about host: localhost.");
System.exit(1);
} catch (IOException e)
{
System.err.println("Couldn't get I/O for the connection to: localhost.");
System.exit(1);
}
}
Gebe es keine Möglichkeit, direkt ein Objekt vom Server an den Client zu schicken? (Mal abgesehen von RMI, oder sollte ich doch lieber RMI verwenden?)
Und wie könnte ich jetzt eine Verbindung von einem Client über den Server zu einem anderen Client aufbauen?
Vielen Dank im Voraus und Gruss