5

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.

4

2 回答 2

6

如果您想通过代理连接,请使用代理服务器名称作为您要连接的地址,并将服务器地址作为您的 GET 请求的一部分:

// 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();

原来的答案在这里

于 2013-04-18T13:22:24.883 回答
0

该类Client既不支持 SOCKS 也不支持 HTTP 代理。您必须自己修改代码Ethernet.h

于 2010-03-22T16:52:50.563 回答