Server mit Ethernet Shild

sven1977:
ich hab nen Arduino Mega mit nem EthernetShild und möchte mir nen Server erstellen.

Aha, "einen Server".
Und welchen Dienst und welches Protokoll soll der Server bedienen?
Telnet?
SSH?
FTP?
Mail?
DNS?
Usenet?
IRC?
HTTP?
Oder irgendwas anderes?

sven1977:
Die Beispiele von der Ethernet Lib sind soweit auch super.

Hm, ich rate einfach mal drauflos, was Du meinen könntest.
HTTP vielleicht.

sven1977:
Hat einer vieleicht ne Ahnung wie ich einen Server erstelle, der nach dem connect zuerst etwas senden z.b. "Hallo und Willkommen blabla".
Die Beispiele erwaten vom Client immer zuerst ne Eingabe :frowning:

Gibt es da was um zu erkennen das ein Client connected hat ?

HTTP funktioniert so:

  • Der HTTP-Client sendet eine Anforderung (Request) an den Server, z.B. einen GET Request.
  • Daraufhin sendet der HTTP-Server eine dementsprechende Antwort an den HTTP-Client zurück

Beim "Connecten" alleine sendet der Server noch gar nichts, sondern erst, wenn er einen gültigen Request empfangen hat. Und im Request steht drin, was der Server als Antwort ausliefern soll.

Beispiel:
GET / HTTP/1.1
==> Server soll die seine Default-Datei ausliefern ("Startseite")

Anderes Beispiel:
GET /xyz.html HTTP/1.1
==> Server soll die Datei "xyz.html" ausliefern

Noch ein Beispiel:
GET /forum/index.php HTTP/1.1
==> Server soll die Datei "index.php" aus dem Unterverzeichnis /forum ausliefern

Wenn Du möchtest, dass ein HTTP-Server nicht immer auf jeden Request dasselbe Blablah antwortet, dann muss
a) der Client unterschiedliche GET-Anforderungen senden, beim ersten Connect z.B. nur
GET / HTTP/1.1
==> Der Server antwortet dann mit der Default-Datei aus seinem HTML-Docs Verzeichnis mit verschiedenen "Links"
(nein, in Deinem Programm muss das keine echte Datei sein, Du kannst auch Texte aus dem Flash-Speicher senden)

b) Und wenn beim Client dann "auf einen Link geklickt" wird, bekommt der Server einen anderen Request, z.B.
GET /index.html?schalten=PIN1&action=ON HTTP/1.1
==> Und daran müßte der Server erkennen, dass eine einen anderen Request erhalten hat und daraufhin eine andere HTML-Antwort senden als bei dem vorhergehenden Request.

Und damit der Server das kann, muß er einen erhaltenen Request genau erkennen und exakt auswerten, was er als Request erhält.