注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

gmd20的个人空间

// 编程和生活

 
 
 

日志

 
 

C#的网络唤醒开机小程序  

2013-09-22 14:21:10|  分类: 程序设计 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
国庆要有一两天在家远程办公,就把公司电脑在bios里面把定时自动开机,网络唤醒开机,断电后自动开机,等选项都全部选上了。方便vpn远程桌面连接过来。

随便找了一下网络唤醒小程序的原理  http://en.wikipedia.org/wiki/Wake-on-LAN
也用c#弄个来玩玩
C的网络唤醒开机小程序 - widebright - widebright的个人空间
 
C的网络唤醒开机小程序 - widebright - widebright的个人空间
 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;


namespace WakeUpOnLan
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
string mac = textBox1.Text;
mac = mac.ToUpper();
mac = mac.Replace(" ", "");
string[] mac_strs = mac.Split('-');

if (mac_strs.Length != 6) {
label2.ForeColor = Color.Red;
label2.Text = "无效的mac地址. mac地址格式:00-1E-C9-41-35-CD";
return;
}

byte[] mac_bytes = new byte[6];
for (int i =0; i < mac_strs.Length; i++)
{
mac_bytes[i] = byte.Parse(mac_strs[i], System.Globalization.NumberStyles.HexNumber);
}


// http://en.wikipedia.org/wiki/Wake-on-LAN
const int kMagicPacketLen = 102;
byte[] magic_packet = new byte[kMagicPacketLen];

byte[] header = {0xff,0xff,0xff,0xff,0xff,0xff};
Array.Copy(header,magic_packet,6);

for (int i=0; i < 16; i++)
{
Array.Copy(mac_bytes,0,magic_packet, 6+i*6,6);
}

IPAddress ip = IPAddress.Parse("255.255.255.255");
if (textBox2.Text.Length != 0) {
try
{
ip = IPAddress.Parse(textBox2.Text);
}
catch
{
ip = IPAddress.Parse("255.255.255.255");
}
}
IPEndPoint end_point = new IPEndPoint(ip, 80);
UdpClient udpClient = new UdpClient();
udpClient.EnableBroadcast = true;
int sent_bytes = udpClient.Send(magic_packet,kMagicPacketLen,end_point);
if (sent_bytes == kMagicPacketLen) {
label2.ForeColor = Color.Green;
label2.Text = "发送广播UDP网络包成功!";
} else {
label2.ForeColor = Color.Red;
label2.Text = "发送广播UDP网络包失败!";
}
}

private void textBox1_TextChanged(object sender, EventArgs e)
{
label2.Text = "";
}

private void textBox2_TextChanged(object sender, EventArgs e)
{
label2.Text = "";
}
}
}



  评论这张
 
阅读(653)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017