Usare l'hostname al posto dell'ip è possibile?

Ciao a tutti mi chiedevo, se era possibile chiamare, un sito con per l'hostname invece che per l'ip

esempio :

GET http://www.prova.com?value1=0000&value2=999 HTTP 1.0

cosi funzionerebbe? oppure prima devo usare la libreria ethernetDNS e risolvere prima l'0host in ip
e poi fare uno sprintf?

mastergov:
Ciao a tutti mi chiedevo, se era possibile chiamare, un sito con per l'hostname invece che per l'ip

esempio :

GET http://www.prova.com?value1=0000&value2=999 HTTP 1.0

cosi funzionerebbe? oppure prima devo usare la libreria ethernetDNS e risolvere prima l'0host in ip
e poi fare uno sprintf?

solitamente i DNS dovrebbero rigirarti sull'ip.

ma poi per gli http header non dovresto NON mandare l'host?

cioè solo

GET ?value1=0000&value2=999 HTTP 1.0

??

guarda gli header del tuo browser

Ciao,

nella nuova libreria Ethernet c'e' la gestione dei DNS.

Qui l'IDE completo
http://code.google.com/p/arduino/wiki/Arduino1

Qui il l'ultimo codice, in "new extension"
https://github.com/arduino/Arduino/tree/new-extension/libraries/Ethernet

Non l'ho provata ancora, per cui non so dirti se puoi utilizzarla con l'IDE Arduino 22 senza problemi.

Ciao,
Marco.

si nel get non devo mettere anche l'host è solo GET /arduino?val1=22&val2=90 lo so era per farmi capire, perchè in cima al codice setto l'ip singolo del server esempio {192,168,23,1}
se gli metto l'host li si incricca e non compila ovviamente e siccome sto lavorando su dei server a pagamento con 1000 siti come minimo su un ip e suddivisi con i virtualhost di apache, e quindi con l'ip singolo nell'invio dei dati da arduino è impossibile che funzioni quindi devo usare l'hostname ma mi chiedevo come poter fare capito ora quale è il mio prob?

nella GET di solito si usa l'url relativo allo / (la root) del sito.

Per quanto riguarda il servizio DNS, esiste una libreria Ethernet modificata che permette questa configurazione. cerca DNS Ethernet nel forum inglese, però credo che sia basata sull'ethernet shield e non so su supporta la nuova arduino ethernet, anche se credo che con un poco di copia incolla del codice dovresti cavartela :slight_smile:

ehi super lesto, ma a che link è quella conversazione ? perchè ho cercato ma sono un po confuse le info,
poi ho pensato ad una cosa cosi ma non funge ovviamente,

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

byte ip[] = { 192,168,1,177 };
byte server[] = { 81,88,48,72 } ;
char Hostname[] = "www.prg.com";

ma poi a allo sprintf come gli dico di andare sull'host? cosi?
sprintf(buffer,Hostname "GET /fview.php?attiva=%d&reattiva=%d HTTP/1.0", sensorValue, sensorValue2);

non mi potresti dare una bozzetta cosi me la aggiusto? :>

la libreria si chiama EthernetDNS, ecco il link: http://gkaindl.com/software/arduino-ethernet

prima di tutto devi settare l'ip di un DNS server, ovvero quello che dal nome dell'host ti restituisce l'ip. Normalmente i router fanno anche da server DNS, quindi puoi dare l'ip del router (di solito 192.168.0.1, ma può variare, è quello che usi alla voce GATEWAY)
se il tuo DNS non lo supporta puoi usare i DNS gratuiti, come gli opendns: http://www.opendns.com/, i cui 2 IP sono 208.67.222.222 e 208.67.220.220

Poi quando devi cercare un host usi
DNSError resolveHostName(const char* hostName, byte ipAddr[4]);
hostname è il nome che devi risolvere, ipAddr è un array di byte di 4 dimensioni in cui verrà salvato l'IP

Per la sprintf, comunque, funziona esattamente come per i sensorValue, solo che al posto del %d (che significa "quì ci vuole un numero intero), ci metti il %s (che significa quì ci vuole una stringa). Per vedere altri formati & maggiori info: http://www.cplusplus.com/reference/clibrary/cstdio/scanf/