C#窗体程序,点击按钮通过使用对方的MAC地址和IP局域网UDP广播网络唤醒对方电脑主机的完整代码
时间: 2024-09-14 12:14:05 浏览: 59
在C#中创建一个窗体应用程序,通过UDP广播来唤醒另一台电脑,你需要使用`System.Net.Sockets`命名空间下的`UdpClient`类来进行广播操作。这里是一个基础示例,假设你已经有了两个按钮(一个用于发送广播,另一个用于接收并处理响应),以及必要的MAC地址和IP地址信息:
```csharp
using System;
using System.Net;
using System.Net.Sockets;
public partial class Form1 : Form
{
private UdpClient udpSender;
private UdpClient udpReceiver;
public Form1()
{
InitializeComponent();
// 初始化发送者和接收者UdpClient实例
udpSender = new UdpClient();
udpReceiver = new UdpClient(5000); // 接收端口,默认为5000
// 设置发送者的广播地址
IPEndPoint broadcastAddress = new IPEndPoint(IPAddress.Broadcast, 5000);
udpSender.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, true);
}
private void btnSend_Click(object sender, EventArgs e)
{
// 获取用户输入的IP和MAC地址
string ipAddress = "192.168.1.2"; // 改为你需要唤醒的电脑IP
string macAddress = "01:23:45:67:89:ab"; // 改为你需要唤醒的电脑的MAC地址
// 构建广播数据包
byte[] data = Encoding.ASCII.GetBytes($"Wakeup from MAC {macAddress} to IP {ipAddress}");
udpSender.Send(data, data.Length, broadcastAddress);
// 显示一条消息表示广播已经发送
MessageBox.Show("广播已发送");
}
private void btnReceive_Click(object sender, EventArgs e)
{
try
{
// 接受回应的数据
IPEndPoint remoteEP = udpReceiver.EndPoint;
byte[] buffer = udpReceiver.Receive(ref remoteEP);
// 解析接收到的数据
string message = Encoding.ASCII.GetString(buffer).TrimStart(new char[] { 'Wakeup', 'from', 'MAC', 'to', 'IP' });
Console.WriteLine($"Received response: {message}");
// 根据实际需求处理响应
// 这里只是简单地显示在控制台,你可以做更复杂的处理,如弹窗提示等
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
~Form1() // 析构函数释放资源
{
udpSender.Close();
udpReceiver.Close();
}
}
```
阅读全文