Autor Beitrag
lemming
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 470

Mac OS 10.3.1
Delphi 6 Pro, Kylix 3
BeitragVerfasst: Di 29.07.03 17:31 
Hi,

welche Methode würdet ihr vorschlagen um die Kommunikation zwischen zwei Programmen vonstatten gehen zu lassen. Zur Erleichterung. Beide werde ich selber schreiben ;)

Unter Windows würde ich selbstverständlich das Windows Messaging nehmen, aber da daß Prog unter Windows UND Linux laufen muß. Was nehme ich.

Ich habe da an UDP gedacht. :) Ich muß auch ziemlich viel hin und her schaufeln und das ziemlich schnell. In no time versteht sich.


Zuletzt bearbeitet von lemming am Mi 30.07.03 10:10, insgesamt 1-mal bearbeitet
UC-Chewie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 531

WinXP
D5 Ent
BeitragVerfasst: Di 29.07.03 17:37 
Wenn die beiden Programme auf dem gleichen Rechner laufen, dann ist IP ne Möglichkeit (über localhost). Ich weiß nicht, ob das so das Schnnellste ist, aber es geht halt unter sowohl Win als Linux.
Vielleicht gibt es auch eine SharedMemory-Funktionalität, die bei beiden Betriebsystemen geht.

_________________
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: Di 29.07.03 21:32 
hmmm, vieleicht liege ich ja falsch, aber was hälst du von Files ? Ist zwar etwas altertümlich aber relativ leicht zu proggen und zu prüfen aber systemunabhängig. Ein Fileserver wird sich ja finden lassen und wenns ne alte Winxxx Kiste mit einer Freigabe ist. (Samba auf Unix ist auch ok).
Gerade wenns viel ist, scheint der Overhead bei IP (udp vergiss, ist verbindungslos, d.h. du weisst nie ob Pakete angekommen sind) zu groß zu sein, und du mußt quasi dein eigenes Protokoll entwickeln.

grez.
msch
lemming Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 470

Mac OS 10.3.1
Delphi 6 Pro, Kylix 3
BeitragVerfasst: Mi 30.07.03 08:32 
Oh nein! Was mach ich den nun in der Internet/Netzwerk sparte?

Nun die beiden Programme laufen gemeinsam auf dem selben Rechner. Das kam wohl noch nicht so ganz klar zum Ausdruck.

Einfache Dateien habe ich auch bereits in betracht gezogen. Aber wäre der Umweg über die Festplatte nicht etwas umständlich? Gebe es den keine elegantere Lösung über den Speicher?

Zitat:
SharedMemory-Funktionalität
Wie würde das denn funktionieren?

-lemming
Cyrus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 56



BeitragVerfasst: Mi 30.07.03 08:52 
Ich würde das mit TServerSocket und TClientSocket machen. Dann kannst du Commands als Strings vom einen zum anderen Programm schicken und dort machst du ne routiene welche diese Commands interpretiert. Am bessten schickst du Zahlenwerte dann kannst du bei der Behandlungsroutine mit case schön die Befehle (zahlen codes) interpretieren. Du kannst das so machen wie der DemoChat von Delphi aufgebaut ist sollte bei dir im delphi demos Ordner sein.

Greetz Cyrus

_________________
Wer glaub er ist, hört auf zu werden!
Delphi Rulez!!!
lemming Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 470

Mac OS 10.3.1
Delphi 6 Pro, Kylix 3
BeitragVerfasst: Mi 30.07.03 09:53 
Da hast du recht cyrus. Das wäre eine Möglichkeit. Habe sowas auch schon gemacht. Hier: www.hardtware.de/software/flipchart.zip und hier www.hardtware.de/software/freechess.zip. Waren alles p2p Versuche.

Wenn ich aber schonmal die Möglichkeit habe das die Programme auf dem selben Rechner laufen. Sollte ich dann da wirklich über Netzwerk gehen?
Cyrus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 56



BeitragVerfasst: Mi 30.07.03 09:58 
du kannst auch über OLE oder DDE gehen wenn du wirklich nur auf dem selben Rechner die Komunikation brauchst. Die Netzwerk Variante ist einfach flexiebler da die Art der Plattform nicht so eine Rolle spielt!

Greetz Cyrus

_________________
Wer glaub er ist, hört auf zu werden!
Delphi Rulez!!!
lemming Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 470

Mac OS 10.3.1
Delphi 6 Pro, Kylix 3
BeitragVerfasst: Mi 30.07.03 10:10 
Ich glaube du hast recht. Ich mach's jetzt per UDP. Da kann bei ein und dem selben Rechner nicht viel passieren.

Danke für eure Hilfe.
Cyrus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 56



BeitragVerfasst: Mi 30.07.03 10:25 
wenn du wilslt dass niemand von aussen auf die netzwerk schnittstell deines Programms zugreifen kann dann verwende die IP 127.0.0.1
So kann man wirklich nur vom selben Rechner darauf zugreifen. Ausser es läuft ein Programm welches Pakete weiterleitet. :)

Greetz Cyrus

_________________
Wer glaub er ist, hört auf zu werden!
Delphi Rulez!!!
UC-Chewie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 531

WinXP
D5 Ent
BeitragVerfasst: Mi 30.07.03 11:13 
Ich bin mir nicht ganz sicher, aber ich glaube, dass zumindest unter Win Pakete mit der Zieladresse 127.0.0.1 gar nicht an den Netzwerktreiber geschickt werden, sondern schon intern im System verarbietet werden. Das spart Zeit, außerdem muss keine Verbindung hergestellt werden, denn wenn das Paket das System gar nicht verlässt, kann es auch (kaum) verloren gehen.

_________________
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: Mi 30.07.03 13:12 
Hmmm, *grübel* beide Proggs laufen auf der selben Maschine, beide schreibst du, und dann das ganze über ein asynchrones interface?

Dumme Frage, warum schreibst du zwei getrennte Proggs, die untereinander via Netzwerk kommunizieren sollen? Ich verstehs nicht.
Filebasierende "Komunikation" ist immer noch schneller, als Datenhäppchen durch den Flaschenhals Netzwerkkarte (oder deren Protokolle) zu schleusen, und dann noch über udp.

Schon mal überlegt, welche Bandbreite du brauchst? Nur so spasseshalber um vielleicht 10 GB durch eine (100MBit) Karte - auch wenn der localhost ist, zu schleusen ?

grez
msch
lemming Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 470

Mac OS 10.3.1
Delphi 6 Pro, Kylix 3
BeitragVerfasst: Do 31.07.03 15:06 
²MSCH,

also eine Methode über den Speicher wäre mir am liebsten gewesen. Eine Kommunikation über Netzwerk ziehe ich einer Lösung auf Filebasis vor, da ich

1. keine 10 Gig schauffeln werde
2. ich der Meinung bin, wie UC-Chewie, das die Lösung über den Netzwerk-Adapter, bzw. über das Protokoll, schneller ist als über die Festplatte.
3. Ich das auch auf Linux und Windows laufen muss und somit das ganye auf einen gemeinsamen Nenner bringen mu-.

Und warum stellst du jetzt meine Wahl in Frage? Ich hab doch schon angefangen! WAHHHHHHHHHH! :twisted: