C#简单远程控制制作源代码程序以及思路(客户端)
2013-09-09 15:47
555 查看
远程控制的服务器端前面介绍过了
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();
}
}
然后就是接受服务器消息的方法
[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);
}
}
}
下面开始操作,根据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;
}
}
[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;
}
这个是每隔几秒打开网页的实现。这就是客户端的实现方法,需要什么功能,只需要在服务器定义好,然后在客户端写好实现的方法,那么完善就很简单了。
源代码下载地址以及Exe程序
http://download.csdn.net/detail/a112634313/4547248
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
相关文章推荐
- C#简单远程控制制作源代码程序以及思路(服务器端)
- C#实现简单远程控制及桌面监控功能(客户端)
- C# 一个简单分词程序的思路和代码(六) 源代码 ,测试程序,词库下载地址
- c#安装程序以及卸载程序的制作
- 使用tinymini210开发远程的温度监控系统,实现C#和安卓客户端显示数据和控制
- 源代码学习总结之PC远程控制程序
- C#简单实现的远程命令程序
- web MVC程序开发增删改查参考代码。思路是面向对象思想,以及在HTML代码中嵌入C#代码
- C# 一个简单分词程序的思路和代码(二) 键树
- C#投票作弊程序制作思路
- C#中使用Windows API控制阿里旺旺自动登录 的程序源代码
- C#:一个增强的TcpClient(*)客户端演示程序及源代码下载
- 发布C#语言写的智能客户端程序源代码
- C# 一个简单分词程序的思路和代码(一)
- C#制作简单的看门狗程序
- 第三页(客户端) :远程资源管理器 c#应用源代码,SERVICE + CLIENT 模式 可实现远程文件管理,下载功能
- 一个简单的UDP程序—C++服务器和C# .NET客户端
- C# 一个简单分词程序的思路和代码(四) 键树 查询记录
- 一个简单的TCP客户端、服务端会话程序(C#)
- C#.NET的N层结构程序开发思路(C# + Access带源代码)