Forum: PC-Programmierung Aus C eine HTML Seite aktualisieren


von Christian S. (vivus)


Lesenswert?

Hallo,

ich habe ein Webinterface zur Ausgabe von Daten. Nun verarbeite ich mit 
einem in C geschriebenem Programm Daten und schreibe diese in eine 
Datenbank. Diese Daten sollen dann am besten mit Ajax / jQuery oder 
ähnlichem im Browser nachgeladen werden. Kennt jemand eine Möglichkeit? 
Ich will umgehen die Seite jede Sekunde oder sonst eine Konstante Zeit 
neu zu laden sondern nur dann, wenn ich neue Daten mit C in die 
Datenbank geschrieben habe...

von bluppdidupp (Gast)


Lesenswert?

Einfach wäre z.B. 
https://www.pubnub.com/blog/2014-12-01-http-long-polling/ - Die Arbeit 
auf neue Daten zu warten liegt dann hauptsächlich beim Server, dort 
müsste man in Schleife die DB nach neuen Daten pollen (sofern die DB da 
keine besseren Möglichkeiten bietet)

von Carl D. (jcw2)


Lesenswert?

Dafür wurden WebSockets erfunden. Da kann der Server Daten senden wann 
immer er meint es tun zu müssen.
https://developer.mozilla.org/de/docs/WebSockets

: Bearbeitet durch User
von Christian S. (vivus)


Lesenswert?

Danke für eure Vorschläge. Das hat geholfen :)

Nun das umgekehrte ...

Wenn die Website etwas in die Datenbank schreibt, wie kann man das mit 
dem C Programm ohne kostantes pollen mitbekommen? Callbacks.. finde 
nichts für c und mysql ...

: Bearbeitet durch User
von Peter II (Gast)


Lesenswert?

Christian S. schrieb:
> Nun das umgekehrte ...
>
> Wenn die Website etwas in die Datenbank schreibt, wie kann man das mit
> dem C Programm ohne kostantes pollen mitbekommen? Callbacks.. finde
> nichts für c und mysql ...

Die Frage ist warum die Webseite direkt in die Datenbank schreiben soll. 
Wenn man dort eine Mittelware einsetzt kann sie das alles übernehmen.

Du brauchst ein Zentrales Programm was solche dinge übernimmt. Das 
Programm verbindet sich mit der Datenbank und die andere Teilnehmer 
(web) verbinden sich auch mit diesem Programm.

von Christian S. (vivus)


Lesenswert?

Du meinst das nur einer mit der Datenbank spricht.

Also C File schreibt in die Datenbank und gibt gleichzeitig Daten an php

Und wenn php Daten in die Datenbank schreiben will, schreibt es die 
Daten dem C File und das C File die Daten dann in die Datenbank...?

von Peter II (Gast)


Lesenswert?

Christian S. schrieb:
> Du meinst das nur einer mit der Datenbank spricht.
>
> Also C File schreibt in die Datenbank und gibt gleichzeitig Daten an php
>
> Und wenn php Daten in die Datenbank schreiben will, schreibt es die
> Daten dem C File und das C File die Daten dann in die Datenbank...?

ja so in der Art. Dabei muss es auch kein C Programm sein, man kann auch 
dafür ein WebApplication mit Java, .net (u.s.w.) schreiben.
(PHP ist keine WebApplication!)

von Daniel A. (daniel-a)


Lesenswert?

Der Browser wird ein Script oder Programm auf dem Server aufrufen, um 
daten in die db zu schreiben. Falls das selbe Programm und der selbe 
Prozess das Empfangen, Speichern und Senden der Daten übernimmt, kannst 
du das in diesm intern lösen. Andernfalls brauchst du 
Interprozesskomunikation. Dazu kanst du z.B. unix sockets, FIFOs oder 
shared memory oder Signale verwenden. Lasse einfach das Speichernde 
Programm das Akualisierende benachrichtigen.

von Christian S. (vivus)


Lesenswert?

hmmm

Daniel A. schrieb:
> Lasse einfach das Speichernde
> Programm das Akualisierende benachrichtigen.

Du meinst wenn c daten in die Datenbank schreibt, schickt es direkt eine 
Art Interrupt an die Website (sagen wir mal Ajax) und Ajax aktualisiert 
dann)

Und umgekehrt genau so dh. wenn die Website Daten in die Datenbank 
schreibt, schickt diese eine Art Interrupt an das C Programm. Das C 
Programm guckt in die Datenbank und nutzt die Daten...

von Peter II (Gast)


Lesenswert?

Christian S. schrieb:
> Du meinst wenn c daten in die Datenbank schreibt, schickt es direkt eine
> Art Interrupt an die Website (sagen wir mal Ajax) und Ajax aktualisiert
> dann)

was nicht geht, ein Webserver kann nicht aktiv etwas senden. Die 
Webseite kann z.b. mit dem LongPolling sich mit dem C Programm verbinden 
und dieses antwortet wenn ich etwas ändert.

von Christian S. (vivus)


Lesenswert?

Es müsste doch machbar sein, dass man mit Websockets die Website aktuell 
hält. Dh. shreibt das c Programm Daten in die Datenbank, erledigt man 
das z.b. mit nodejs.

Will die Website Daten in die Datenbank schreiben, kann man mit php doch 
den Befehl exec() oder shell_exec() nutzen und neben dem Datenbank 
eintrag ein c programm aufrufen, welches auf dem Server liegt. Dieses c 
Programm guckt dann direkt in der Datenbank nach dem letzten Update und 
macht was mit...

Somit müssten doch alle Richtungen abgedeckt sein...?!

Spricht da was gegen?

von Peter II (Gast)


Lesenswert?

Christian S. schrieb:
> Spricht da was gegen?

ja, das es sinnlos ist ständig irgendwelche Prozesse zu starten. Ja es 
wird funktionieren aber also "schön" würde ich es nicht beschreiben.


Wo ist das Problem deinem C Programm einfach http beizubringen? Dafür 
gibt es auch einige Libs.

von Christian S. (vivus)


Lesenswert?

Peter II schrieb:
> Wo ist das Problem deinem C Programm einfach http beizubringen? Dafür
> gibt es auch einige Libs.

Wofür genau?

von Peter II (Gast)


Lesenswert?

Christian S. schrieb:
> Peter II schrieb:
>> Wo ist das Problem deinem C Programm einfach http beizubringen? Dafür
>> gibt es auch einige Libs.
>
> Wofür genau?

damit das C Programm direkt die Ajax request bei einem Event bearbeiten 
kann.

von Christian S. (vivus)


Lesenswert?

Hast du das schonmal verwendet oder ist das eine Theorie?

von Peter II (Gast)


Lesenswert?

Christian S. schrieb:
> Hast du das schonmal verwendet oder ist das eine Theorie?

ja habe ich. Habe damit eine Haussteuerung programmiert. Wenn jemand das 
Licht einschaltet dann zeigen alle verbunden Browser den geänderten 
Status sofort an.

Das ganze mit LongPolling (damals wusste ich noch nicht mal wie das es 
dafür schon einen namen gibt, hatte mir es selber einfallen lassen) und 
Ajax mit JSON.

von Christian S. (vivus)


Lesenswert?

Könntest du mir das schicken? Wäre sehr nett!

von Peter II (Gast)


Lesenswert?

Christian S. schrieb:
> Könntest du mir das schicken? Wäre sehr nett!

nein leider nicht, das ist nichts zum weitergeben.


Wie gesagt, es ist gar nicht so schwer. Suche dir eine lib womit du aus 
C eine Webserver breitstellen kannst. Dann noch eine json lib und dann 
hast du fast alles zusammen.

Ich habe alles von Grund auf selber geschrieben, einfach nur weil es mal 
versuchen wollte.

von Peter II (Gast)


Lesenswert?

Nachtrag:

muss es denn bei dir C sein?

.net (auch mono unter Linux) bietet alles was man brauch. eine Einfach 
Version ist vermutlich schon mit 20-30 Codezeilen möglich.

von Daniel A. (daniel-a)


Lesenswert?

Peter II schrieb:
> net (auch mono unter Linux) bietet alles was man brauch. eine Einfach
> Version ist vermutlich schon mit 20-30 Codezeilen möglich.

Ich würde mich von allem was MS softwaretechnisch macht fernhalten, das 
ist nicht von dauer.
Ich würde eher auf nodejs setzen, enthält standardmässig http module. 
Für websockets nutze ich https://www.npmjs.com/package/websocket , 
verschidene DBs sind dort noch nicht so gut abstrahiert, aber 
https://github.com/w1nk/node-odbc/ sieht sehr vielversprechend aus.

von Christian S. (vivus)


Lesenswert?

Peter II schrieb:
> muss es denn bei dir C sein?

C oder C++

Peter II schrieb:
> .net (auch mono unter Linux) bietet alles was man brauch. eine Einfach
> Version ist vermutlich schon mit 20-30 Codezeilen möglich.

Werde ich mir mal angucken. Im Moment tendiere ich zu nodejs.

Daniel A. schrieb:
> Ich würde mich von allem was MS softwaretechnisch macht fernhalten, das
> ist nicht von dauer.

Sei doch nicht so skeptisch :)

Daniel A. schrieb:
> https://github.com/w1nk/node-odbc/ sieht sehr vielversprechend aus

Schonmal getestet?

von Peter II (Gast)


Lesenswert?

Daniel A. schrieb:
> Peter II schrieb:
>> net (auch mono unter Linux) bietet alles was man brauch. eine Einfach
>> Version ist vermutlich schon mit 20-30 Codezeilen möglich.

> Ich würde mich von allem was MS softwaretechnisch macht fernhalten, das
> ist nicht von dauer.
klar kann niemand in die Zukunft sehen, aber eine Sprache die einem 
alles bietet was man braucht und stabil läuft würde ich nicht 
ausschließen nur weil sie von MS erfunden wurde.

> Ich würde eher auf nodejs setzen
das würde ich persönlich ausschließen. Ich mag keine Sprachen ohne 
Datentypen. Ist halt eine Scriptsprache - es gibt keine Compiler Fehler. 
Fehler fallen erst zu Laufzeit auf.

Im Browser hat man ja keine Wahl, aber doch nicht auf dem Server.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.