using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Net;
using UnityEngine;
using System.Diagnostics;
namespace 远程唤醒开机
{
///
/// MainWindow.xaml 的交互逻辑
///
public class contralPC : MonoBehaviour
{
//局域网开机
public static void WakeUp(byte[] mac)
{
UdpClient client = new UdpClient();
client.Connect(IPAddress.Broadcast, 9090);
//MessageBox.Show(IPAddress.Broadcast.ToString());
byte[] packet = new byte[17 * 6];
for (int i = 0; i < 6; i++)
packet[i] = 0xFF;
for (int i = 1; i <= 16; i++)
for (int j = 0; j < 6; j++)
packet[i * 6 + j] = mac[j];
int result = client.Send(packet, packet.Length);
}
//局域网关机(被关机电脑需要在启动项里放closepc.exe)
public static void TCPClientSendStr(string ip, int port, string Order)//line-tcp-string
{
try
{
Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//clientSocket.Connect(PCip, PCport);
byte[] Sendmsg = Encoding.UTF8.GetBytes(Order);
//byte[] Sendmsg = Encoding.Default.GetBytes(Order);
IAsyncResult result = clientSocket.BeginConnect(IPAddress.Parse(ip), port, null, null);
bool connected = result.AsyncWaitHandle.WaitOne(1000, false);
UnityEngine.Debug.Log(connected);
if (connected)
{
clientSocket.EndConnect(result);
// for (int i = 0; i < 2; i++)
//{
clientSocket.Send(Sendmsg);
// }
clientSocket.Close();
}
else
{
clientSocket.Close();
}
}
catch (Exception e)
{
UnityEngine.Debug.Log(e);
return;
}
print("正在关机ip为:" + "192.168.1.110" + "的主机");
}
//开机按钮
//通过cmd发送命令“ipconfig/all”获取当前电脑的mac地址
//被控制开机的电脑mac地址:60-45-CB-80-F7-8C
public void onbuttonOpenPC_Click()
{
byte[] mac = new byte[6];
mac[0] = 0x60;
mac[1] = 0x45;
mac[2] = 0xCB;
mac[3] = 0x80;
mac[4] = 0xF7;
mac[5] = 0x8C;
//唤醒两次是为了防止有时候没接收到
WakeUp(mac);
WakeUp(mac);
print("正在唤醒mac地址为:" + mac + "的电脑");
}
//关机按钮
public void onbuttonClosePC_Click()
{
TCPClientSendStr("192.168.1.110", 8000, "shutdown");
}
}
}
控制关机需要把链接下的小工具(closepc.exe)放到被控制关机的主机启动项即可
软件百度网盘链接:https://pan.baidu.com/s/1_88YJQgwhmeX0njm903Mlg
提取码:13i6
Unity里(端口8000)用tcp发送一个”shutdown”,即会关机