2010-03-21 53 views
5

我有一个Arduino和Ethernet Shield通过防火墙代理将Arduino连接到Internet

如何通过防火墙代理将其连接到Internet?

例如,Arduino的以太网库只有this参考演示如何将电路板连接到Internet,但不知道如何跨越防火墙代理去做,等

从Arduino的帮助页面重复。

#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(;;) 
     ; 
    } 
} 

可以看出,这里没有办法通过防火墙代理解决我的TCP连接问题。

另外我只是好奇这个TCP连接的整个过程是如何在上述环境中通过防火墙代理解决的,请加上一些合适的参考。

+0

我不确定这属于服务器故障..问题出现在太多的方向“解释防火墙”,“给我示例代码”等 – 2010-03-22 05:02:12

+0

编辑问题更清晰。 – 2010-03-22 10:51:58

回答

0

Client类不支持SOCKS和HTTP代理。您必须自行修改Ethernet.h中的代码。

+0

答案在技术上是正确的(现有的图书馆不支持代理),但它没有提供任何解决方案(如5票的答案)。 – 2015-04-23 20:55:02

5

如果你想通过代理连接,使用代理服务器的名称,你要连接的ADRESS,以及包括服务器地址作为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(); 

原来答案是here