unity 3D 远程关机

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/w1212134134/article/details/52211613

远程关机的方法很多。首先就是调用系统的运行命令。其次也可以费别写一个服务端和客户端,当然我们也可以借助第三方插件来实现远程关机。

第一种(调用系统的运行命令)

这个就非常简单了,直接打开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);//错误信息
        }
    }
}



总之,需要根据我们的需求来选择方法。

展开阅读全文

没有更多推荐了,返回首页