| Autor |
Beitrag |
Ja-Pa
      
Beiträge: 458
Win XP, Suse 9.3
D1, D3, D5 Std, D7 Pro, D2005 Pers, Kylix 3
|
Verfasst: Fr 26.08.05 00:23
Hallo!
Im Forum gibt es ja schon einige Threads, die sich mit der Kommunikation zwischen zwei Programmen beschäftigen.
Soweit ich das beurteilen kann, sind die genannten Methoden aber alle nur Windows-basierend - bis auf TCP.
TCP möchte ich allerdings aus verschiedenen Gründen, zum Beispiel weil die Programme beide auf dem selben Rechner laufen sollten oder wegen dem IP-Overhead, nicht unbedingt verwenden.
Meine Frage ist nun: Gibt es außer TCP Möglichkeiten zwischen Programmen zu kommunizieren - und das auf Windows und Linux?
Wäre sehr nett, wenn mir da jemand weiterhilft.
Viele Grüße,
Ja-Pa Moderiert von Klabautermann: Topic aus Sonstiges verschoben am Fr 26.08.2005 um 12:44
_________________ Der Autor dieses Textes haftet nicht für Schäden an Soft- oder Hardware
oder Vermögensschäden, die durch das Benutzen des Textes entstehen.
|
|
Sprint
      
Beiträge: 849
|
Verfasst: Fr 26.08.05 01:06
Mit Pipes. Soweit ich weiß, kommt das aus der Unix Welt und hat Microsoft ohne große Änderungen übernommen.
Edit: Ist natürlich quatsch was ich geschrieben habe. Hatte deine Frage nicht richtig gelesen.
_________________ Ciao, Sprint.
|
|
Ja-Pa 
      
Beiträge: 458
Win XP, Suse 9.3
D1, D3, D5 Std, D7 Pro, D2005 Pers, Kylix 3
|
Verfasst: Fr 26.08.05 11:23
Pipes sind so Sachen wie
Quelltext 1:
| dir /b /s > dateien.txt |
oder?
Ne, das bringt mich leider nicht wirklich weiter 
_________________ Der Autor dieses Textes haftet nicht für Schäden an Soft- oder Hardware
oder Vermögensschäden, die durch das Benutzen des Textes entstehen.
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: Fr 26.08.05 11:28
Hallo!
Vielleicht skizzierst du einmal kurz, was du realisieren willst?
BTW: Der erste Grund ('weil die Programme beide auf dem selben Rechner laufen sollten') leuchtet mir nicht so recht ein. Was hat das mit TCP zu tun? Und überhaupt, plattformübergreifend, aber auf dem selben Rechner? Benutzt du irgendwelche Virtualisierungssoftware?
Cu,
Udontknow
|
|
Grendel
      
Beiträge: 443
Gentoo Linux, MacOS X, Win 2000
D5 Ent, D7 Ent, Lazarus, Anjuta, MonoDevelop
|
Verfasst: Fr 26.08.05 11:40
Was meinst Du mit "plattformübergreifend"?!
Soll der Code auf mehreren Plattformen kompilierbar sein oder soll die Kommunikation über mehrere Plattformen hinweg funktionieren?
Erstes kannst Du komplett vergessen und zweites kollidiert mit Deiner Aussage, daß beide Programme auf dem selben Rechner laufen.
| Zitat: | | TCP möchte ich allerdings aus verschiedenen Gründen, zum Beispiel weil die Programme beide auf dem selben Rechner laufen sollten oder wegen dem IP-Overhead, nicht unbedingt verwenden |
Und Du bist sicher, daß der "IP-Overhead" so viel größer ist als z.B. der von Pipes?
Auf jeden Fall gibt es Pipes sowohl unter Linux als auch unter Windows.
Bis neulich ...
|
|
Ja-Pa 
      
Beiträge: 458
Win XP, Suse 9.3
D1, D3, D5 Std, D7 Pro, D2005 Pers, Kylix 3
|
Verfasst: Fr 26.08.05 12:05
Bis jetzt existiert das Projekt in der Forum nur auf dem Papier, deshalb noch keine Virtualisierungssoftware.
Ich habe einen TTS-Synthesizer geschrieben, der im Moment noch in einem einzigen Programm zusammengefasset ist.
Dieses Programm ist etwa wie Notepad aufgebaut, ein einfacher Editor, mit dem man sich den eingegebenen Text aber auch vorlesen lassen kann.
Wenn ich jetzt aber beispielsweise mein Mailprogramm ebenfalls um diese Funktion erweitern will, habe ich zwei Möglichkeiten:
1. Ich importiere im Mailprogramm diverse DLLs und rufe die entsprechenden Prozeduren auf.
2. Ich programmiere mir einen Server, der diese Funktionen bereitstellt und dann von mehreren Programmen gleichzeitig benutzt werden kann.
Ich habe mich für die zweite Möglichkeit entschieden. Nun möchte ich den Server aber gerne unter Windows und Linux (das meine ich mit plattforumunabhängig) zum Laufen bringen, ohne einen völlig anderen "Kommunikationsmechanismus" zu nutzen.
Dazu benötige ich eine Methode, mit dem Programme sowohl unter Windows als auch unter Linux kommunizieren können.
Bis jetzt sind mir da nur Möglichkeiten, die eigentlich fürs Netzwerk gedacht sind, bekannt wie z.B. TCP.
Das möchte ich aber nicht unbedingt nutzen, da beide Programme sowieso auf einem Rechner laufen sollten und ich dann möglicherweise noch Probleme mit anschlagenden Firewalls (die die Kommunikation innerhalb des Rechners verhindern) oder zu wenig Firewall (z.B. dass der Server einen Befehl aus dem Internet empfängt) habe.
Denn wenn ich sowieso kein Netzwerk möchte, wieso dann eine Netzwerktechnologie einsetzen? Diese Methode ist also nur eine Möglichkeit, falls es keine anderen Möglichkeiten gibt.
Und meine Frage in diesem Thread ist nun, ob es solche anderen Möglichkeiten gibt.
Gruß,
Ja-Pa
_________________ Der Autor dieses Textes haftet nicht für Schäden an Soft- oder Hardware
oder Vermögensschäden, die durch das Benutzen des Textes entstehen.
|
|
Ja-Pa 
      
Beiträge: 458
Win XP, Suse 9.3
D1, D3, D5 Std, D7 Pro, D2005 Pers, Kylix 3
|
Verfasst: Fr 26.08.05 12:12
Grendel hat folgendes geschrieben: |
Auf jeden Fall gibt es Pipes sowohl unter Linux als auch unter Windows.
|
Aber Pipes sind doch nur dazu da, die Ausgabe von einem Programm an ein anderes weiterzuleiten.
Das funktioniert nicht, wenn beide Programme bereits gestartet sind.
_________________ Der Autor dieses Textes haftet nicht für Schäden an Soft- oder Hardware
oder Vermögensschäden, die durch das Benutzen des Textes entstehen.
|
|
Grendel
      
Beiträge: 443
Gentoo Linux, MacOS X, Win 2000
D5 Ent, D7 Ent, Lazarus, Anjuta, MonoDevelop
|
Verfasst: Fr 26.08.05 12:30
Ja-Pa hat folgendes geschrieben: | Aber Pipes sind doch nur dazu da, die Ausgabe von einem Programm an ein anderes weiterzuleiten.
Das funktioniert nicht, wenn beide Programme bereits gestartet sind. |
Nein, Pipes können auch zur IPC (Interprocess Communication) während der Laufzeit genutzt werden.
Such einfach mal nach "NamedPipes".
Bis neulich ...
edit:
| Zitat: | Bis jetzt sind mir da nur Möglichkeiten, die eigentlich fürs Netzwerk gedacht sind, bekannt wie z.B. TCP.
Das möchte ich aber nicht unbedingt nutzen, da beide Programme sowieso auf einem Rechner laufen sollten und ich dann möglicherweise noch Probleme mit anschlagenden Firewalls (die die Kommunikation innerhalb des Rechners verhindern) oder zu wenig Firewall (z.B. dass der Server einen Befehl aus dem Internet empfängt) habe. |
Das problem mit der Firewall ist nicht wirklich eines. Denn 1. läuft unter Linux ettliches über das lokale Netzwerinterface und wenn man das sperrt geht eh nix mehr und 2. könntest Du den Server nur auf 127.0.0.1 horchen lassen wodurch Verbindungen von Außen nicht möglich sind.
|
|
Motzi
      
Beiträge: 2931
XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
|
Verfasst: Fr 26.08.05 12:34
Ja, und Pipes können auch für Remote-IPC verwendet werden, sind aber IMHO nur auf Windows beschränkt.
Für Remote-IPC mit andren OS wären Sockets wohl die beste Möglichkeit...
_________________ gringo pussy cats - eef i see you i will pull your tail out by eets roots!
|
|
Ja-Pa 
      
Beiträge: 458
Win XP, Suse 9.3
D1, D3, D5 Std, D7 Pro, D2005 Pers, Kylix 3
|
Verfasst: So 28.08.05 12:04
Interessant, ich wusste nicht, dass es so etwas wie Named Pipes gibt.
Named Pipes gibt es auch unter Linux, aber dafür nicht unter Win9x.
Anscheinend bleibt da TCP als einzige Möglichkeit, deshalb werde ich wohl doch TCP-Sockets verwenden müssen.
Vielen Dank für eure Hilfe!
Ja-Pa
_________________ Der Autor dieses Textes haftet nicht für Schäden an Soft- oder Hardware
oder Vermögensschäden, die durch das Benutzen des Textes entstehen.
|
|
tommie-lie
      
Beiträge: 4373
Ubuntu 7.10 "Gutsy Gibbon"
|
Verfasst: So 28.08.05 13:04
Selbst Pipes wären wohl keine Lösung, die APIs für IPC sind nämlich unter Linux und Windows unterschiedlich. Solange man keine High-Level-Bibliotheken benutzt, die etwas plattformübergreifend mit der gleichen API kapseln, ist es Wurst, was ich nehme, ich muss es sowieso für jede Plattform neu schreiben, da ist es dann auch kein Problem, noch ein IFDEF dranzuhängen und unter Win9x MMFs zu benutzen, wenn die Programme auf dem gleichen Host laufen.
_________________ Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
|
|
|