2010-03-21 49 views
5

Tôi có Arduino với Ethernet Shield.Kết nối Arduino với Internet qua proxy tường lửa

Làm cách nào để kết nối Internet với proxy trên tường lửa?

Ví dụ, thư viện Arduino Ethernet chỉ có this tài liệu tham khảo để chứng minh làm thế nào để kết nối bảng của bạn với Internet nhưng không có đầu mối làm thế nào để làm điều đó qua proxy tường lửa, vv

Lặp đi lặp lại từ Arduino trang trợ giúp.

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

Có thể thấy, không có cách nào để giải quyết các kết nối TCP của tôi trên proxy tường lửa.

Ngoài ra tôi chỉ tò mò làm thế nào toàn bộ quá trình kết nối TCP này được giải quyết trên một proxy tường lửa trong bối cảnh trên, xin vui lòng đặt một số tài liệu tham khảo phù hợp quá.

+0

Tôi không chắc chắn điều này thuộc về Lỗi máy chủ .. câu hỏi đi theo quá nhiều hướng "giải thích tường lửa", "cung cấp cho tôi mã mẫu", v.v. –

+0

Câu hỏi đã chỉnh sửa để rõ ràng hơn. –

Trả lời

0

Lớp Client không hỗ trợ SOCKS cũng như proxy HTTP. Bạn sẽ phải tự sửa đổi mã trong số Ethernet.h.

+0

Trả lời là đúng về mặt kỹ thuật (thư viện hiện có không hỗ trợ proxy), tuy nhiên nó không cung cấp giải pháp (như câu trả lời với 5 phiếu bầu). –

5

Nếu bạn muốn kết nối thông qua proxy, sử dụng tên máy chủ proxy là địa chỉ bạn đang kết nối, và bao gồm các địa chỉ máy chủ như một phần của yêu cầu GET của bạn:

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

Câu trả lời ban đầu là here.

Các vấn đề liên quan