Ashish Sharma
Ashish Sharma

Reputation: 1144

Arduino web client class not working

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.println("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(;;);
  }
}

Upvotes: 2

Views: 3249

Answers (1)

Ashish Sharma
Ashish Sharma

Reputation: 1144

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.

Upvotes: 5

Related Questions