Go Down

Topic: Host e porte non 80 (Read 513 times) previous topic - next topic

AnTrea

Salve

Devo agganciarmi con la mia arduino+ethernet shield ad un sito web: tizio.caio.it:54379
deve scaricarmi semplicemente l'output della pagina... un pò come lo sketch webclient negli esempi.

Mi sto un pò rincretinendo e non riesco a capire dove devo metere la porta 54379:
Code: [Select]
if (client.connect(server, 54379)) {

Ma si freeza e non mi fa connettere....

Ho pensato di impostare:
Code: [Select]
if (client.connect(server, 80)) {
E nella get fare qualcosa tipo:
Code: [Select]
client.println("GET :54379/index.html  HTTP/1.0");

Niente da fare

Come me ne esco? chi mi aiuta?

Grazie
Arduino, MODs e DIY: blackstufflabs.com

lesto

#1
Sep 21, 2012, 06:12 pm Last Edit: Sep 21, 2012, 06:13 pm by lesto Reason: 1
il primo sistema è quello corretto.. non so perchè si freeza però. Forse un bug della libreria che usa int invece che unsigned int?

edit: ma poi, hai provato a pingare e telnettarti al pc del tizo dalla tua rete con un PC? magari è semplicemente un problema delle SUE impostazioni di rete, ma non credo che la etherne si frezzi in qul caso, ma al massimo dopo un pò dovrebbe dare timeout
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

AnTrea


il primo sistema è quello corretto.. non so perchè si freeza però. Forse un bug della libreria che usa int invece che unsigned int?


Grazie lesto per la risposta....

Come faccio adesso? Devo mettere mano alla libreria?

...non ho mai modificato una libreria in vita mia.... proviamo!
Arduino, MODs e DIY: blackstufflabs.com

AnTrea

#3
Sep 21, 2012, 06:15 pm Last Edit: Sep 21, 2012, 06:17 pm by Trisonic Reason: 1
La funzione è questa.... uint16_t
Che cavolo è? Che tipo è? 0~1024 porte?

Code: [Select]
uint16_t EthernetClient::_srcport = 1024;

Code: [Select]
int EthernetClient::connect(const char* host, uint16_t port) {
 // Look up the host first
 int ret = 0;
 DNSClient dns;
 IPAddress remote_addr;

 dns.begin(Ethernet.dnsServerIP());
 ret = dns.getHostByName(host, remote_addr);
 if (ret == 1) {
   return connect(remote_addr, port);
 } else {
   return ret;
 }
}
Arduino, MODs e DIY: blackstufflabs.com

lesto

uint16_t vuol dire Unsigned int 16 bit

quindi è corretto. vedi l'edit delmio primo messeggio, ovvero con telnet ti riesci a collare al PC del tizio?
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

AnTrea


uint16_t vuol dire Unsigned int 16 bit

quindi è corretto. vedi l'edit delmio primo messeggio, ovvero con telnet ti riesci a collare al PC del tizio?



sisi, vedo benissimo
Arduino, MODs e DIY: blackstufflabs.com

AnTrea

OK, risolto.

Il problema era dal fatto che il server usa il protocollo 1.1 per le richieste http, quindi ho modificato leggermente la richiesta di get aggiungendo l'host+porta.


Code: [Select]
  client.println("GET /tizio.html HTTP/1.1");
    client.println("Host: bello.tutto.it:54379");
    client.println();
Arduino, MODs e DIY: blackstufflabs.com

Go Up