|
我买了一块Arduino Ethernet Shield连接在Uno上进行网络通讯,连接在学校的网线上。学校的网络需要经过代理服务器才能与外网通讯。代理服务器地址:10.204.18.202:3128
我是用MQTT协议在Arduino上面向Server发布信息,因为代理服务器的关系,始终不能连上外网
MQTT官网上Arduino的function一览:http://knolleary.net/arduino-client-for-mqtt/api/#PubSubClient2
求代码中代理服务器的设置方法,代码如下:
#include <PubSubClient.h>
#include <SPI.h>
#include <Ethernet.h>
// Update these with values suitable for your network.
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0xF2, 0x45 };
byte server[] = { 212, 72, 74, 21 }; //MQTT dashboard
//byte ip[] = { 172, 16, 0, 100 };
byte proxy[] = { 10, 204, 18, 202 }; // School Proxy
void callback(char* topic, byte* payload, unsigned int length)
{
// handle message arrived
}
EthernetClient ethClient;
PubSubClient arduino(server, 1883, callback, ethClient);
void setup()
{
Ethernet.begin(mac);
Serial.begin(9600);
Serial.println("connecting...");
Serial.println();
delay(500);
int eth=0;
while (eth==0)
{
Serial.println("Proxy Connecting...");
eth = ethClient.connect(proxy, 3128); //在Ethernet中设置代理服务器地址。
}
Serial.println("Proxy Connected!"); //到这里为止都能连得上。
Serial.println();
while ((arduino.connect("niunai1221"))==0) //这里就连不上网了,因此一直在while里面循环。
{
Serial.println("MQTT Connecting...");
delay(1000);
}
Serial.println("MQTT Connected!");
arduino.publish("outTopic1221","hello world");
}
void loop()
{
arduino.loop();
}
这个代码可以让EthernetClient的function越过代理,但是PubSubClient无法一并越过代理,求设置方法~谢谢!
|
|