Forum: Mikrocontroller und Digitale Elektronik Verständnisfrage: Webserver


von Obi W. (obi_w)


Lesenswert?

Hallo,

hier im Forum liest man ja immer wieder von Webserverprojekten. Die 
Umsetzung auf der Hardwareseite erschließt sich mir genauso wie die 
Datenübertragung per Ethernetschnittstelle. Was mir aber noch nicht ganz 
in den Kopf will ist wie man dahin kommt das durch klicken eines Buttons 
auf html Files beim Controller eine Reaktion hervorgerufen wird. Wie 
muss ich mir die Anbindung vorstellen? Was passiert in dem Moment auf / 
im Controller bzw. zwischen Controller und Textdatei?

Danke für eure Hilfe.

von Nico S. (nico22)


Lesenswert?

Nun ja, der Browser schickt ungefähr diese Zeile an den Server (o. Ä.):

GET /index.html HTTP/1.0

und einige weitere (das HTTP-Protokoll eben). Der Server 
(=Mikrocontroller) weiß nun, dass er die Seite index.html ausliefern 
soll.

Ob er nun direkt etwas aus dem Speicher schickt (eventuell sogar 
unabhängig von der angeforderten Seite) oder erst per Dateisystem auf 
einer SD-Karte etc. sucht, ist dann nur weiterer Programmieraufwand.

von AVerr (Gast)


Lesenswert?

Obi Wan schrieb:
> Was mir aber noch nicht ganz
> in den Kopf will ist wie man dahin kommt das durch klicken eines Buttons
> auf html Files beim Controller eine Reaktion hervorgerufen wird.

Weisst du denn, wie das ganze zwischen 2 PCs ( einer Webserver, einer 
Client ) funktioniert ?

Beim drücken auf den Button wird ein Paket an den Webserver ( in diesem 
Fall Controller ) gesendet, dass eine Datei anfordert und auch 
Informationen bezüglich des Forms ( zu dem der Button gehört ) 
überträgt, also auch eingaben in Textboxen und sowas.

Der Controller kann darauf natürlich reagieren, weil er auf jedes 
einzelne Paket reagieren kann ( eigentlich sogar muss, denn die Pakete 
müssen durch mehrere Schichten hochgereicht werden ).
Wie er reagiert, ist nur eine Sache der Programmierung. Ob man diese 
Form-Infos nun auswertet, oder einfach nur ein Smilie-Bild zurückschickt 
ist vollkommen egal.

von Obi W. (obi_w)


Lesenswert?

Wie das zwischen PCs funktioniert ist klar -> Osi Schichten Modell. Mein 
Problem ist das ich keine Vorstellung davon habe wie ich den µC dazu 
bringen sollte auf die Pakete zu reagieren bzw. wie die Auswertung in 
diesem Fall aussehen soll. Irgendwie hab ich da noch einen Denkfehler 
drin.
Ein konkretes Projekt gibts nicht, ich überlege mir nur schon mal gerne 
wie man bestimmte Dinge umsetzen kann. Wahrscheinlich denke ich in dem 
Fall aber einfach nur etwas zu kompliziert.

von Nico S. (nico22)


Lesenswert?

Na ja, stell dir vor, du kriegst irgendwie per UART die Anfrage rein. 
Dann kriegt dein Mikrocontroller einfach diesen String:

GET /index.html HTTP/1.0
Host: 192.168.2.2



und da antwortet dein Server einfach drauf. Der Netzwerkstack kann ja 
irgendwo ausgelagert sein, dass einfach die Rohdaten seriell am 
Controller ankommen. Das ist so erstmal am einfachsten nachzuvollziehen.

von Markus (Gast)


Lesenswert?

> Wahrscheinlich denke ich in dem Fall aber einfach nur etwas zu kompliziert.

Das ist immer die Ausrede, wenn man einfache Zusammenhänge nicht 
versteht ;-) Ne, Spaß.

>Wie das zwischen PCs funktioniert ist klar -> Osi Schichten Modell. Mein
>Problem ist das ich keine Vorstellung davon habe wie ich den µC dazu
>bringen sollte auf die Pakete zu reagieren...

Das Osi-Schichtenmodell gilt bei der Verbindung uC <-> PC im Prinzip 
genauso wie bei der Verbindung zweier PCs.

von Karl H. (kbuchegg)


Lesenswert?

Schon klar. Aber im Grunde ist das OSI SChichtenmodell hier ziemlich 
uninteressant.

Der WEbserver schickt einen Text zum Webbrowser (eben das berühmte HTML) 
und der Webbrowser malt daraufhin in seinem Fenster etwas hin. Was er 
hinzumalen hat, ist in Form von Anweisungen im Text enthalten, den er 
vom Server bekommen hat.

Das kann natürlich auch ein Button sein, der in einer Form sitzt.

Drückt der Benutzer drauf, dann schickt der Webbrowser als Reaktion 
darauf einen Text zum Webserver. Der wertet den Text aus, macht 
irgendwas und schickt wieder einen Text zurück.

Und so geht das Spielchen hin und her. Einer schickt Texte zum jeweils 
Anderen.

von Purzel H. (hacky)


Lesenswert?

Hardwareinteraktionen kann man durch vordefinierte commands ausloesen. 
Man kann einer Anfrage zB Parameter mitgeben, zB :
GET /aaaa.html?PortWrite=0x00
Der Parser muss das dann eben aufloesen.

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.