魅蓝 note6降价这么多note5现在降价买合适吗

heyijx2 的BLOG
用户名:heyijx2
文章数:14
访问量:1650
注册日期:
阅读量:5863
阅读量:12276
阅读量:419827
阅读量:1108181
51CTO推荐博文
& & & 网络唤醒,即WOL。简单来讲就是电脑在关闭状态,可以通过网络发送特殊数据包给网卡,网卡收到指定包后,开启计算机。WOL要求有硬件支持该功能,目前市场上主流的以太网卡都支持WOL功能,而无线网卡查找了许多没找到支持该功能的无线网卡。&&&&& & 我在家已经成功实现了网络唤醒功能,可如果我在公司需要操作家里电脑,而网络唤醒是基于局域网的,则无法办到。于是我想到了通过访问家里路由器的网络IP地址实现,但是家里的网络IP地址是变化的,每次重启路由器都会更换,自己总不能每次重启路由器都要记一遍网络IP地址吧。&&&&&&&&为了解决这个问题,我想到了花生壳。家里的路由是TP-LINK,集成了花生壳的DDNS功能,使用后发现小区宽带经过N重路由,花生壳获取到的网络IP地址根本不正确,纠结。几经波折发现可以为花生壳设置A记录,指定域名的IP,同时花生壳也提供了修改A记录的接口,于是我萌生了一个想法:每当路由器重启时,获取路由器网络IP地址,然后通过花生壳接口修改域名A记录,这样外网就可以通过域名发送网络唤醒包,实现远程开机,想法是多么的高大上啊,但过程很艰辛!&&&&&&&&废话太多了,先让我们了解一下花生壳的开放接口吧,我使用的是。&&&&&&&&地址:&&&&&&&&看文档我们了解到,主要分DDNS协议和HTTP协议两种。DDNS协议需要保持心跳包,即每个一段时间发送相应数据给花生壳,显然不是我们想要的,所以我选择HTTP协议。官网HTTP协议如下:当客户端发现IP地址变化或是用户修改设置时,客户端应该进行更新。所有的更新都基本于标准的HTTP请求发送。服务器会传回一个返回代码,客户端需要解析。&HTTP请求主机名:HTTP端口:80HTTPS 端口:443请求支持HTTP和基于SSL的HTTPS协议(HTTPS需要付费用户才能使用)&所有客户端必须发送一个完整的User-Agent文件头,用于区分不同的设备,空值或非法参数将导致请求失败。例子1.使用URL验证&适用于浏览器或应用程序(fetch, curl, lwp-request),可以在URL中包含验证信息。http://username:password@/ph/update?hostname=yourhostname&myip=ipaddress2.原始HTTP GET请求&实际的HTTP请求,类似下面的代码。&其中 base-64-authorization 请使用 Base64 加密 username:password 后的字符替换。GET /ph/update?hostname=yourhostname&myip=ipaddress HTTP/1.0Host: Authorization: Basic base-64-authorizationUser-Agent: Oray请注意必须使用GET请求,POST是不被允许的。更新参数目前仅允许提交以下参数参数说明hostname需要更新的域名,此域名必须是开通花生壳服务。多个域名使用,分隔,默认为空,则更新护照下所有激活的域名。例:hostname=,myip需要更新的IP地址,可以不填。如果不指定,则由服务器获取到的IP地址为准。起初看这个文档我是云里雾里的,经过几番折腾终于弄明白了。& 1.以GET方式发送HTTP请求到/ph/update?hostname=yourhostname&myip=ipaddress& 2.hostname值为要修改的域名& 3.myip值为要修改的IP地址,即家中路由器的公网IP地址& 4.请求头User-Agent为浏览器型号& 5.请求头Authorization为 花生壳登录名:密码 用BASE64方式加密内容&&&&比如账号为:1234;密码为12345,即的BASE64加密结果为:MTIzNDoxMjM0NQ==后面的问题就是如何获取公网IP了,发现/这个网站获取的公网IP地址和路由器是一致的,再看/其实是通过/ic.as接口GET方式获取的,那么只需要读取/ic.asp的IP地址就可以了。 package&smile.heyi.
import&java.io.BufferedR
import&java.io.IOE
import&java.io.InputStreamR
import&java.net.*;
&*&获取公网IP地址
public&class&GetInternetIP&{
private&final&static&String&url&=&"/ic.asp";
public&static&String&getIP(){
String&ip&=&"";
String&html&=&getHTML();
int&start&=&html.indexOf("[")+1;
int&end&=&html.indexOf("]");
//截取IP地址字符串
ip&=&html.substring(start,&end);
private&static&String&getHTML(){
String&s&=&"";
HttpURLConnection&conn&=&(HttpURLConnection)&(new&URL(url).openConnection());
conn.setRequestProperty("User-Agent",&"Mozilla/5.0&(Windows&NT&5.1;&rv:35.0)&Gecko/&Firefox/35.0");
conn.setRequestMethod("GET");
BufferedReader&bf&=&new&BufferedReader(new&InputStreamReader(conn.getInputStream(),"GBK"));
String&tmp&=&"";
while((tmp&=&bf.readLine())&!=&null){
s&+=&tmp+"\r\n";
}&catch&(IOException&e)&{
//&TODO&Auto-generated&catch&block
e.printStackTrace();
}下面在调用花生壳的接口package&smile.heyi.
import&java.io.BufferedR
import&java.io.IOE
import&java.io.InputStreamR
import&java.net.HttpURLC
import&java.net.URL;
import&smile.heyi.util.Base64;
&*&通过花生壳接口,修改域名A记录
public&class&ChangeDDNS&{
private&String&url&=&"/ph/update";
private&String&loginName&=&"";
private&String&password&=&"";
public&ChangeDDNS(String&name,&String&pw){
this.loginName&=&
this.password&=&
public&String&change(String&domainName,&String&ip){
String&s&=&"";
url&+=&"?hostname="+domainName+"&myip="+
HttpURLConnection&conn&=&(HttpURLConnection)&(new&URL(url).openConnection());
conn.setRequestProperty("Host",&"");
//模拟以FireFox浏览器身份访问
conn.setRequestProperty("User-Agent",&"Mozilla/5.0&(Windows&NT&5.1;&rv:35.0)&Gecko/&Firefox/35.0");
//以&账号:密码&的BASE64加密结果身份登录
conn.setRequestProperty("Authorization",&"Basic&"+Base64.getBASE64(loginName+":"+password));
conn.setRequestProperty("Referrer",&url);
BufferedReader&bf&=&new&BufferedReader(new&InputStreamReader(conn.getInputStream()));
String&tmp&=&"";
while((tmp&=&bf.readLine())&!=&null){
}&catch&(IOException&e)&{
//&TODO&Auto-generated&catch&block
e.printStackTrace();
}剩下的就是BASE64加密登录信息说明一下:网上看了一下算法,太复杂没懂,就从网上抄了一份。这份使用的sun.misc.BASE64Decoder和sun.misc.BASE64Encoder两个包,但是Eclipse会找不到,需要工程中删除JRE System Library然后重新添加才可以,究其原因貌似是因为这两个包是sun员工内部自己用的并没有对外发布(看名称就会觉得怪不是以java开头的),并不保证没问题,所以还是希望高手自己写吧。package&smile.heyi.
import&java.io.IOE
import&sun.misc.BASE64D&&&&&
import&sun.misc.BASE64E
&*&Base64加解密
public&class&Base64&{
public&static&String&getBASE64(String&s){
return&(new&BASE64Encoder()).encode(s.getBytes());
public&static&String&deCodeBASE64(String&key)&throws&IOException{
byte[]&b&=&(new&BASE64Decoder()).decodeBuffer(key);
return&new&String(b);
}最后的问题,就是怎么称才能在路由器重启的时候,执行这些操作了。我们不能监测到路由器是否重启,但是可以监测到计算机网卡状态。每次路由器重启(开机状态下)网卡都会失去Internet连接然会回复Internet连接。那么我们可以做计划任务,每当网卡发生连接事件的时候,延迟10分钟左右执行以上的Java代码,延迟是为了防止网络连接未回复就去获取网络IP地址。package&smile.heyi.
import&java.io.IOE
import&java.net.DatagramP
import&java.net.DatagramS
import&java.net.InetA
import&java.net.SocketE
import&java.net.UnknownHostE
&*&网络唤醒功能
public&class&WOL&{
private&int&port&=&0;//端口号
private&String&macAddress&=&"";&//MAC地址
private&String&destIP&=&"";//&广播地址
public&WOL(String&macAddress,&String&sendIP,&int&port){
this.macAddress&=&macA
this.destIP&=&sendIP;
this.port&=&
&*&发送开机指令
public&boolean&sendMagicPackage(){
InetAddress&destHost&=&
destHost&=&InetAddress.getByName(destIP);
}&catch&(UnknownHostException&e)&{
//&TODO&Auto-generated&catch&block
e.printStackTrace();
//验证MAC地址并转换为二进制
byte[]&destMac&=&getMacBytes(macAddress);
//&创建开机指令包
byte[]&magic&=&new&byte[102];
//&将数据包的前6位放入0xFF即&"FF"的二进制
for&(int&i&=&0;&i&&&6;&i++)
magic[i]&=&(byte)&0xFF;
&&&&&&&&//&从第7个位置开始把MAC地址放入16次
for&(int&i&=&0;&i&&&16;&i++)&{
for&(int&j&=&0;&j&&&destMac.&j++)&{
magic[6&+&destMac.length&*&i&+&j]&=&destMac[j];
DatagramPacket&dp&=&
dp&=&new&DatagramPacket(magic,&magic.length,&destHost,&port);
DatagramSocket&
ds&=&new&DatagramSocket();
ds.send(dp);
&&&&&&&&ds.close();
}&catch&(SocketException&e)&{
//&TODO&Auto-generated&catch&block
e.printStackTrace();
}&catch&(IOException&e)&{
//&TODO&Auto-generated&catch&block
e.printStackTrace();
&*&验证MAC地址并转换为二进制
private&static&byte[]&getMacBytes(String&macStr)&throws&IllegalArgumentException&{
byte[]&bytes&=&new&byte[6];
String[]&hex&=&macStr.split("(\\:|\\-)");
if&(hex.length&!=&6)&{
throw&new&IllegalArgumentException("无效的MAC地址");
for&(int&i&=&0;&i&&&6;&i++)&{
bytes[i]&=&(byte)&Integer.parseInt(hex[i],&16);
}&catch&(NumberFormatException&e)&{
throw&new&IllegalArgumentException("无效的MAC地址");
}本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)查看: 14326|回复: 30
局域网能唤醒,远程不能唤醒的可能原因
一直在内网中可以唤醒,但在外网可以管理黑群晖,就是不能唤醒。
后在网上搜了下,应是路由上IP与网卡地址没有绑定的过。
最终在路由器上用 ARP命令把IP与网卡地址绑定了。立马就外网成功唤醒了
路由为R6300V2,刷的DD WRT。
小白一枚。。求傻瓜教程。。!
WNDR 3800&&
恭喜 研究成功
静态ARP绑定 IP&MAC 是一定要設定 不然路由器是無法找到要喚醒的機器
這個教學寫得很清楚&&电脑端设置 &路由器端设置(静态ARP绑定&端口映射) &手机端设置&&這些設定缺一不可
今天终于把我的黑群辉DSM 5.0-4493外网唤醒了,真是太好了。我是用软路由DD-WRT,搞了好多天终于行了。以后人在外面也不怕了
能不能给我个教程啊?感谢了啊
还有如何在外网访问NAS啊
真心感谢了
今天终于把我的黑群辉DSM 5.0-4493外网唤醒了,真是太好了。我是用软路由DD-WRT,搞了好多天终于行了。以后 ...
能不能给我个教程啊?感谢了啊&&还有如何在外网访问NAS啊&&真心感谢了&&我的邮箱
我跟你是一样的,没有找到路由中可以绑定ARP的界面啊,能帮忙截个图么?
本帖最后由 solar_cs 于
16:10 编辑
我跟你是一样的,没有找到路由中可以绑定ARP的界面啊,能帮忙截个图么?
和电脑上的一样的。我是刷的 DD WRT,在启动中加了arp 命令,管理 -命令 arp -s 192.168.*.*(IP)& &&&11:11:**:**(MAC)
命令怎么用啊?
ARP -S 192.XXX.XX.XX AB:34:XX:XX:XX
这种格式么?&
我把这个命令加进去了,今天试了还是不能远程唤醒。&
我今天试了一下,没有ARP绑定,也可以 远程连接,但是没有试能不能唤醒。&
和电脑上的一样的。我是刷的 DD WRT,在启动中加了arp 命令,管理 -命令 arp -s 192.168.*.*(IP)& &&&11:1 ...
我今天试了一下,没有ARP绑定,也可以 远程连接,但是没有试能不能唤醒。
我今天试了一下,没有ARP绑定,也可以 远程连接,但是没有试能不能唤醒。 ...
只要设置了转发就可以远程连接,不过远程不能唤醒。
恩,今天试了一下,远程关机了,然后。。没有然后了。。。&
Powered by查看: 1863|回复: 10
请教下群辉DSM6.0外网远程唤醒怎么设置
主题帖子积分
魔法学徒, 积分 35, 距离下一级还需 15 积分
WOL也打开了内网唤醒都没反应,是不是路由器还要设置下,用的66UB1已经设置了NAS的固定IP捆绑了MAC
主题帖子积分
中级魔法师, 积分 202, 距离下一级还需 298 积分
用啥唤醒的
主题帖子积分
魔法学徒, 积分 35, 距离下一级还需 15 积分
用啥唤醒的
内网是用群辉的电脑助手但是点唤醒说是找不到服务器,外网不知道用啥唤醒
主题帖子积分
中级魔法师, 积分 348, 距离下一级还需 152 积分
刷梅林。icloud登陆,然后就像内网一样操作了。
主题帖子积分
高级魔法师, 积分 727, 距离下一级还需 273 积分
本帖最后由 jambol 于
14:11 编辑
黒晖还是白晖?白的话,我用这些方法都可以唤醒。1、手机端的DS finder,不过要先添加你的nas地址。2、群晖助手。3、用路由器唤醒。66ub1 可以,网络工具下通过网络(lan)唤醒,就可以的。
v&p&n我也试过,不过DS finder 唤醒不成功。外网远程的话,我还是用路由器唤醒。
主题帖子积分
高级魔法师, 积分 714, 距离下一级还需 286 积分
刷梅林。icloud登陆,然后就像内网一样操作了。
请教~!ICLOUD登陆唤醒是什么意思?
主题帖子积分
大魔法师, 积分 1949, 距离下一级还需 51 积分
魔力币1371
是关机了再唤醒?
主题帖子积分
中级魔法师, 积分 348, 距离下一级还需 152 积分
请教~!ICLOUD登陆唤醒是什么意思?
是AiCloud,就是结合华硕ddns(别家的ddns一样可用),远程访问控制局域网和路由器的工具。它有手机端app,台式机网页就可以登陆。楼上的问题是要唤醒局域网的群晖,通过aicloud能访问路由器当然就能唤醒局域网的机子(群晖或windows主机)。
主题帖子积分
高级魔法师, 积分 897, 距离下一级还需 103 积分
本帖最后由 翌帆丰顺 于
15:37 编辑
IMG_2152.PNG (189.61 KB, 下载次数: 0)
15:30 上传
NAS上设置后路由器开ddns用手机app端可以了
主题帖子积分
高级魔法师, 积分 714, 距离下一级还需 286 积分
我是6300刷的梅林
主题帖子积分
魔法学徒, 积分 48, 距离下一级还需 2 积分
我的也是这样。。黑的试了几次也洗白了也不行。试了很多次不知道哪里的问题也总结了下问题应该是不完美吧
刚开始装好6.02升级到u9原来是可以内外都可以唤醒的,就简简单单群辉里打开唤醒和Synology Assistant设置WOL和手机就装个ds finder就可以了,路由器里面什么icloud什么端口这些都没设置过反正相关群辉的一切都没设置测试了几天一切正常,后来就是把电脑搬换到另外一个房间就不行了(只可以远程关就是内外都唤醒不了)........后来不管什么方法都不行了ssh脚本绑mac端口映射所有的一切方法都用完了都不行.....但重新装过又可以但一搬换位置就不行了连局域网都不行啦.....现在想了一下应该就是断了电后才出现这个问题的.....所有的一切方法都试完投降了过两天等智能插座了啦。
DDOS纪念勋章
DDOS纪念勋章
Powered by

我要回帖

更多关于 魅蓝note6双11降价 的文章

 

随机推荐