Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Ganze Klassen über Lan verschicken? (https://www.delphipraxis.net/89342-ganze-klassen-ueber-lan-verschicken.html)

.chicken 29. Mär 2007 19:30


Ganze Klassen über Lan verschicken?
 
Ich wollte hier mal nachfragen, ob es möglich ist, dass ich mir eine Klasse schreibe zB so:

Delphi-Quellcode:
type
  TDeck = class
   .......
  end;

........

var
  Deck: TDeck;

........

  Deck := TDeck.Create;
So und könnte ich zB dieses komplette Deck per Lan übertragen? Hoffe ihr versteht was ich mein!

mkinzler 29. Mär 2007 19:37

Re: Ganze Klassen über Lan verschicken?
 
Corba, DCOM, Midas, ...

.chicken 29. Mär 2007 19:50

Re: Ganze Klassen über Lan verschicken?
 
Ok, hat mir ehrlich gesagt jetzt nicht soviel geholfen, im Forum hier war nicht so viel zu finden. Naja trotzdem danke vielleicht find ich morgen ja noch was...

fLaSh11 29. Mär 2007 19:55

Re: Ganze Klassen über Lan verschicken?
 
wie wärs mit einem WinSocket.SendBuf?

.chicken 29. Mär 2007 19:59

Re: Ganze Klassen über Lan verschicken?
 
Über SendBuf hab ich shcon n bissl was gelesen, aber bisher nur dass man damit Records verschicken kann, geht das auch mit meinen Vorstellungen?

Is das mit den Indy-Komponenten realisierbar?

mkinzler 29. Mär 2007 19:59

Re: Ganze Klassen über Lan verschicken?
 
http://www.drbob42.com/examines/examin06.htm
http://www.blong.com/Conferences/DCon99/Corba/Corba.htm
http://www.delphi-online.at/
http://www.openitpower.com/wenzhang/97/6962_1.html
http://www.millennium-group.ru/index...t_id/30/level/

Bernhard Geyer 29. Mär 2007 20:05

Re: Ganze Klassen über Lan verschicken?
 
Übers Netz kann eh nur eine serialisierte Version einer Klasse übertragen werden. Techniken wie CORBA, SOAP oder DCOM/COM+ sorgen dafür das eine auf einer Seite implementierte Klasse auf der "anderen" Seite mittels Proxy/Stub als Interface zur verfügung steht. .NET kann mit remoting noch einen Schritt weiter gehen und auf beiden Seiten das Objekt zum leben bringen ohne das für jeden Methodenaufruf eine Netzwerkübertragung über Proxy/Stub erfolgen muß.

Wenn du uns noch ein paar Rahmenbedingungen für deine Anforderung nennst können wir dir auch verraten welche Technik für dich vernünftig Einsetzbar ist.

r2c2 29. Mär 2007 20:07

Re: Ganze Klassen über Lan verschicken?
 
Zitat:

Zitat von fLaSh11
wie wärs mit einem WinSocket.SendBuf?

WIrd IMHO nicht funktionieren, da du Klassen nicht dereferenzieren kannst. Wir machen hier doch kein C++...

Ums Serialisieren kommt man also kaum drum herum. Verschiedene Technologieen wurden da ja bereits genannt...

mfg

Christian

CK_CK 29. Mär 2007 20:10

Re: Ganze Klassen über Lan verschicken?
 
Hi!
Also bis jetzt bin ich hiermit ganz gut gefahren:
Delphi-Quellcode:
type
  TStreamableClass = class
  private
    fSetting1: ShortString;
    fSetting2: ShortInt;
    fSetting3: Boolean;
  public
    procedure ToStream(Stream: TStream);
    procedure FromStream(Stream: TStream);

    property Setting1: ShortString read fSetting1 write fSetting1;
    property Setting2: ShortInt read fSetting2 write fSetting2;
    property Setting3: Boolean read fSetting3;
  end;

implementation

{ TStreamableClass }

procedure TStreamableClass.FromStream(Stream: TStream);
begin
  Stream.Position := 0;
  Stream.read(fSetting1, SizeOf(fSetting1));
  Stream.read(fSetting2, SizeOf(fSetting2));
  Stream.read(fSetting3, SizeOf(fSetting3));
end;

procedure TStreamableClass.ToStream(Stream: TStream);
begin
  Stream.Position := 0;
  Stream.Write(fSetting1, SizeOf(fSetting1));
  Stream.Write(fSetting2, SizeOf(fSetting2));
  Stream.Write(fSetting3, SizeOf(fSetting3));
end;
Man kann damit ganz einfach die Klasse in einen Stream schreiben (ToStream) und danach verschicken. Den empfangenen Stream kann man ganz einfach mit FromStream in die Klasse einlesen.

Ich weiß nicht, ob das ganz sicher ist, aber ich hatte noch keine Probleme...

Viele Grüße,
Chris

.chicken 29. Mär 2007 20:12

Re: Ganze Klassen über Lan verschicken?
 
Ok, danke erstmal für die Links.

Ja also ich bin dabei ein Pokerspiel zu programmieren und ohne Netzwerk hätte das recht wenig Sinn.

Hab mir das folgendermaßen gedacht:

Zwischen den Spielern und den ganzen Klassen, dh zB dem Kartendeck, den Spielerwerten etc. schalte ich einen Server, der Zugriff auf diese Werte hat.
Dann wollte ich die Clients per Timer die aktuellen Werte vom Server abrufen lassen und dann auf die Benutzeroberfläche übertragen.

Ist doch so möglich oder mach ich das besser anders?

Vielleicht brauch ich dazu ja nichtmal die ganzen Klassen verschicken, aber dachte mir das wäre vielleicht am einfachsten.

Danke für die Hilfe!

sh17 29. Mär 2007 20:13

Re: Ganze Klassen über Lan verschicken?
 
Oh CORBA - meine Lieblings-Middleware (nicht ironisch gemeint), das so was in einem Atemzug und noch an erster Stelle bei Delphi genannt wird...

Bernhard Geyer 29. Mär 2007 20:21

Re: Ganze Klassen über Lan verschicken?
 
Zitat:

Zitat von sh17
Oh CORBA - meine Lieblings-Middleware (nicht ironisch gemeint), das so was in einem Atemzug und noch an erster Stelle bei Delphi genannt wird...

Vom Konzept her sehr schön, jedoch krankt es an der Interoperabilität. Alle haben schön nach dem standard implementiert und kein Hersteller konnte anschließend mit dem anderen "reden". Deshalb wurde dann der "Übersetzer" Inter-ORB (genaue Bezeichnung gerade entfallen) definiert und hat die sache nochmal um einiges Komplizierter gemacht.

Zurück zum Problem.

Ich würde mir hier erst mal auf XML-Basis neue "Formate" definieren welche deine verschiedenen Elemente beinhalten. Je nach dem wie der Server aussehen kann (mit Internetbasieren mit "richtigen" Server oder für Lanparties wo ein PC mal schnell Server übernehmen soll) könnte man auf Serverseite u.U. eine auf SOAP-Basis den Server implementieren. Für Ad-Hoc-Server wäre evtl. ein 08/15 Selbstentwickelter Server auf TCP/IP-Basis besser geeignet der dann für die Verwaltung und verteilung der Daten sorgt.

.chicken 29. Mär 2007 20:25

Re: Ganze Klassen über Lan verschicken?
 
Wow, das warn nun einige Begriffe die mir nix gesagt haben ^^
Ähm also weiss nich ob ich das deinem Text jetzt falsche entnommen habe, aber meine Vorstellung war es nur über Lan laufen zu lassen, dh ein PC soll den Server darstellen (der kann doch dann trotzdem auch Client sein, also auch spieln, oder?).

Hörte sich für mich nun alles sehr kompliziert an, geht das nicht auch simpler? :-\

Danke für deine Antwort

Elvis 29. Mär 2007 21:04

Re: Ganze Klassen über Lan verschicken?
 
Zitat:

Zitat von .chicken
Hörte sich für mich nun alles sehr kompliziert an, geht das nicht auch simpler? :-\

"Simpel" liegt im Auge des Betrachters. ;)
Du könntest deine Specs ein wenig genauer umreißen, dann ist es für uns auch einfacher dir zu helfen.
Bis jetzt klingt das, was du da vorhast[1] ziemlich nach dem klassischen Fall für .Net-Remoting.

[1]Intranet, viele Roundtrips, flexible, objektbasierte Datenstrukturen.

.chicken 29. Mär 2007 21:09

Re: Ganze Klassen über Lan verschicken?
 
Gut, also wie gesagt es handelt sich bei dem Projekt um ein Pokerspiel.
Sollte im Netzwerk mit bis zu ~10Spielern spielbar sein.

Die Clients erhalten Information vom Server und übertragen sie auf die Benutzeroberfläche.
Zu den Informationen gehören Dinge wie:
-Spielernamen
-Spielergeld
-Aktiver Spieler
-Bet, Raise...
-Blindstatus
-natürlich die Karten
-und noch ein paar andere Informationen

Ich wollte Klassen erstellen, auf die der Server Zugriff hat. Alles was die Clients dann benötigen, wird dann an sie gesand und bei ihnen in Variablen gespeichert.

Sind das so genug Informationen?
Danke für die Hilfe!

CK_CK 29. Mär 2007 21:15

Re: Ganze Klassen über Lan verschicken?
 
[Offtopic]
Guck' doch mal [HIER] und [HIER] nach.
Ich bin auch bei dem Projekt dabei und wir entwickeln auch gerade ein Pokerspiel (was sogar via Internet spielbar sein wird).
Das Projekt ist zur Zeit etwas "eingeschlafen". Vielleicht würde etwas frischer Wind gut tun. (Gemeint ist ein neuer, motivierter Mitarbeiter).

Wenn du Interesse hast, frage ich mal unsere Gruppe, ob wir dich aufnehmen können.

Wenn du natürlich das ganze alleine machen willst... Auch kein Problem ;)
[/Offtopic]

.chicken 29. Mär 2007 21:20

Re: Ganze Klassen über Lan verschicken?
 
Sorry, aber so gut sind meine Delphi Kenntnisse noch nicht. Auch wenn ich das sehr interessant finde, denke ich dass es für mich am Anfang besser is ein paar kleinere Projekte selber zu realisieren!

Trotzdem danke für das Angebot und ich bin sehr gespannt auf euer Ergebnis!

CK_CK 29. Mär 2007 21:20

Re: Ganze Klassen über Lan verschicken?
 
Okay ;)

sh17 30. Mär 2007 19:03

Re: Ganze Klassen über Lan verschicken?
 
OT
Zitat:

Zitat von Bernhard Geyer
Vom Konzept her sehr schön, jedoch krankt es an der Interoperabilität. Alle haben schön nach dem standard implementiert und kein Hersteller konnte anschließend mit dem anderen "reden". Deshalb wurde dann der "Übersetzer" Inter-ORB (genaue Bezeichnung gerade entfallen) definiert und hat die sache nochmal um einiges Komplizierter gemacht.

Richtig unübersichtlich wurde es dann mit den CORBA Components. Jaja, das waren noch Zeiten -Studium, Diplomarbeit **schwelg** Da hatte man noch richtig Zeit, um im Dreck zu stochern.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:38 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