C# 远程唤醒(远程开机)

C# 远程唤醒(远程开机)C#远程唤醒(远程开机)近日,小白要用到远程开机的功能,网上大多介绍的是MagicPacket的工具。实际上,此MagicPacket是AMD公司开发的,请在google.cn中搜索MagicPacketTechnology。原理上我们不用深入,实现上是发一个BroadCast包,包的内容包括以下数据就可以了。FFFFFFFFFFFF,6个FF是数据的开始,紧跟着16次

大家好,又见面了,我是你们的朋友全栈君。

C# 远程唤醒(远程开机)

近日,小白要用到远程开机的功能,网上大多介绍的是Magic Packet的工具。实际上,此Magic Packet是AMD公司开发的,请在google.cn中搜索Magic Packet Technology。原理上我们不用深入,实现上是发一个BroadCast包,包的内容包括以下数据就可以了。FF FF FF FF FF FF,6个FF是数据的开始,紧跟着16次MAC地址就可以了。比如MAC地址是11 22 33 44 55 66,那么数据就是FF FF FF FF FF FF 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66……..(11 22 33 44 55 66重复16次)。这个数据在包的任何位置都可以,或者包仅为这个数据。然后网播出去就可以了。简单的实现如下:
 

 1  private   static   void  WakeUp( byte [] mac) {


 2              UdpClient client  =   new  UdpClient();

 3              client.Connect(IPAddress.Broadcast,  30000 );

 4              

 5               byte [] packet  =   new   byte [ 17   *   6 ];

 6 

 7               for  ( int  i  =   0 ; i  <   6 ; i ++ )

 8                  packet[i]  =   0xFF ;

 9 

10               for  ( int  i  =   1 ; i  <=   16 ; i ++ )

11                   for  ( int  j  =   0 ; j  <   6 ; j ++ )

12                      packet[i  *   6   +  j]  =  mac[j];

13 

14               int  result  =  client.Send(packet, packet.Length);

15          }

PS:跨路由器的问题(不是公网IP问题)。如果机器A和机器B处于同一个网段内,用client.Connect(IPAddress.Broadcast,port)是可以的,如果A和B不是处于同一个网段内,那么就要用网段内的广播地址,比如A机器是192.168.1.2,B机器IP地址是192.168.100.3,用A远程唤醒B,就要用B网段的广播地址,192.168.100.255。
IPAddress ip = new IPAddress(new byte[]{192,168,100,255});
client.Connect(ip,port)。原理可以参考网络协议。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/141987.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • python保存图片的常用方法

    保存图片的常用方法1.PIL的保存图片方法path=r”./001.jpg”#图片路径img=Image.open(path)#打开图片img.save(“1.jpg”)#将图片保存为1.jpg2.opencv保存图片path=r”./001.jpg”#图片路径#img=cv.imdecode(np.fromfile(“动漫人物_0.jpg”,np.uint8))#含有中文路径的图片打开img=cv2.imread(path)#读

  • 三重缓冲:为什么我们爱它[通俗易懂]

    三重缓冲:为什么我们爱它[通俗易懂]
    文章来源:http://www.anandtech.com/video/showdoc.aspx?i=3591&p=1
    文章标题:TripleBuffering:WhyWeLoveIt
    文章作者:DerekWilson 
    文章时间:2009年6月26日

    引子

    我们往往不愿过多讨论哪些选项在游戏中应该开启。相反,我们往往把重点放在我们的评测内容上。老实说,我们对玩游戏的建议设置与我们的评测设置非常相似,除了一个非

  • ExecuteNonQuery()返回值问题[通俗易懂]

    ExecuteNonQuery()返回值问题[通俗易懂]1.使用update,insert,delete等对数据库中表行进行操作的时候,返回值为所操作的行数(若该条语句未作用在任何一行,则返回0)2.使用alter添加表空间数据文件,create创建表,drop删除表等操作时返回值为03.数据库连接字符串http://blog.csdn.net/cddchina/article/details/46046

  • CentOS7下安装mysql5.7[通俗易懂]

    CentOS7下安装mysql5.7[通俗易懂]更多精彩技术分享请浏览本人博客:https://blog.csdn.net/wohiusdashi一、安装YUMRepo1、由于CentOS的yum源中没有mysql,需要到mysql的官网下载yumrepo配置文件。下载命令:wgethttps://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm…

  • jax-RPC和jax-WS比较

    jax-RPC和jax-WS比较1、JAX-RPC简介:JAX-RPC为基于SOAP(简单对象访问协议)的应用程序的开发提供了一个编程模型。JAX-RPC编程模型通过抽象SOAP协议层的运行机制与提供Java和Web服务描述语言(WSDL)间的映射服务来简化开发。通过使用JAX-RPC(JavaAPIforXML-basedRPC),已有的Java类或Java应用都能够被重新包装,并以WebServices

  • 织梦dedecsm系统”企业简介”类单栏目模版如何修改和调用

    织梦dedecsm系统”企业简介”类单栏目模版如何修改和调用

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号