PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Client/Server-Kommunikation



Gartenzwerg
16-08-2006, 18:40
Hallo,

ich will eine Client/Server-Anwendung schreiben. Der prinzipielle Aufbau ist mir geläufig. Aber wie kommunizieren Client und Server miteinander?
Ich weiß, wie man Nachrichten hin- und herschickt.
Schicke ich nun einen String und parse diesen nach selbstdefinierten Schlüsselwörtern oder übermittelt man direkt die Datenobjekte bzw. Klassen. (könnte mir vorstellen, dass das mehr traffic verursacht.)
Oder macht man das ganz anders?
Sorry, für die eigenartige Formulierung der Frage.

Gartenzwerg

P.S.: Sprache ist C bzw. C++ evtl. Qt

peschmae
16-08-2006, 19:26
Das kommt halt sehr drauf an ;)

Ich meine wie genau gedenkst du die Objekte "direkt" zu übermitteln? Ok, bei Java kannst du die recht einfach serialisieren und dann als bytestrom schicken.

Aber dann brauchst du immer noch irgendwas drumherum damit die andere Seite weiss was da gerade auf sie zukommt.
Das wiederum kannst du irgendwie machen - z.B. als XML (wie bei Jabber) oder Kraut und Rüben (wie wenn ich das schreiben würde ;))

Am besten guckst du dir wohl ein Protokoll an das was ähnliches macht was du machen willst. Oder benutzt sogar ein schon existierendes.

MfG Peschmä

Gartenzwerg
16-08-2006, 19:57
Es soll eine Art Personalverwaltung werden.
Beispiele, die vom Client gesendet werden müssten:
ADD Mustermann, Peter Musterstraße 1 München
SET TELNR Mustermann, Peter TO 12345/6789
GET TELNR Mutermann, Peter
LOAD FILE
SAVE
usw.

Direkt die Klassen übersenden, wäre glaube ich mit einem QDataStream möglich.


QString name="Peter Mustermann";
int telnr="123";

QByteArray block;
QDataStream out(&block, QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_4_0);
out << name;
out << telnr;

clientConnection->write(block);

oder so ähnlich. Ungetestet!
Aber das erweist sich, glaube ich als sehr umständlich. Die Verwendung eines Strings, den man selber parst ist wahrscheinlich günstiger.

Gartenzwerg

Pingu
17-08-2006, 09:26
Tja, genau das sind die Entscheidungen, die ein Programmierer treffen muss, bevor er auch nur eine Programmzeile schreibt.

Sollen die herstellersppezifisch übertragen werden, z.B. als Binary-Objekte. Wie baucht man die Binary-Objekte auf, damit man erkennt welches Binary-Objekt da übertragen wird.
Sollen die Daten halbwegs standardisiert übertragen werden, z.B. als eine ASCII-Kodierung, sollen sie in XML formatiert übertragen werden, usw.

Das ganze nennt man Protokollentwicklung, weil man ein Protokoll zur Kommunikation entwickelt. Zu den Überlegungen oben kommt noch hinzu Überlegungen wie, braucht man diese nur für dieses eine Projekt oder muss es "future-proof" sein.

Pingu

mehlvogel
17-08-2006, 19:06
Zur direkten Übergabe von Objekten gibt es ausserdem zahlreiche Protokolle und einen Haufen Middleware, wie z.B. Monster wie CORBA.
Ich habe letztes Jahr eine Vorlesung über das Thema gehört, die Folien dazu findest du hier: http://www.tk.informatik.tu-darmstadt.de/Lehre/ws0506/votk1