因为工作需要,总是需要打开某台不在身边的电脑,相信很多朋友也遇到过相同的问题,出门在外,或者在公司,突然需要的一个文件存在家里的电脑上,如果家里有人可以打个电话回家,然鹅,事情总会有很多不巧的时候,家里刚好没人,或者,家里的人根本就不知道怎么开电脑,又或者,你是一只漂泊在外的单身旺,这种时候你就需要用上远程开机了。
本文中的开机方法都来自网络总结:
1. 通过广播包实现远程开机
其实远程开机就是一种网络唤醒(Wakeup On LAN)绝大多数电脑的主板BIOS 都支持这项功能,如果BIOS 中没有开启则需要手工打开。电脑没有开机前网卡没有IP 地址,网络通讯时该如何发送数据? 这里就要用到广播包,广播包顾名思意就是不针对具体的目标向一个网段范围内所有的地址同时发出,和你用收音机接收广播的道理相同。
网络唤醒数据包的结构,这个是规范按规范来就可以了:
UDP广播包,端口不限
数据是
FF-FF-FF-FF-FF-FF 接着目标计算机的 MAC 地址重复 16 次
注意,这里是UDP 的广播包,与我们前面分享中均使用的TCP 有一定的区别
直接上代码:
void CAppRunServerView::StartNETPC( CString MACstr )
{
int dstaddr[6];
char mac[20];
int j;
for ( j=0;j<MACstr.GetLength();j++ )
{
mac[j]= MACstr.GetAt(j);
}
mac[j]='\0';
int i = sscanf( mac,"%2x:%2x:%2x:%2x:%2x:%2x",
&dstaddr[0],
&dstaddr[1],
&dstaddr[2],
&dstaddr[3],
&dstaddr[4],
&dstaddr[5]);
if (i!=6)
{
return;
}
unsigned char ether_addr[6];
for( i=0; i<6; i++ )
ether_addr=dstaddr;
//构造Magic Packet
unsigned char magicpacket[200];
memset(magicpacket,0xff,6);
int packetsize=6;
for ( i=0; i<16; i++ )
{
memcpy( magicpacket + packetsize , ether_addr, 6 );
packetsize += 6;
}
WSADATA WSAData;
if( WSAStartup( MAKEWORD(2,0), &WSAData ) != 0 )
{
return;
}
//创建socket
SOCKET sock = socket( AF_INET,SOCK_DGRAM,0 );
if ( sock == INVALID_SOCKET )
{
return;
}
//设置为广播发送
BOOL bOptVal=TRUE;
int iOptLen=sizeof(BOOL);
if ( setsockopt( sock,
SOL_SOCKET,
SO_BROADCAST,
(char*)&bOptVal,iOptLen) == SOCKET_ERROR )
{
closesocket(sock);
WSACleanup();
return;
}
sockaddr_in to;
to.sin_family = AF_INET;
to.sin_port = htons(0);
to.sin_addr.s_addr = htonl( INADDR_BROADCAST );
//发送Magic Packet
if ( sendto( sock,(const char*)magicpacket,packetsize,0,
( const struct sockaddr*)&to,
sizeof(to) )==SOCKET_ERROR )
{
return;
}
else
{
//MessageBox( _T("发送成功") );
}
closesocket(sock);
WSACleanup();
}
有几个前提条件,这台电脑的MAC 这肯定得先知道(废话)
这台电脑的BIOS 支持网络唤醒;
这台电脑在网络(交换机)上曾经至少至少工作过一次与别人通讯过一次,只有这样交换机中的MAC 表才对客户机有记录。
2.智能硬件设备实现远程开机
除了技术流的远程开机方式之外,还是有很多的智能设备,一键就能够实现远程开机。比如说智能插座,今天我就以向日葵开机插座为例。
首先你要检查你的电脑主板是否支持AC recovery这个功能,如果支持这个就简单了很多,首先你手机上下载一个向日葵的APP,然后将你的开机插座绑定在你的账号下。
然后再将你的电脑AC recovery这个功能打开,这样就设置完成了。之后就可以远程通过向日葵这个APP实现一键开启电脑的功能。
如果电脑不支持AC recovery这个功能,但是支持支持WOL唤醒功能可以继续往下看。
3.通过路由器实现远程开机
一:是BIOS端的设置,这个不管是WIN10还是群晖都是需要先设置的。
二: WIN10或者群晖设置
三:路由器设置,一层的比较简单,我因为是网吧的或者说公司的,都是属于二层或者三层的路由,就比较复杂点,我一开始就是卡在这,整整两天没有搞定,搞的怀疑这怀疑那的,最后还是两层路由的问题,后来搞定了以后感觉也就这回事,但是百度的话基本实际的,都是些大而全的知识,只能看各种大能的帖子,然后解决自己的问题。
四:当然是手机端或者电脑端实现局域网远程唤醒(LAN)和广域网远程唤醒(WAN)软件了。电脑端我用的是WakeOnLAN,手机端当然还是大名鼎鼎的Wake on Lan,不过都是中文版,file:///C:\Users\oray\AppData\Local\Temp\ksohtml8784\wps31.jpg 谁叫作者读书的时候英文不好好读呢,软件就自己百度吧,后面我也会提下用法,很简单的。
有些人不成功的可以按照这个思路一个个查过去那个地方不通,就重点折腾那部分可以了,不需要像楼主本人一样折腾到后来,怀疑这怀疑那,最后都怀疑人生了。。。。。对了,路由器端口通不通的可以直接站长工具,这是一个在线扫描端口的网站,大家可以试试。当然有更好的也可以推荐。 一BIOS篇首先要打开BIOSLAN中
LAN英
PXE中
PXE英
我是技嘉主板,中英两个版本都截图了,记得开启,打开主板上的WOL功能(【Power On By PCIE Devices】或者【Wake On LAN】具体参考主板bios说明书),并注意关机(不要拔电源插头)时网线接主板处灯亮的,如果灯不亮,证明主板的没有打开。还有就是我主板上LAN功能是本身打开了的,但是灯是不亮的,后来打开LAN PXE 才是亮的,估计新主板跟以前的设置又不同的,具体的不会,可以打客服电话。还有一个要友情提醒下的,可以远程启动以后,千万不要拔电源,如果拔了电源,地址就会失效,必须重新手动启动一下,正常关机,才可以启动了,技术给我的建议就是配个UPS电源,保证不断电。具体的问题我百度了下,下面不喜欢的可以跳过。反正我是没有看懂,只知道就是不能断定,不过百度也有说这种问题有些牌子的主板联系技术支持以后会给你发来个新的BIOS
,刷了以后也可以解决,具体的不清楚,希望有实际经验的人下面回复写,谢谢了。 1、主板会将[断电後网络唤醒的功能存储在NVRAM模块中,存储完毕自动断电。
2、网络唤醒功能存储在主板的NVRAM中,220V断掉后,主板也同时断电,NVRAM被清空,所以无法进行唤醒。
3、只有在接上220V后上电一会,才会重新加载数据到NVRAM,才可以实现断电后网络唤醒的功能。(怎么没有人问我BIOS截图杂这么清晰的啊file:///C:\Users\oray\AppData\Local\Temp\ksohtml8784\wps36.png ,哈哈,其实现在主板都支持BIOS直接截图U盘的,我的技嘉主板是按F12,当然U盘必须是FAT32格式的,截图成功会有提示哦) 二WIN10或者群晖首先我的电脑右键-属性-设备管理器-网络适配器设备
选择自己的网卡右键-
属性-电源管理-链接唤醒必须打勾(这个必须要说下,链接唤醒是真最新,挡住的,你必须落下来才可以看见,我当初就是没有看见,怎么搞局域网都唤醒不了,坑死了,足足当了我一天file:///C:\Users\oray\AppData\Local\Temp\ksohtml8784\wps38.png
,其他的按照我设置就好了,我这个是最新版本的,可能跟老的版本有不同,下面有老的版本 网卡
前面点开一样的,在高级里选择Wake on magic packet(魔术包唤醒)选择打开即可
网卡1
网卡2
还有一个就是快速启动这里,有些人说需要勾掉,有些人说不需要,具体的自己具体看吧,启动不了的就试试,启动的了就没有必要了。我当时乱投医的试试所有方法都试过了,包括这个,所以搞好以后也不想去动他了,懒啊~~~~~~
电源设备
电源设备2
群晖设置首先进入控制面板--硬件和电源-启用局域网唤醒,其他的设置自己随意吧
群晖设置
三路由器篇这里怨念超级无敌深啊,整整困住了我三天,各种百度,没有几个是有营养的,看样子是时候用谷歌了。file:///C:\Users\oray\AppData\Local\Temp\ksohtml8784\wps45.jpg file:///C:\Users\oray\AppData\Local\Temp\ksohtml8784\wps46.jpg file:///C:\Users\oray\AppData\Local\Temp\ksohtml8784\wps47.jpg 首先两层路由,先路由器A(百为)WAN口(设置的静态IP)接到路由器B(网件7000)LAN口,至于IP地址可以自己设置,只要不冲突就可以了。路由A的网段192.168.1.1 路由B的网段192.168.8.1这个也是自己设置的不冲突就可以,没有影响(该内容转载自什么值得买)拓扑图
2:打开路由器B设置页面,选择ARP-IP-MAC,注意这里打开了以后,如果没有绑定MAC地址的IP就算连接密码成功,也上不了网的,路由器会自动丢弃他,当然各个路由器路径都不一样我就不一一说了,自己慢慢找吧。
ARP-IP-MAC
IP设置
3:选择端口转发-协议选择UDP或者TCP/UDP,记得不能单独选择TCP啊,这样会唤醒不成功的,不成功的,我就是吃了这亏,做的时候没有注意,一定要细心点,接着就是一个外部端口9(大部分唤醒软件都是默认9)内部端口可以随便选,我选择的是10,接着就是IP地址选择了,这里选择你路由器分配给你要唤醒电脑的IP,比如我是分配了192.168.8.7给我唤醒机器,选我选择了192.168.8.7.
端口转发
静态路由
动态DNS
动态域名
路由器A动态设置
路由A端口映射
电脑唤醒
当然有人会问这有什么用,有些人是不需要24小时开机的,比如要下载东西了,又在外面怎么办,这就可以远程唤醒机器,利用迅雷极速远程下载,也可以上传图片到自己机器保存,更可以看自己保存的高清电影,上传必须要够哦,要做的事太多了,当然你也可以远程遥控家里人手工开机,更靠谱,到这里就全部结束了,有需要的人上,没有需要的,高手请勿喷!