문제

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.

도움이 되었습니까?

해결책

The Client class supports neither SOCKS nor HTTP proxies. You'll have to modify the code in Ethernet.h yourself.

다른 팁

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.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top