Un piccolo servizio web

Come sappiamo il progetto QCN consiste in una rete di acquisizione1) dei dati, che permette di trasportare a Standford le misure raccolte dagli accelerometri che l'università distribuisce alle scuole aderenti.

Noi abbiamo già imparato ad acquisire i dati attraverso la porta usb.
Abbiamo ora bisogno di trasportare questi dati sul web, per metterli a disposizione ad un utente che lavora su un computer remoto.
I programmi che gestiscono queste operazioni sono detti Servizi web.

Creare un servizio web non è affatto difficile, soprattutto per noi che sappiamo usare netcat.
Il programma con cui abbiamo costruito il nostro server web2) si riduce a poche righe che abbiamo commentato e compreso facilmente a lezione:

cat ncWebService.sh -n
   1  #!/bin/bash
   2
   3  handle_req()
   4  {
   5          read req file proto
   6          # la risposta deve contenere un header per indurre il browser di includere il contenuto della risposta in una pagina web.
   7          echo -e "HTTP/1.1 200 OK\r\nContent-Type: text/html; charset=utf-8\r\nAccess-Control-Allow-Origin: *\r\nKeep-Alive: timeout=0, max=100\r\nConnection: keep-alive\r\n\r\n"
   8          head -n4 <&5|sort -r & echo 4 >&5 # Prima leggere e poi scrivere
   9  }
  10
  11  exec 5<>/dev/arduino  # apre la porta seriale in lettura e scrittura
  12  sleep 3
  13  typeset -fx handle_req
  14  while  true;do nc -l -p 8000 -e "handle_req" -q0;done # apre il servizio web
  15  exec 5<&- # questo è il modo corretto di chiudere la porta seriale. Questo esempio è acerbo, e nasconde il comando dietro un loop infinito. Da correggere.
1) e di elaborazione distribuita
server_web.txt · Ultima modifica: 2014/03/23 17:13 da marco
 
Ad eccezione da dove è diversamente indicato, il contenuto di questo wiki è soggetto alla seguente licenza: CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki sintassi italiana dokuwiki