Forum: PC-Programmierung Webserver soll String senden


von Mary A. (logomaus)


Lesenswert?

Hallo zusammen!

Hat hier jemand eine Idee oder einen Tip parat?
Mein Arduino-Ethernetshield arbeitet als Webserver. Dieser soll
nun an einen Event-Server, der außerhalb steht, einen String senden,
damit beim Server eine Webseite aufgeht. Wie kann das realisiert werden,
bzw. wie müsste der String aussehen? Hat jemand Programmfetzen?

Freue mich über jede Hilfe!

LG

: Verschoben durch Admin
von JoachimB (Gast)


Lesenswert?

Es ist üblich, dass ein Web-Browser per HTTP-Protokol bei einem 
Webserver eine Webseite anfordert und diese dann darstellt.

Mary Ann schrieb:
> damit beim Server eine Webseite aufgeht.

Deshalb ist der vorstehende Satz unklar. Warum sollte die Webseite beim 
Server aufgehen? Nach meinem Verständnis wird die Webseite an den Client 
geliefert und dort dargestellt ("sie geht beim Client auf").

Gruß
Joachim

von Mary A. (logomaus)


Lesenswert?

Hi Joachim!

Es ist ja egal, ob das in diesem Fall Client oder Server genannt wird. 
Wichtig ist hier nur, dass ein gesetzter Eingang des 
Mikrocontrollerboardes das Ethernetshield veranlassen soll, einen String 
an den PC zu senden, damit dort eine bestimmte Webseite "aufgehen" kann. 
Gedacht ist, dass es klingelt und auf dem PC wird das Bild einer Kamera 
ausgegeben.
Gibt es Ideen?
Habe bis jetzt das Beispielprogramm UDPSendReceiveString von Arduino 
gefunden. Vielleicht kriege ich es damit hin...

LG

von Mary A. (logomaus)


Lesenswert?

Die Funktion Udp.send macht bei mir aber Probleme, sie soll kein "member 
der class Udp" sein, verstehe ich nicht so ganz. Außerdem soll sie zu 
viele Argumente beinhalten:  UdpSend(ReplyBuffer, IP, port);
Hatte dieses Problem auch schon jemand?

Hilflose Grüße

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Die Herangehensweise ist falsch herum. Ein Webserver reagiert immer nur 
auf Anfragen des Clients, und kann nicht unaufgefordert Daten an den 
Client senden.
Das ist auch gut so, man stelle sich die Sicherheitsprobleme vor, wenn 
das ginge.

Trotzdem ist das ganze kein Problem; die Clients müssen halt eine 
bestimmte Seite vom Webserver laden, die dann im ganz simplen Fall sich 
selbst zyklisch neu lädt oder, was eleganter ist, mit AJAX-Mitteln sich 
ebenfalls zyklisch dynamische Inhalte vom Webserver holt und diese in 
die bereits geladene Seite einblendet.

Das ist auch mit einfachsten Webservern problemlos zu erledigen, das 
dafür erforderliche Javascript wird schließlich auf der Clientseite 
ausgeführt, wo deutlich mehr Performance zur Verfügung steht als auf dem 
hier angesprochenen Webserver.

Und das "X" in AJAX (das für XML steht) kann man getrost ignorieren, zur 
Datenübertragung zwischen Webserver und Javascript auf dem Client lässt 
sich auch ein ganz simples zeilenorientiertes Textprotokoll verwenden.

von Frank M. (aktenasche)


Lesenswert?

ich würde da eher eine kleine .NET applikation für den rechner 
schreiben.

das framework bringt dermassen viel zeugs mit. zB einen TCP listener. 
mit dem könntest du auf einem bestimmten port auf ein paket vom uC 
warten und dann aktionen durchführen.

nur so grundsätzlich.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Frank Meier schrieb:
> ich würde da eher eine kleine .NET applikation für den rechner
> schreiben.

Das hätte natürlich den "Vorteil", daß diese Applikation auf jedem 
Client installiert werden müsste, und daß das dann nur mit .Net-fähigen 
Betriebssystemen nutzbar ist. Javascript im Browser funktioniert ohne 
Installation unter praktisch allen Betriebssystemen (wenn sie denn einen 
Browser bieten).

von Rolf Magnus (Gast)


Lesenswert?

Mary Ann schrieb:
> Jetzt habe ich dafür die Udp-Library eingebunden und bekomme aber
> laufend Fehlermeldungen wie z.B.:
> no matching function for call to 'UdpClass::sendPacket(char[13],
> String&, int&)'
> Was ist an dem Programm faul, bzw. wie kann ich das Senden realisieren?

Der Compiler sagt doch recht eindeutig, was das Problem ist: Du 
versuchst, in der Klasse UdpClass eine Memberfunktion aufzurufen, die es 
nicht gibt. Wahrscheinlich heißt die Funktion anders. Sie könnte auch 
andere Parameter als die von dir übergebene erwarten, aber dann hätte 
die Fehlermeldung auch gesagt, wie sie eigentlich aussehen müßten.

von Mary A. (logomaus)


Lesenswert?

Hallo!

Ja, das könnte sein, dass die Funktion anders heißt, aber das ist das 
Problem, da bei Open Source jeder die Namen verändern kann und die 
Originale untergehen.
Mit welcher Bibliothek könnte denn das Senden möglich werden? Es handelt 
sich um ein Arduino Ethernetshield und da gibt es z.B. die 
PString-Library, da weiß ich aber nun auch nicht, wie genau das alles 
ins Programm geschrieben werden muss und welche Parameter genau gemeint 
sind...

von Frank M. (aktenasche)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Das hätte natürlich den "Vorteil", daß diese Applikation auf jedem
> Client installiert werden müsste, und daß das dann nur mit .Net-fähigen
> Betriebssystemen nutzbar ist.

achso, das ist mir neu


...



alle lösungen für ein problem haben vor und nachteile. der TE klang nur 
so als ob es nur um eine maschine ging. ausserdem sind heterogene 
umgebungen extrem selten, jedenfalls was die clientseite angeht.

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.