5

イーサネットシールド付きのArduinoを持っています。

ファイアウォールプロキシを介してインターネットに接続するにはどうすればよいですか?

たとえば、Arduinoイーサネットライブラリには、ボードをインターネットに接続する方法を示すためのこのリファレンスしかありませんが、ファイアウォールプロキシなどを介して接続する方法の手がかりはありません。

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接続のこのプロセス全体がファイアウォールプロキシを介してどのように解決されるのか興味があります。適切なリファレンスも入力してください。

4

2 に答える 2

6

プロキシ経由で接続する場合は、接続先のアドレスとしてプロキシサーバー名を使用し、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();

元の答えはここにあります。

于 2013-04-18T13:22:24.883 に答える
0

このClientクラスは、SOCKSプロキシもHTTPプロキシもサポートしていません。自分でコードを変更する必要がありEthernet.hます。

于 2010-03-22T16:52:50.563 に答える