Schnittstelle C++ Apache2 Webserver

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,

    wie der Titel schon sagt bin ich auf der Suche nach einer Schnittstelle zwischen meinem Webserver und einem C++ Programm.

    Über das C++ Programm werden Steuerungsaufgaben erledigt, über den Webserver sollen Zeiten eingestellt werden.
    Außerdem sollen Bits gesetzt werden können für Betriebsarten.

    Kennt jemand eine Möglichkeit?

  • Fuer eine vernuenftige Antwort braucht es noch weitere Informationen: ist das C++-Programm ein Daemon der dauernd laeuft, oder soll es nur periodisch laufen ?

    Wenn es ein Daemon ist, dann geht das ueber Sockets, eine Message Queue oder Shared Memory.

    Wenn das Programm bloss periodisch laeuft, ueber ein File oder eine Datenbank.

  • Wieso willst du überhaupt eine zusätzliche Software wie apache verwenden? Du kannst das auch in dein C++ Programm integrieren.

    Ansonsten hat es denk ich eher weniger mit der Webserver Software an sich zu tun sondern viel mehr mit der Webseite - Sockets ist mit PHP möglich, Websockets mit Javascript.

    Meines Wissens nach kann man kein "Shared Memory" nutzen um über den Webserver auf eine Webseite einzuwirken bzw andersherum von einer Webseite über "Shared Memory" an ein "Programm" weiterleiten.

  • Ja gut, das war mir schon bekannt - aber wie nimmt man dann direkten Einfluss auf eine Webseite, ohne das diese dafür selber etwas tun muss?

    Also angenommen Ich surfe die IP meines Raspis an.
    Dann schreibe ich etwas über ein Konsolen Programm in einen bestimmten Shared_Memory Bereich.
    Wie nimmt das dann Einfluss auf die in /var/www/html/ liegenden PHP Dateien? :s
    Diese müssten dann ME auch erst mal ausgeführt werden damit sie eine Änderung feststellen könnten bzw den Speicherbereich auslesen - und dann dementsprechend eine Aktion durchführen, wobei PHP nur Serverseitig läuft und der Client davon nichts zu sehen kriegt. Der Client der grad die Webseiten anschaut kann davon auch nichts bemerken... Zumindest wüsste ich jetzt nicht wie, außer wenn irgendwelche AJAX Elemente verändert werden ;)
    Oder eben erst dann zur Geltung kommen können wenn die Daten vorher in den Speicherbereich geladen werden und erst danach die Webseite angesprochen wird (quasi reload)

    Also wenn schon eine Webseite selbst aktiv werden muss kann man auch gleich Sockets nutzen :fies:

  • Erstmal Danke für die vielen Antworten,

    das Programm läuft in einer while (1) Schleife. Also als Daemon.

    Würde gerne auf Apache verzichten, wird aber dann glaub ich schwierig PHP und Java (JQuery mobile) zu nutzen oder?

    Würde am liebsten eine MySQL- Datenbank verwenden. Häng aber leider bei der Kommunikation mit meinem C++ Programm fest. :s

  • Mein Programm soll 15 Jalousien steuern.
    Die Hardware steht soweit, Ausgänge sind über I2C angebunden.

    Ich möchte jede einzelne über die Weboberfläche im Handbetrieb steuern können.
    Außerdem soll die Eingabe von festen Zeiten möglich sein, sowie evtl. das Anfahren von Zwischenpositionen.

    Wollte wie gesagt am liebsten eine SQL- Datenbank verwenden, aber bekomms leider einfach nicht zum laufen :(

  • Hi Chris. Ich habe das selbe Projekt vor. Hardware technisch benutze ich auch wenn ich jetzt spott ernte einen BananaPiPro und will dazu einen mcp23017 i2c bus nutzen und das ist das Problem. Ich habe 0 erfahrung in sachen c bzw c++ und bringe mir das selbst bei. Da ich in sachen i2c ins stocken rate hätte ich interesse an deinem script. Kannst du das mal anhängen, nicht es einfach zu kopieren ich will das verstehen und anpassen. Vor c mit mysql hab ich keine Angst, das hab ich schon mal mit 1wire sensoren hin bekommen siehe Anfänger 1-wire DS1820 ist natürlich nicht aufgeräumt.

  • Hallo ChrisChip,

    auch für C++ gibt es Frameworks (Beispiel: http://www.webtoolkit.eu/wt), mit denen man einen C++ Web Server programmieren kann. Der ersetzt dann komplett den Apache.
    Wenn du auf der Weboberfläche (in deinem Browser) eine Eingabe machst, landet diese als event in deinem C++ Programm und das Programm kann darauf reagieren.

    Viele Grüße,
    Kai-Uwe

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!