远程关机的方法很多。首先就是调用系统的运行命令。其次也可以费别写一个服务端和客户端,当然我们也可以借助第三方插件来实现远程关机。
第一种(调用系统的运行命令)
这个就非常简单了,直接打开cmd.exe文件,写入关机命令就行了。
System.Diagnostics.Process p = new System.Diagnostics.Process(); p.StartInfo.FileName = "cmd.exe"; p.StartInfo.Arguments = "/c " + "shutdown -s -m\\192.168.1.255 -t 0";//0秒后关闭ip地址为192.168.1.255的计算机 p.Start();//就是这么简单。第二种(服务端和客户端)
这种方式是基于第一种方法的,因为也是通过cmd命令来达到关机的。通过客户端给服务端发送的消息,服务端识别客户端发送的消息来响应对应的方法。只是把写入的shutdown语句换一换就可以了。
p.StartInfo.Arguments = "/c " + "shutdown -p"//直接关机 第三种(借助第三方插件来实现)把拥有网络的通信的软件安装到你要远程关机的计算机上面(本人安装的是 ishutdown 这个软件,并下载了一个网络打印机)。通过TCP协议和这个软件的通信达到关机功能的实现。
using System.IO; using System.Net.Sockets; using System.Text; using UnityEngine; using UnityEngine.UI; public class Shutdown : MonoBehaviour { public Text ip;//ip地址 public int port = 4505;//端口号 public void OnShutDownComputer() { try { TcpClient tcpClient = new TcpClient(); tcpClient.Connect(ip.text, port); Debug.Log("连接完成"); //Connect方法使用指定的IP地址和端口号将客户端连接到远程TCP主机 //读入控制台输入的文字 string str = "shutdown"; Stream stm = tcpClient.GetStream(); //定义数据流,用于发送和接收数据 ASCIIEncoding AS = new ASCIIEncoding(); //将字符串转换为byte类型 byte[] b = AS.GetBytes(str); //Write(参数1,参数2,参数3)表示向服务端发送字符串 //参数1指将此数组复制到当前流,参数2指从零开始的字节偏移量,参数3指要写入当前流的字节数(即字符串长度) stm.Write(b, 0, b.Length); Debug.Log("发送完成"); } catch (System.Exception e) { print("错误信息:" + e.Message);//错误信息 } } }
总之,需要根据我们的需求来选择方法。