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

发布时间:2016-12-11 20:11:21 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"C#简单远程控制制作源代码程序以及思路(客户端)",主要涉及到C#简单远程控制制作源代码程序以及思路(客户端)方面的内容,对于C#简单远程控制制作源代码程序以及思路(客户端)感兴趣的同学可以参考一下。

远程控制的服务器端前面介绍过了 http://blog.csdn.net/a112634313/article/details/7941446 现在开始客户端的实现 客户端的实现也是很简单的,实现与服务器的socket连接然后接受服务器发送过来的消息,进行解析,运行写好的方法,就是客户端的实现原理。 客户端的界面非常简单,什么都没有,因为是做后台运行的软件,所以前台的界面都是多余的,只需要用程序来控制就可以了。 至于怎么把前台的界面隐藏起来就看前面已经写过的一篇文章,隐藏前台界面 http://blog.csdn.net/a112634313/article/details/7939049 好,现在开始客户端代码的实现。 首先是连接服务器的代码,这是少不了的。 [csharp] view plaincopyprint? 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();      }  }   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秒尝试与服务器连接一次,以免丢失连接。 然后就是接受服务器消息的方法 [csharp] view plaincopyprint? /// <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);          }       }  }   /// <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来选择不同的方法 [csharp] view plaincopyprint? 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;      }  }   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中方法,如果需要什么其他的功能都可以添加。 [csharp] view plaincopyprint? 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;  }   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

上一篇:Halloween Problem In Database
下一篇:Ubuntu 12.10 怎么用Root登录

相关文章

相关评论