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 jus开发者_运维知识库t curious how this whole process of TCP connection is resolved across a firewall proxy in the above context, please put some suitable reference too.
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.
The Client
class supports neither SOCKS nor HTTP proxies. You'll have to modify the code in Ethernet.h
yourself.
精彩评论