Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Client / Server Struktur. Mehrer Datenstrukturen, eure Meinu (https://www.delphipraxis.net/100320-client-server-struktur-mehrer-datenstrukturen-eure-meinu.html)

Jackie1983 26. Sep 2007 09:39


Client / Server Struktur. Mehrer Datenstrukturen, eure Meinu
 
hi,

bin gerade dabei eine Client / Server Anwendung zu programmieren.
Mit der Anwendung sollen verschiedene Datenstrukturen(Records) über das Netzwerk gesendet werden.
Also z.b der Client sendet nur einen String. Bei einer anderen Aktion wird ein ganzer Record gesendet. Dann wird ein andere Record gesendet etc.

Was meint ihr, wie soll ich das am besten aufbauen.
-Für jede Datenstruktur ein Client / Server Komp.
-Ein großen Record mit allen Daten.

Habe es sonst immer mit TServerSocket gemacht.

Ich weis nicht wie der Server weis was für eine Datenstruktur geschickt wird.
Ob Record 1 oder Record 2. Alle Records sind ja unterschiedlich aufgebaut.

thx

marabu 26. Sep 2007 10:35

Re: Client / Server Struktur. Mehrer Datenstrukturen, eure M
 
Hallo Jackie,

du wirst nicht umhin kommen ein eigenes Anwendungsprotokoll zu entwickeln. Dazu klärst du deinen Kommunikationsbedarf und entwickelst eine entsprechende Struktur (message-type)(options)(data). Im message-type kannst du im einfachsten Fall direkt den Record-Typ übermitteln.

Grüße vom marabu

Jackie1983 26. Sep 2007 10:49

Re: Client / Server Struktur. Mehrer Datenstrukturen, eure M
 
hi marabu,
habe da auch schon was gefunden
http://www.delphi-library.de/viewtopic.php?p=325624
ich denke mal das sollte weiterhelfen.

danke.

Jackie1983 26. Sep 2007 22:14

Re: Client / Server Struktur. Mehrer Datenstrukturen, eure M
 
So ein Anwenderprotokoll ist ja nicht gerade eine einfache sache.......
Habe dann auf einer Seite mal gelesen das man keine Records senden soll.

Jetzt habe ich mir das Indy Demo "Indy9Demos\IdTCPDemo" angeschaut.
Da wird auch immer ein Record versendet.
Delphi-Quellcode:
type
  TCommBlock = record  // the Communication Block used in both parts (Server+Client)
                 Command,
                 MyUserName,                // the sender of the message
                 Msg,                       // the message itself
                 ReceiverName: string[100]; // name of receiver
               end;
Was denn nun?

Oder sollte man es lieber so machen?
SendText(MeinBefehl#TextText);

also z.b.
SendText('LOGIN#NameXYZ');
SendText('MSG#Meine Nachricht');
und dann mit einem Parser den Text abarbeiten.........

SurfDuDe 27. Sep 2007 00:29

Re: Client / Server Struktur. Mehrer Datenstrukturen, eure M
 
Mein Tipp, nimm RemObjects:

www.remobjects.com

Wenn du dazu fragen hast, nur los :)

Jackie1983 27. Sep 2007 08:33

Re: Client / Server Struktur. Mehrer Datenstrukturen, eure M
 
das kostet aber was und das nicht gerade wenig......

marabu 27. Sep 2007 08:50

Re: Client / Server Struktur. Mehrer Datenstrukturen, eure M
 
Hallo Jackie,

so ein Anwendungsprotokoll ist eigentlich keine Hexerei. Hast du denn deinen Kommunikationsbedarf schon ermittelt oder willst du ins Blaue hinein entwickeln?

Die Übermittlung von Records hat ihre Tücken, weil du interne Darstellungen verschickst. Für AnsiStrings steht da nur ein Zeiger im Record und für ShortStrings verschickst du immer den ganzen Zeichenpuffer, auch wenn mal nur ein Byte genutzt wird. Es spricht nichts gegen das Versenden von Records, aber du musst halt wissen was du da machst.

Mach dir erst mal einen Plan, welche Messages du austauschen möchtest und dann baust du dir ein Kommunikationsobjekt, das genau diese Nachrichten implementiert. Das kannst du durch Ableiten von der Indy-Komponente machen oder du kapselst die Indy-Komponente lediglich. Jedem Nachrichtentyp entspricht am Ende einer Methode deines Kommunikationsobjektes.

Freundliche Grüße

Jackie1983 27. Sep 2007 09:31

Re: Client / Server Struktur. Mehrer Datenstrukturen, eure M
 
Zitat:

Zitat von marabu
Hallo Jackie,

so ein Anwendungsprotokoll ist eigentlich keine Hexerei. Hast du denn deinen Kommunikationsbedarf schon ermittelt oder willst du ins Blaue hinein entwickeln?

hi Marabu,

habe noch nicht wirklich festgelegt wie der Kommunikationsbedarf aussieht. Nur im groben.
Möchte die Kommunikation stück für stück aufbauen.

Zitat:

Zitat von marabu
Mach dir erst mal einen Plan, welche Messages du austauschen möchtest und dann baust du dir ein Kommunikationsobjekt, das genau diese Nachrichten implementiert. Das kannst du durch Ableiten von der Indy-Komponente machen oder du kapselst die Indy-Komponente lediglich. Jedem Nachrichtentyp entspricht am Ende einer Methode deines Kommunikationsobjektes.

Meinst du dann so was in der Art
Delphi-Quellcode:
  TTcpObj = class
  private
  public
    Constructor Create;
    Procedure SendLogin(User : string);
    Procedure SendLogout;
    Procedure SendMsg(Msg : string);
  end;
sehe ich das richtig so wie du es meinst?

mfg

shmia 27. Sep 2007 10:00

Re: Client / Server Struktur. Mehrer Datenstrukturen, eure M
 
Einer der flexibelsten Möglichkeiten wäre die Daten in XML zu verpacken.
So gibt es z.B. das XMPP.
Nun ist XML sehr "geschwätzig" und erhöht die erforderliche Übertragungsmenge recht deutlich.
Da könnte JSON helfen, da es zwar ebenfalls ein hierarchisches Datenformat ist, aber nicht so viel Overhead hat.

Jackie1983 27. Sep 2007 12:41

Re: Client / Server Struktur. Mehrer Datenstrukturen, eure M
 
hi shmia,

werde mal schauen ob ich was mit JSON anfangen kann.....


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz