2010-03-21 88 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