Autor Beitrag
catweasel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 487
Erhaltene Danke: 1

Win 7 64bit
Delphi 7 Second Sedition V7.2
BeitragVerfasst: Di 04.01.05 16:41 
Hi,

Ich weiss nich ob das Thema in diesem Subforum gut aufgehoben ist, aber ich poste es einfach mal hier...

Meine Frage ist:

Ich moechte ein Programme miteinander kommunizieren lassen.
Ein Beispiel in einfachster Form waere:
Programm 1 : - empfaengt keine Usereingaben und kann "nur" 2 Zahlen addieren und das Ergebniss zur Verfuegung stellen...

Programm 2 : - Kann nur dem Proramm 1 zwei Zahlen uebermitteln und das Ergebniss empfangen/ ausgeben. Addieren selbst kann es nicht...

Wie stelle ich nun den Datenaustausch am geschicktesten an und wie manage ich es dass das Programm 1 es auch auf die Kette bekommt wenn nicht nur eine Instanz von Programm 2, sondern, ueber Netzwerk, gleich eine ganze Armada anfragt..... ?? :?:

Hoert sich wirklich noob-style an, gelle ?? :?
(Das Beispiel ist auch nur eine stark vereinfachte Abstraktion des wirklichen Programmiervorhabens :lol: )

Aber ein paar Denkanstoesse, Tipps, etc. waren nicht schlecht... :roll:

Catweasel

_________________
Pommes werden schneller fertig wenn man sie vor dem Frittieren einige Minuten in siedendes Fett legt.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 04.01.05 16:44 
Moin!

Na, wenn das mal nicht klassisches Client/Server ist... :wink: schomal danach gegoogled (wie man heute sagt)?

cu
Narses
catweasel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 487
Erhaltene Danke: 1

Win 7 64bit
Delphi 7 Second Sedition V7.2
BeitragVerfasst: Di 04.01.05 17:01 
Hi,

Danke fuer den Input. :-) (wie man heute sagt).Leider beziehen sich alle Tutorials auf Datenbankbeispiele mit Datenbank Koponenten. Wo finde ich ein simples Beispiel mit "eigenen Typen"???

Catweasel

_________________
Pommes werden schneller fertig wenn man sie vor dem Frittieren einige Minuten in siedendes Fett legt.
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5285
Erhaltene Danke: 29

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 04.01.05 17:06 
man könnte eine kleine textdatei als zwischen dokument nehmen, werte n diese schreiben, verschicken und von dem anderen programm auslesen lassen :?
catweasel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 487
Erhaltene Danke: 1

Win 7 64bit
Delphi 7 Second Sedition V7.2
BeitragVerfasst: Di 04.01.05 17:14 
Naja, das ware irgendwie nich so richtig elegant, oder?

Aussserdem, wie stosse ich das andere Programm an damit es anfaengt zu rechnen ??? Mit nem Timer nach Textdateien suchen ?? :shock:

Hmm nee. Im reelen Beispiel haette ich etwa 400-500 Clients die von einem Serverprogramm Ergebnisse abholen und Anfragen verschicken....

Ich such da schon ne richtige Loesung.... :-)

catweasel

_________________
Pommes werden schneller fertig wenn man sie vor dem Frittieren einige Minuten in siedendes Fett legt.
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5285
Erhaltene Danke: 29

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 04.01.05 17:18 
dann nimm delphix damit kannst du sowas leicht realisieren
catweasel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 487
Erhaltene Danke: 1

Win 7 64bit
Delphi 7 Second Sedition V7.2
BeitragVerfasst: Di 04.01.05 17:30 
Delphix????

Oehmmmm... Hast du einen random-generator fuer deine Antworten ??? :lol:

Soweit mir bekannt is delphix ein, mittlerweile nicht mehr weiterentwickeltes, Interface fuer 2D Grafikdarstellung .......

Das hat nicht mal im entferntesten etwas mit meiner Problematik zu tun... *gruebel*

Catweasel

_________________
Pommes werden schneller fertig wenn man sie vor dem Frittieren einige Minuten in siedendes Fett legt.
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: Di 04.01.05 18:30 
Hallo,

ich schätze FearOfTheDark mein die Netzwerk-Komponenten (DirectPlay?) die bei der DelphiX-Distribution dabei sind. Mit denen kann man solche Dinge ziemlich einfach und schnell realisieren.
Ich würde die entweder die Standard-Komponenten TServerSocket und TClientSocket empfehlen, wobei ich mich mit der Performance bei 500 Clienten nicht auskenne. Wohl besser sind wohl die TCP-Komponenten von Indy. Die Beispiele sind da relativ vielsagen. Allgemein lässt sich dein Programm dann mit folgendem Record lösen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
type
  TDaten = record
    Id: Integer; //identifiziert die Nachricht (zb idAddiere)
    Size: Integer; //Gibt die Größe der Daten an
    Param: Pointer;  //Enthält die sonstigen Daten
  end;
Dein Server muss also nur noch auswerten, welche Abfrage er behandeln soll und zurückschicken.

Gruß Hape!

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5285
Erhaltene Danke: 29

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 04.01.05 19:07 
genau wulfsskin das meine ich :D

mein random antwort generator funktioniert momentan leider nicht,
ich muss weitere Antworten hinzufügen, damit er wieder up to date ist :D
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 04.01.05 19:52 
Moin!

catweasel hat folgendes geschrieben:
Leider beziehen sich alle Tutorials auf Datenbankbeispiele mit Datenbank Koponenten. Wo finde ich ein simples Beispiel mit "eigenen Typen"?


Guckst du hier. Scheint mir aber eher, du hast nicht "richtig" gegoogled... :wink:

cu
Narses
catweasel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 487
Erhaltene Danke: 1

Win 7 64bit
Delphi 7 Second Sedition V7.2
BeitragVerfasst: Mi 05.01.05 11:23 
Hi,


hab mir jetzt mal die Komponenten vorgenommen.... :shock:

Also der normale TServersocket und Clientsocket sind schon verwirrend genug und Indy kenn ich sonst nur mit Filzhut und Peitsche.... :?

Eigentlich gibt es bei Delphi ein schoenes Chatprogramm in den Demos/Internet/Chat.
Nur leider ist es nicht dokumentiert was den Lehrwert empfindlich mindert... :cry:

Kann mir einer sagen wie der Server seine connecteten Clients auseinanderhaelt ?
Ich les da immer nur was von readln() und writeln() in den Puffer.. Teilen sich etwa alle Clients *einen* Buffer..????


Catweasel

_________________
Pommes werden schneller fertig wenn man sie vor dem Frittieren einige Minuten in siedendes Fett legt.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 05.01.05 11:36 
Moin!

catweasel hat folgendes geschrieben:
Kann mir einer sagen wie der Server seine connecteten Clients auseinanderhaelt ?

Hmm, du hast dir mein Beispiel nicht angesehen oder vielleicht gar mal gestartet, oder?

Dann hättest du diese Prozedur gefunden:
ausblenden Delphi-Quelltext
1:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket);					

Wie man sieht, übergibt dir der Server den Socket, an dem der Client hängt.

Starte meine Demo einfach mal und schick ein paar Texte rum, dann wird ganz schnell klar, wie das funktioniert.

Allerdings aus dem TServerSocket dann einen echten Multithreaded-Server zu machen, na, da haste dir ja was vorgenommen... :wink:

cu
Narses
catweasel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 487
Erhaltene Danke: 1

Win 7 64bit
Delphi 7 Second Sedition V7.2
BeitragVerfasst: Mi 05.01.05 12:18 
Hi,

naja ich wollte nich dein Listiong copy&pasten und mir dann die properties der VCL kompos (checkbox.items) rauspfriemeln 8)
Mach es mal downloadbar, das ware nett .. :lol:
Oder mach vielleicht ein Tut draus :roll: :wink: :D

Socket... das is interessant :) . Was genaus ist ein "Socket" eigentlich..... :?:

Catweasel der wo am Netzwerkprogramm basteln lernen is

_________________
Pommes werden schneller fertig wenn man sie vor dem Frittieren einige Minuten in siedendes Fett legt.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 05.01.05 12:25 
Moin!

catweasel hat folgendes geschrieben:
naja ich wollte nich dein Listiong copy&pasten und mir dann die properties der VCL kompos (checkbox.items) rauspfriemeln 8)

Schade, dann läuft es ja gar nicht. :roll:

catweasel hat folgendes geschrieben:
Mach es mal downloadbar, das ware nett .. :lol:
Oder mach vielleicht ein Tut draus :roll: :wink: :D

Geht´s noch? Vielleicht wünscht der Herr ja auch eine fertig kompilierte Version mit ausführlichen Quelltextkommentaren und einer PDF-Anleitung zur Inbetriebnahme? Vielleicht als Email zugesandt? Mit telefonischem Support...

catweasel hat folgendes geschrieben:
Socket... das is interessant :) . Was genaus ist ein "Socket" eigentlich..... :?:
Catweasel der wo am Netzwerkprogramm basteln lernen is

...und das wird auch noch ein Weilchen so bleiben, fürchte ich.

Viel Erfolg dann weiterhin,

Narses
catweasel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 487
Erhaltene Danke: 1

Win 7 64bit
Delphi 7 Second Sedition V7.2
BeitragVerfasst: Mi 05.01.05 12:59 
Zitat:
Geht´s noch? Vielleicht wünscht der Herr ja auch eine fertig kompilierte Version mit ausführlichen Quelltextkommentaren und einer PDF-Anleitung zur Inbetriebnahme? Vielleicht als Email zugesandt? Mit telefonischem Support...


Hmmm solange die Produktaktivierung a la XP entfaellt 8) ....
Nee, sollte wirklich nich unverschaemt wirken... aber vielleicht kannst du mir ja ein Tutorial empfehlen.... (auch ohne Telefonsupport)....

Zitat:
...und das wird auch noch ein Weilchen so bleiben, fürchte ich.

Fuerchte ich auch bei der Antwort auf die Frage nach nem Socket... :wink:

immalockableim...

Catweasel :D

_________________
Pommes werden schneller fertig wenn man sie vor dem Frittieren einige Minuten in siedendes Fett legt.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 05.01.05 18:28 
Bisher erinnert mich dein Auftritt in diesem Thread an diese Tiere mit den relativ langen Nasenmuskeln in einem Verkaufsraum für hochwertige Keramikartikel... :(

Bei mir kommst du cool-faul rüber (irgendwie typisch Schüler :wink: ), aber leider ohne zu merken, dass du die Lösung praktisch schon bekommen hast. Nebenbei: eigenes Gehin + Tipps von hier + Google + DF-Suche -> Wissen!

Hier werden üblicherweise keine Privatschulungen abgehalten. Noch dazu hast du mit meinem Code praktisch die Lösung in laufendem Code, du blickst es nur leider nicht und willst es auch nicht ausprobieren. Da kann ich nicht mehr helfen.

Also, wie gesagt, weiterhin viel Erfolg beim Lernen!

Narses
catweasel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 487
Erhaltene Danke: 1

Win 7 64bit
Delphi 7 Second Sedition V7.2
BeitragVerfasst: Do 06.01.05 13:39 
Na Schueler bin ich schon lange nicht mehr.. :wink:
Und Privatstunden hab ich auch nie wirklich angesprochen..... :wink:
Und faul... hmm nein, ich glaube eher nicht...
Aber cool bin ich schon, das gebe ich gerne zu 8)

Nee, die Sache is die: Ich kann den Sourcecode nichtma einfach so pasten und kopieren, Ich hab im Moment zu Hause kein Internet und in der Firma kein Delphi.
Wegen eines kleinen "Incidents" koennen wir nix mehr ohen weiteres auf wechseldatentraegern speichern... Das is alles ein bissel kompliziert geworden bei uns (deswegen unten auch kein Sourcecode) :cry:

Naja, bin aber schon bis zu dem Punkt gekommen an dem das mit den Zahlen addieren schon klappt, bloss... :?

Der Client schreibt mit writeinteger; zwei Werte in den Puffer und der Server liest diese im onExecute; aus (mit readinteger;)und schreibt die Summer mit writeInteger; in den Puffer...
Wenn ich nun am Client per Knopfdruck den Puffer auslese habe ich auch schoen die Summe der Zahlen im Client.. So wies sein soll....aaaber

Der Client soll automatisch das Ergebniss verarbeiten/anzeigen ..
Da hab ich mir gedacht, frag doch mit nem Timer die Puffergroesse ab...
aber die aendert sich ja schon beim Schreiben der Werte des Clients, oder?
...und...
wenn ich mit der currentreadbuffersize property arbeiten will bleibt der Client stehen...
(Ich will den Wert auslesen und nix geht mehr).....

@narses

Was ich in deinem Beispiel nicht so ganz verstehe... Wo reagiert der Client auf das Serververhalten und wann genau wird das Readevent (dorhin hast du es glaub ich hinimplementiert) ausgeloest. Sprich: Liest der Server die Werte vom Client, oder sendet der Client die erte und der Server liest sie "bei sich" .... :?:

Wie gesagt, ich arbeit mich da gerade erstmal ein bischen ein....

Catweasel

_________________
Pommes werden schneller fertig wenn man sie vor dem Frittieren einige Minuten in siedendes Fett legt.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 06.01.05 14:20 
Moin!

Mach dich mal über Sockets schlau, dann wird dir einiges klarer.

In meinem Beispiel liest der Client lediglich die Uhrzeit vom Server, wenn dieser die CheckBox aktiviert hat (welche bedeutet, dass die Uhrzeit gesendet werden soll). Ansonsten kann der Cient nur den Inhalt von Edit1 an den Server schicken.

cu
Narses
catweasel Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 487
Erhaltene Danke: 1

Win 7 64bit
Delphi 7 Second Sedition V7.2
BeitragVerfasst: Do 06.01.05 15:06 
Zitat:
Mach dich mal über Sockets schlau, dann wird dir einiges klarer.


Na das dachte ich mir auch als ich fragte ...

Zitat:
Socket... das is interessant Was genaus ist ein "Socket" eigentlich.....


Koennte mir das mal jemand vom Prinzip her kurz erklaeren, oder auf ein Tut verweisen das dieses tut... :?:
All Beispiel die ich finde sind etwas "ueberladen"... :?

Catweasel

_________________
Pommes werden schneller fertig wenn man sie vor dem Frittieren einige Minuten in siedendes Fett legt.