Kommunikation zwischen zwei C++ Anwendungen



  • Ich arbeite gerade mit Visual C++ (2005) und habe zwei Anwendungen, eine in MFC und anderen in Win32-Project programmiert. Sie liegen beide auf dem PC und müssen miteinander kommunizieren.

    Erste Anwendung (Annahme First.exe) gibt die Daten aus. Zweite Anwendung (Annahme Second.exe) soll die Daten erfassen und bearbeiten. Die Kommunikation soll ereignisgesteuert und sehr schnell sein. Wie folgend soll es laufen.

    - First.exe gibt ein EVENT zu Second.exe, wann die Kommunikation beginnt.
    - Daten werden entweder direkt zu Second.exe gesendet oder vorher gelagert.
    - First.exe gibt ein EVENT zu Second.exe, wann die Kommunikation beendet.

    Könntet Ihr mir empfehlen, wie man am bestens solche Kommunikation realisieren kann? Wäre sehr nett, wenn Ihr auch ein paar Links mir geben könntet.



  • 1. Falsches Forum: MFC / WinAPI wäre dann wohl besser.
    2. Nimm doch einfach ein Named Mutex oder Event.
    http://msdn.microsoft.com/en-us/library/aa915030.aspx

    Falls es sich um mehr als nur Events handelt kommen die klassischen IPC Mechanismen in Frage: Pipes, Shared Memory, TCP, ...

    Simon



  • Danke Simon!! Ich bin neu hier und habe gerade registiert. 🙂



  • Ein kurzen ueberblick gibt es hier: http://en.wikipedia.org/wiki/Inter-process_communication





  • Hm.
    Ich bin kein Shared-Memory Fan.
    Sockets bzw. Named-Pipes sind auch oft eine gute Möglichkeit.

    Ist vielleicht für kleine Sachen mehr Code, dafür kann man weniger Blödsinn bauen, und vor allem müssen die beiden Programmen icht auf dem selben Rechner laufen.

    Noch eine Möglichkeit die oft interessant ist, ist einen DCOM Server zu basteln. Netterweise nimmt einem die ATL und die ins Visual Studio integrierten Wizards 95% der Arbeit ab, so dass man so einen DCOM Server eigentlich sehr schnell laufen hat. Für Transfer von grösseren Datenmengen ziemlich ungeeignet, aber wenns bloss ein Paar Strings sind, ist das eine IMO eine gute Möglichkeit. Geht dann auch über's Netzwerk wenn man möchte, und den DCOM Server kann man auch einfach aus anderen Sprachen wie Visual Basic, C# etc. ansprechen. (Aus anderen Sprachen sogar einfacher als aus C++, wobei es auch mit C++ noch erträglich bleibt).



  • Ich habe bis jetzt die Daten in/aus .CSV schreiben und auslesen, und es funktioniert so weit. Kommunikation (Event) werde ich mit Sockets oder DCOM probieren.

    Klasse!! Ich danke euch. 🙂


Log in to reply