I am trying to use the Arduino client class to fetch an HTML page from the Internet (example from the Arduino library itself), but it's not working (connection is not getting established).
It's failing at:
client.connect();
I have tried both Ethernet and Ethernet2 libraries.
My Arduino development platform version is 0017, OS is Windows XP.
Following is my code and configurations inline:
#include <Client.h>
#include <Ethernet2.h>
// #include <Ethernet.h>
#include <Print.h>
#include <Server.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,1,7 };
byte server[] = { 74,125,47,103 }; // Google home page
byte gateway[] = { 192,168,1,1 };
byte mask[] = { 255,255,255,0 };
Client client(server, 80);
void setup()
{
Ethernet.begin(mac, ip, gateway, mask);
Serial.begin(9600);
delay(1000);
Serial.pr开发者_高级运维intln("connecting...");
if (client.connect()) {
Serial.println("connected");
client.println("GET /search?q=arduino HTTP/1.0");
client.println();
} else {
Serial.println("connection failed");
}
}
void loop()
{
if (client.available()) {
char c = client.read();
Serial.print(c);
}
if (!client.connected()) {
Serial.println();
Serial.println("disconnecting.");
client.stop();
for(;;);
}
}
I don't know the reason but I had to modify the following setup()
function to get the code working:
void setup() {
Ethernet.begin(mac, ip, gateway, mask);
Serial.begin(9600);
delay(1000);
Serial.println("connecting...");
for(int i = 0;i <100 ; i++) {
if (client.connect()) {
Serial.println("connected");
client.println("GET /search?q=arduino HTTP/1.0");
client.println();
break;
} else {
Serial.println("connection failed");
}
}
}
The code:
client.connect()
does fail twice or thrice but eventually it connects to google web server as well as my local web server in the 3rd or 4th iteration of the 'for' loop.
If anyone knows the reason for such behavior, please reply.
精彩评论