# Server Client Daten hin und herschicken



## seux (13. Sep 2012)

Hallo,

ich musste vor kurzem eine Server Client Komponente aufsetzen. Die Verbindung zwischen den beide Programmen aufzubauen war auch kein Problem, aber bei dem versenden von Daten hab ich mich schwer getan, zumal ich in diesem Gebiet auch noch keine Erfahrung hatte.

Es sollte ungefähr so ablaufen: Der Client braucht bestimmte Daten vom Server. Er stellt eine Anfrage und wartet, das der Server die Daten verschickt, womit der Client weiterarbeitet. 

Meine Idee zum versenden der Daten stellte sich jedoch als absolut sch***e heraus. Meine Idee war, dass ich ein Datenobjekt hatte, welches die benötigten Daten beinhaltete. 

Beispiel:
Der Benutzer möchte sich anmelden. Client übergibt Datenobjekt mit Namen und Passwort und einer enum Konstante, dass der Benutzer sich anmelden möchte. Der Server empfängt das Datenobjekt und stellt fest, dass der Client sich anmelden möchte. Vergleicht die Daten mit der Datenbank und sendet ein Datenobjekt mit true oder false zurück.

In Java Code sah das ungefähr so aus:

```
public class Datenobjekt {
	public enum Funktion {ANMELDEN, ABMELDEN, BOOLEAN, ...};
	
	public ArrayList<String> args;
	public Funktion funk;
	
	public Datenobjekt( Funktion funk, ArrayList<String> args) {
		this.funk = funk;
		this.args = args;
	}
}
```

Naja, wie es nicht anders zu erwarten war, wurde Funktion mit der Zeit ziemlich groß, und die Idee mit der ArrayList :noe:

Ich wollte jetzt fürs nächste mal wissen, wie man das richtig macht.

gruß seux


----------



## ARadauer (13. Sep 2012)

Schau dir mal RMI oder gleich Spring Remoting an.

Der Client möcht sich anmelden? Dann ruft er die anmelden Methode am Server auf! Fertig.

Es gibt Interfaces wo die Methoden die der Client aufrufen kann drinnen stehen und der Server implementiert diese.
Der Client kennt nur das Interface. Spring Remoting kümmert sich um die Kommunikation.


----------



## FArt (13. Sep 2012)

Wie ARadauer schon sagte, solltest du dir eine bestehene Lösung für RPCs verwenden. Wenn es zusätzlich um An- und Abmeldung geht, würde ich auch vorschlagen, das mit einem Standard zu erschlagen: JAAS oder evtl. auch Spring Security (wenn du evtl. eh schon bei Spring gelandet bist).


----------

