C#简单远程控制制作源代码程序以及思路(客户端)
远程控制的服务器端前⾯介绍过了
现在开始客户端的实现
客户端的实现也是很简单的,实现与服务器的socket连接然后接受服务器发送过来的消息,进⾏解析,运⾏写好的⽅法,就是客户端的实现原理。
客户端的界⾯⾮常简单,什么都没有,因为是做后台运⾏的软件,所以前台的界⾯都是多余的,只需要⽤程序来控制就可以了。
⾄于怎么把前台的界⾯隐藏起来就看前⾯已经写过的⼀篇⽂章,隐藏前台界⾯
好,现在开始客户端代码的实现。
⾸先是连接服务器的代码,这是少不了的。
[csharp]
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秒尝试与服务器连接⼀次,以免丢失连接。然后就是接受服务器消息的⽅法
[csharp]
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来选择不同的⽅法
[csharp]
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中⽅法,如果需要什么其他的功能都可以添加。[csharp]
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("" + 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("" + 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程序

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。