Ciao a tutti, non riesco a capire come funziona l'esempio webserver presente nell'ide di arduino
void loop()
{
// listen for incoming clients
EthernetClient client = server.available();
if (client)
{
Serial.println("new client");
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
........
all'inizio della funzione loop chiamo server.available() per vedere se c'è qualcuno connesso, se presente ne salvo l'istanza nella variabile client.
quello che non capisco è come sia possibile mediante la chiamata client.read() leggere la richiesta inviata dal mio browser ovvero:
GET / HTTP/1.1
Host: 192.168.200.177
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8,it;q=0.6
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
essendo stata inviata dal browser stesso.
In altri esempi usavo client.read() per leggere le risposte inviatemi dal server ad esempio l'home page di un sito.
La documentazione riporta per la funzione Server.available() la seguente spiegazione:
Gets a client that is connected to the server and has data available for reading
in teoria non dovrebbe esserci nulla da leggere dato che non gli ho ancora inviato niente....e anche se ci fosse qualcosa non capisco come possa leggere la richiesta http
Grazie mille