远程控制程序
功能描述
-
界面控制
被控制端实时向控制端传输界面,控制端接收界面,并显示,以达到监控效果。 -
鼠标键盘事件控制
控制端发送事件给被控制端,被控制端接收事件,并且执行,达到控制效果。
功能实现
-
界面监控
- 实现原理:
- 界面监控原理:截图方式。被控制端对本机进行全屏截图,并且将图片发送给控制端,控制端接收并显示。
- 传输方式:通过TCP方式进行传输。使用ServerSocket和Socket进行传输图片对象。
- 代码实现:
- 界面截图:
Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); Robot robot = new Robot();// 自动化类,可用于截图,模拟点击等 img = new ImageIcon(robot.createScreenCapture(new Rectangle(0, 0, (int) d.getWidth(), (int) d.getHeight())));// 截取屏幕
- 传输:
// 控制端(界面接收端) ServerSocket receive = new ServerSocket(9999); socket = receive.accept(); ois = new ObjectInputStream(socket.getInputStream()); img = (ImageIcon) ois.readObject(); /*--------------------------------邪恶分割线---------------------------------------------*/ // 被控制端(界面发送端) socket = new Socket("192.168.1.145", 9999); img = new ImageIcon(robot.createScreenCapture(new Rectangle(0, 0, (int) d.getWidth(), (int) d.getHeight())));// 截取屏幕 oos = new ObjectOutputStream(socket.getOutputStream()); oos.writeObject(img);
- 界面截图:
- 实现原理:
-
事件监控
- 鼠标键盘事件监听:通过Swing,给JLabel(用来显示界面)添加鼠标键盘监听事件,监听鼠标键盘操作。
- 鼠标键盘事件传输:与界面传输相同,传输InputEvent类型对象(鼠标事件及键盘事件)。
- 鼠标键盘事件模拟:通过Robot类可以模拟鼠标键盘事件的执行。
不足及改进
- 不足
- 界面传输效率不高。表现为卡顿现象。
- 控制端及被控制端之间,进行控制时,坐标不能准确对应。表现为被控端及控制端鼠标光标位置不对应。
- 改进
- 通过更换更快的网路提高传输速度;通过多线程,打开多个线程同时进行传输界面。
- 根据控制端及被控制端的分辨率,进行比例调整。