要从外网访问内网,请使用有虚拟服务器功能的路由器,比如TPLINK的,如果还想用域名访问,那就申请一个花生壳域名服务,免费的~
在网通的很多地区,花生壳不太好用,我家的光纤宽带算是一个,花生壳对这类用户,是要收费服务的。
不过,ADSL用户貌似会好些,因为得到的IP都是真正的外网IP,但是注意大部分端口事实上都已经被运营商封掉了,不能当服务器用。
本帖最后由 darkorigin 于 2012-6-11 00:34 编辑
erjiang 发表于 2012-6-10 19:11 static/image/common/back.gif
很好,webserver有个小问题,就是不能完成远程的控制。
因为NAT映射的原因,我们内网的webserver是很难 ...
路由的端口映射做1个就好了(基本上99%的路由都带这个功能,直接把内网某一IP地址的某些端口映射到自己的某些端口上)
解决动态地址我用的是DDNS(花生壳)
不需要中转,更稳定。
我以前自己搞的服务器就是用这个方法,除了并发连接数量限制(毕竟家用路由处理能力还是有限的)和防火墙不够强大外,什么都还可以了。一般简单的DOS攻击都可以抵抗。
另外友情提示,用网页中转的方法很不错,很灵活,不过数据一定要做一定强度的加密,否则数据被别有居心的人获取了可能会有安全风险。
飞翔的红猪 发表于 2012-6-10 19:45 static/image/common/back.gif
要从外网访问内网,请使用有虚拟服务器功能的路由器,比如TPLINK的,如果还想用域名访问,那就申请一个花生 ...
需要 端口映射和DDNS一起用的 基本上目前市面上的路由都带。
erjiang 发表于 2012-6-10 20:10 static/image/common/back.gif
在网通的很多地区,花生壳不太好用,我家的光纤宽带算是一个,花生壳对这类用户,是要收费服务的。
不过 ...
80是可用的,8080也是常见的WEB端口,如果是家里的智能电器网络的接口,端口复杂点也没关系的,更安全呢。
erjiang 发表于 2012-6-10 20:10 static/image/common/back.gif
在网通的很多地区,花生壳不太好用,我家的光纤宽带算是一个,花生壳对这类用户,是要收费服务的。
不过 ...
期待你的代码,呵呵 这是一种很好的思路(类似于早些年高端远控软件的反向连接功能)
erjiang 发表于 2012-6-10 19:11 static/image/common/back.gif
很好,webserver有个小问题,就是不能完成远程的控制。
因为NAT映射的原因,我们内网的webserver是很难 ...
对这个很感兴趣,如果可以实现的话,我们就可以很方便的连接到网页去了。
还是w5100吧,既可以做webserver,又可以push到Cosm上去
飞翔的红猪 发表于 2012-6-11 10:51 static/image/common/back.gif
还是w5100吧,既可以做webserver,又可以push到Cosm上去
其实COSM上我还么有什么概念,到时候要试试,不然不是很清楚,这种感觉非常不爽!呵呵!
Randy 发表于 2012-6-11 11:24 static/image/common/back.gif
其实COSM上我还么有什么概念,到时候要试试,不然不是很清楚,这种感觉非常不爽!呵呵!
这是我的,看看哈https://cosm.com/feeds/59928
飞翔的红猪 发表于 2012-6-11 19:13 static/image/common/back.gif
这是我的,看看哈https://cosm.com/feeds/59928
好的,我去看看,了解了解一下!
Randy 发表于 2012-6-12 09:00 static/image/common/back.gif
好的,我去看看,了解了解一下!
能说一下您是怎么做的吗?我好想了解的,我什么模块都有!呵呵!
zhd1021 发表于 2012-3-10 17:47 static/image/common/back.gif
为什么我用ENC28J60模块的时候无法用浏览器访问,但是能在命令窗口下PING出来
估计PING是模块自己处理的。无法用浏览器访问,线未接好,或则arduino 编程不对
yyy_zc 发表于 2012-6-21 12:35 static/image/common/back.gif
估计PING是模块自己处理的。无法用浏览器访问,线未接好,或则arduino 编程不对
我也试了,用别的库可以正常工作,用这个库能Ping通,但是访问不了
我这个已经做成功,但想传到yeelink上面去,能帮我看看代码吗/*
* Web Server
*
* A simple web server that shows the value of the analog input pins.
*/
#include <Ethernet.h>
#include <Wire.h>
byte mac[] = { 0x00, 0x1D, 0x72, 0x82, 0x35, 0x9D};
byte ip[] = {202,136,60,231};
//====================================================
#define APIKEY "81c4aadea5c97b824cb5dc0d3f5a0b54" // replace your yeelink api key here
#define DEVICEID 479 // replace your device ID
#define SENSORID 616 // replace your sensor ID
boolean ResponseBegin = false;
unsigned long lastConnectionTime = 0; // last time you connected to the server, in milliseconds
boolean lastConnected = false; // state of the connection last time through the main loop
const unsigned long postingInterval = 3*1000; // delay between 2 datapoints, 30s
String returnValue = "";
//IPAddress server(202,136,60,231);
//char server[] = "api.yeelink.net";
//==================================================
Server server(80);
Client client = 1;
void setup()
{
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
Wire.begin();
Ethernet.begin(mac, ip);
server.begin();
}
void loop()
{
client = server.available();
if (client.available()) {
char c = client.read();
if (c == '{')
ResponseBegin = true;
else if (c == '}')
ResponseBegin = false;
if (ResponseBegin)
returnValue += c;
}
if (returnValue.length() !=0 && (ResponseBegin == false))
{
if (returnValue.charAt(returnValue.length() - 1) == '1') {
digitalWrite(7, HIGH);
digitalWrite(8, LOW);
}
else if(returnValue.charAt(returnValue.length() - 1) == '0') {
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
}
returnValue = "";
}
if (!client.connected() && lastConnected) {
client.stop();
}
if(!client.connected() && (millis() - lastConnectionTime > postingInterval)) {
//get data from server
// getData();
}
lastConnected = client.connected();
}
// this method makes a HTTP connection to the server and get data back
void getData(void) {
// if there's a successful connection:
if (client.connected()) {
// send the HTTP GET request:
client.print("GET /v1.0/device/");
client.print(DEVICEID);
client.print("/sensor/");
client.print(SENSORID);
client.print("/datapoints");
client.println(" HTTP/1.1");
client.println("Host: api.yeelink.net");
client.print("Accept: *");
client.print("/");
client.println("*");
client.print("U-ApiKey: ");
client.println(APIKEY);
client.println("Content-Length: 0");
client.println("Connection: close");
client.println();
}
else {
client.stop();
}
// note the time that the connection was made or attempted:
lastConnectionTime = millis();
} 急!