Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Connecting Arduino to the Internet across a firewall proxy

I have an Arduino with an Ethernet Shield.

How can I connect it to the Internet across a firewall proxy?

For example, the Arduino Ethernet library has only this reference to demonstrate how to connect your board to the Internet but no clue how to do it across firewall proxies, etc.

Repeated from Arduino help pages.

#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 10, 0, 0, 177 };
byte server[] = { 64, 233, 187, 99 }; // Google

Client client(server, 80);

void setup()
{
  Ethernet.begin(mac, ip);
  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(;;)
      ;
  }
}

As can be seen, there is no way here to resolve my TCP connections across a firewall proxy.

Also I am just curious how this whole process of TCP connection is resolved across a firewall proxy in the above context, please put some suitable reference too.

like image 932
Ashish Sharma Avatar asked Mar 21 '10 17:03

Ashish Sharma


People also ask

Can you connect an Arduino to the internet?

Some Arduino boards like the Arduino Uno WiFi have Wi-Fi capabilities out of the box. However, most Arduino boards do not, so if you want to connect them to the internet, you'll need a separate Arduino Wi-Fi module. You can still find some Arduino Wi-fi shields around, although the product has been officially retired.

How do I control Arduino from anywhere in the world?

All you really need is an arduino ethernet. You can run a web server on it and connect to it from anywhere that has internet access. For SMS, your cell carrier will have a web site that lets you send texts to its subscribers. Your phone can hit the web site too, no special need to have a custom Android app.


1 Answers

If you want to connect through a proxy, use the proxy server name as the adress you're connecting to, and include the server address as part of your GET request:

// if you get a connection, report back via serial:
if (client.connect("www.proxy.com", 8080)) {  // This is connecting to the proxy
Serial.println("connected");

// Make a HTTP request through proxy:
client.println("GET http://www.actualserver.com/search?q=arduino HTTP/1.0");
client.println();

The original answer is here.

like image 182
Gerrit Avatar answered Sep 26 '22 15:09

Gerrit