找回密码
 立即注册

QQ登录

Arduino WiFi Shield如何通过代理上网?

来源: 已解决 这个冬天有点酷 2015-1-5 15:10 显示全部楼层 |阅读模式
我们公司使用的是代理上网,但发现使用Arduino WiFi Shield是上不了外网的,在公司里只能在局域网中传输数据,不知道怎样为WiFi板子设置代理,这个有解决的方法吗?这个板子我用在不使用代理上网的环境下是可以成功联网的(作为HTTP客户端访问百度),但在需要代理的网络环境下该如何解决上网问题呢?下面是我用的代码:

  1. /*
  2.   Web client

  3. This sketch connects to a website (http://www.google.com)
  4. using a WiFi shield.

  5. This example is written for a network using WPA encryption. For
  6. WEP or WPA, change the Wifi.begin() call accordingly.

  7. This example is written for a network using WPA encryption. For
  8. WEP or WPA, change the Wifi.begin() call accordingly.

  9. Circuit:
  10. * WiFi shield attached

  11. created 13 July 2010
  12. by dlf (Metodo2 srl)
  13. modified 31 May 2012
  14. by Tom Igoe
  15. */


  16. #include <SPI.h>
  17. #include <WiFi.h>

  18. char ssid[] = "zzzzzzzzzz"; //  your network SSID (name)
  19. char pass[] = "1qaz2wsx3edc";
  20. //char ssid[] = "Xiaomi_B1CC"; //  your network SSID (name)
  21. //char pass[] = "12345678";    // your network password (use for WPA, or use as key for WEP)
  22. int keyIndex = 0;            // your network key Index number (needed only for WEP)

  23. int status = WL_IDLE_STATUS;
  24. // if you don't want to use DNS (and reduce your sketch size)
  25. // use the numeric IP instead of the name for the server:
  26. //IPAddress server(74,125,232,128);  // numeric IP for Google (no DNS)
  27. char server[] = "www.baidu.com";    // name address for Google (using DNS)

  28. // Initialize the Ethernet client library
  29. // with the IP address and port of the server
  30. // that you want to connect to (port 80 is default for HTTP):
  31. WiFiClient client;

  32. void setup() {
  33.   //Initialize serial and wait for port to open:
  34.   Serial.begin(9600);

  35.   // check for the presence of the shield:
  36.   if (WiFi.status() == WL_NO_SHIELD) {
  37.     Serial.println("WiFi shield not present");
  38.     // don't continue:
  39.     while (true);
  40.   }

  41.   String fv = WiFi.firmwareVersion();
  42.   if ( fv != "1.1.0" )
  43.     Serial.println("Please upgrade the firmware");

  44.   // attempt to connect to Wifi network:
  45.   while (status != WL_CONNECTED) {
  46.     Serial.print("Attempting to connect to SSID: ");
  47.     Serial.println(ssid);
  48.     // Connect to WPA/WPA2 network. Change this line if using open or WEP network:
  49.     status = WiFi.begin(ssid, pass);

  50.     // wait 10 seconds for connection:
  51.     delay(10000);
  52.   }
  53.   Serial.println("Connected to wifi");
  54.   printWifiStatus();

  55.   Serial.println("\nStarting connection to server...");
  56.   // if you get a connection, report back via serial:
  57.   if (client.connect(server, 80)) {
  58.     Serial.println("connected to server");
  59.     // Make a HTTP request:
  60.     client.println("GET /search?q=arduino HTTP/1.1");
  61.     client.println("Host: www.baidu.com");
  62.     client.println("Connection: close");
  63.     client.println();
  64.   }
  65. }

  66. void loop() {
  67.   // if there are incoming bytes available
  68.   // from the server, read them and print them:
  69.   while (client.available()) {
  70.     char c = client.read();
  71.     Serial.write(c);
  72.   }

  73.   // if the server's disconnected, stop the client:
  74.   if (!client.connected()) {
  75.     Serial.println();
  76.     Serial.println("disconnecting from server.");
  77.     client.stop();

  78.     // do nothing forevermore:
  79.     while (true);
  80.   }
  81. }


  82. void printWifiStatus() {
  83.   // print the SSID of the network you're attached to:
  84.   Serial.print("SSID: ");
  85.   Serial.println(WiFi.SSID());

  86.   // print your WiFi shield's IP address:
  87.   IPAddress ip = WiFi.localIP();
  88.   Serial.print("IP Address: ");
  89.   Serial.println(ip);

  90.   // print the received signal strength:
  91.   long rssi = WiFi.RSSI();
  92.   Serial.print("signal strength (RSSI):");
  93.   Serial.print(rssi);
  94.   Serial.println(" dBm");
  95. }



复制代码


回复

使用道具 举报

大神点评3

不天明白你说的代理上网什么意思?如果是局域网内可以传输通信,说明已经正常工作了,应该不是控制器和wifi模块的问题,具体告诉我代理上网指的是什么?
回复 支持 反对

使用道具 举报

龙行天下 发表于 2015-1-5 20:27
不天明白你说的代理上网什么意思?如果是局域网内可以传输通信,说明已经正常工作了,应该不是控制器和wifi ...

是这样的,我们在公司浏览网页的时候,上QQ的时候,都需要设置HTTP代理和代理端口号才能上外网,百度什么的,但是设置我的WIFI板子连接好路由器后怎么设置HTTP代理让它上百度呢?是可以在局域网内通信了,但公司使用的是代理上网,所以需要通过代理,就没办法搞了,我已经试验过了,在不用设置代理上网的环境下我的板子是可以访问百度的,就是不知道怎么解决有代理存在时的上外网问题
回复 支持 反对

使用道具 举报

这个冬天有点酷 发表于 2015-1-6 09:39
是这样的,我们在公司浏览网页的时候,上QQ的时候,都需要设置HTTP代理和代理端口号才能上外网,百度什么 ...

关于代理问题,你可以尝试在路由器中设置代理进行包转发。
从Arduino官方网站的库函数介绍(http://arduino.cc/en/Reference/WiFi)未见到可以直接设置代理的函数。
如果你这方面有进一步需求,可以通过Arduino的官方论坛(http://arduino.cc/forum/)得到更详细的技术支持。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册