如何控制对方计算机,有程序人员自己定义.,这里给出核心技术代码并且实现部分控制功能.
这里我们把运行在我们自己电脑上的控制程序叫 Server 被管理电脑运行的程序叫Client
(1)既然是远程控制 那么 得让你和被管理的计算机之间有连接
(2)有了连接 我们就在我们的Server端发送命令来做我们想要做的事
(3)Client端接收到我们在Server端发送的命令后,在被管理电脑上进行操作,将结果返回给Server端
那么,我们就来一步一步的来实现
打开studio2005新建一个控制台程序取名 Server
以下是Server端程序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
using System; using System.Collections.Generic; using System.Text; using System.Net; using System.Net.Sockets; namespace Server { class Program { static void Main( string [] args) { IPAddress ipAd = IPAddress.Parse( "10.3.128.240" ); // 把IP地址转换为IPAddress的实例 // 初始化***, 端口为8888 TcpListener myList = new TcpListener(ipAd, 8888); // 开始监听服务器端口 myList.Start(); // 输出服务器启动信息 Console.WriteLine( "在8888端口启动服务..." ); Console.WriteLine( "本地节点为:" + myList.LocalEndpoint); Console.WriteLine( "等待连接....." ); // 等待处理接入连接请求 // 新建立的连接用套接字s表示 Socket s = myList.AcceptSocket(); Console.WriteLine( "连接来自 " + s.RemoteEndPoint); //发送命令 while (s.Connected) { ASCIIEncoding asen = new ASCIIEncoding(); Console.WriteLine( "请输入指令:n" ); s.Send(asen.GetBytes(Console.ReadLine())); //接收返回信息 byte [] b = new byte [100]; int k = s.Receive(b); for ( int i = 0; i < k; i++) { Console.Write(Convert.ToChar(b)); } Console.WriteLine( "n已发送命令" ); } } } } |
以下是Client端程序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
using System; using System.Collections.Generic; using System.Text; using System.Net; using System.Net.Sockets; using System.IO; namespace Client { class Program { static void Main( string [] args) { // 新建客户端套接字 TcpClient tcpclnt = new TcpClient(); Console.WriteLine( "连接....." ); // 连接服务器 tcpclnt.Connect( "10.3.128.240" , 8888); Console.WriteLine( "已连接" ); // 得到客户端的流 Stream stm = tcpclnt.GetStream(); // 接收从服务器返回的信息 while (tcpclnt.Connected) { byte [] bb = new byte [100]; int k = stm.Read(bb, 0, 100); string a = null ; for ( int i = 0; i < k; i++) { a += Convert.ToChar(bb); } switch (a) { case "time" : ASCIIEncoding asen= new ASCIIEncoding(); byte [] ba=asen.GetBytes(DateTime.Now.TimeOfDay.ToString()); stm.Write(ba, 0, ba.Length); break ; default : break ; } } 这段代码运行后 我们在Server端输入 time 就可以得到对方的系统时间 当然你可以在
这里多加些case来处理不同的命令来做更多的事 比如 关闭计算机 得到当前的进程列表什么的 当然你也可以通过修改注册表来实现client 的开机自启动 或者让client自己想多个地方复制,比如U盘什么的,就有了自动传播的功能 很多功能只要去研究,大家都可以去实现 |
文章评论(0条评论)
登录后参与讨论