利用Java实现远程控制
利用Java实现远程控制
摘 要: 介绍了远程控制的原理,详细地叙述了利用Java实现远程控制软件的程序设计方法和要点,并给出了要点的具体实现方法。
关键词: 远程控制;Java;客户机/服务器 The Implement of Remote Control Software by using Java Abstract: The principle of remote control software is introduced. The method and technique to implement remote control software by using Java are recited in detail. The implements of key points are presented.
Key words: Remote control; Java; Client/Server
我们知道有一些软件(如NetMeeting,PcAnywhere等)可以实现远程控制,通过共享桌面等形式,对远程主机做任何操作,就像控制本地的机器一样。这种控制技术在远程设备(软件)的维护、监控与故障诊断等方面有广泛的应用前景。由于Java语言具有良好的跨平台性,用Java语言编写的软件具有“一次编写,各处运行”的特点,所以,利用Java实现远程控制软件具有更广的实用性。笔者在开发一个网络型监控系统中,使用Client/Server模式,利用Java实现了远程控制软件,在Win2000/Win98/Linux和jdk1.4.1(能处理鼠标滚轮的事件) 环境
________________________________________________________________________________________ 1
下运行良好,客户机的屏幕在800×600,32位真彩色的模式下,在局域网中控制延时在1秒左右。现介绍一下设计原理和程序实现要点,以供同行们参考。 1 远程控制的原理
远程控制的原理[1]是:用户连接到网络上,通过远程访问的控制端程序发送控制端身份验证信息和与远程主机连接的要求,远程主机的被控端程序验证控制端身份,如果验证通过,就与控制端建立连接,并向控制端发送验证通过和已建立连接的信息。这时,控制端便可通过控制端程序监控或向远程主机发送要执行的指令,而被控端程序则执行这些指令,并把键
盘、鼠标指令和屏幕刷新传给控制端程序,控制端程序通过处理把主机屏幕等信息显示给用户看,使得用户就像亲自在远程主机上操作一样。如果没有通过身份验证,就不与控制端建立连接,用户也就不能远程控制主机了。
远程控制软件大都使用C/S模式。使用前需要将控制端程序安装到控制端计算机上,将被控端程序安装到被控端计算机上。它的控制过程一般是先在控制端上执行控制端程序,像一个普通客户一样向被控端计算机发出信号,建立一个特殊的远程服务,然后通过这个远程服务,使用各种远程控制功能发送远程控制命令,控制被控端计算机中各种应用程序的运行。这种远程控制方式称为基于远程服务的远程控制(RemoteControloverRemoteService)。
________________________________________________________________________________________ 2
2 用Java实现远程控制 2.1 总体设计
为了实现远程控制,被控端程序需要不断地把屏幕图象发送到控制端,并接收来自控制端的鼠标和键盘操作指令,然后按操作指令执行。控制端程序需要不断地接收被控端程序发送的屏幕图象,然后在控制端窗口中显示,并捕捉控制端的鼠标和键盘事件,然后传送到被控端。双方整个交互过程模型如图1所示。
控制端
图象显示 鼠标和键盘事件获取 被控端
鼠标和键盘事件模拟 屏幕截取 通信 通信 通信 通信 图 1 远程控制交互过程模型
2.2 所用到的java的包、类及方法介绍
用
到
的
包
有
java.lang,
java.io, java.net
java.awt,
和
java.awt.event,java.awt.image,javax.swing,
com.sun.image.codec.jpeg。重要的类有Robot(事件模拟类)、Toolkit(工具箱类)、JPEGCodec(jpeg图象编码/解码类)、UIManager(界面管理类)、Socket(套接字类)、ServerSocket(服务器套接字类)和InetAddress(Internet地址类)。
Robot类的重要方法有createScreenCapture(Rectangle screenRect)、mousePress (int buttons)、mouseRelease (int buttons)、mouseMove (int x, int y)、mouseWheel (int wheelAmt)、keyPress
3
(int keycode) 和keyRelease (int keycode) ,功能分别是捕获屏幕图象、按下鼠标键、松开鼠标键、移动鼠标键、旋转鼠标滚动轮、按下一特定键和松开一特定键。Toolkit类的重要方法有getDefaultToolkit().getScreenSize()
和
getDefaultToolkit().addAWTEventListener(),功能分别是得到屏幕的大小和把窗口事件处理委托给某个听众。 2.3 程序设计实现要点
2.3.1鼠标和键盘事件的获取及操作模拟
客户端程序需要不断地接收服务器端程序发送的屏幕图象,然后在客户端窗口中显示,并捕捉客户端在屏幕图象显示窗口中用户发出的鼠标和键盘指令。对于鼠标指令,可以通过让窗口组件对象把自己作为鼠标和鼠标运动听众加入来获得,具体如下: //加入鼠标听众
this.addMouseListener(new MouseListener(){ public void mousePressed(MouseEvent e) { //
向
被
控
端
发
送
MOUSE_PRESSED,e.getX(),e.getY(),e.getButton() }
public void mouseReleased(MouseEvent e) { //
向
被
控
端
发
送
MOUSE_RELEASED,e.getX(),e.getY(),e.getButton() }
4
});
//加入鼠标运动听众
this.addMouseMotionListener(new MouseMotionListener(){ public void mouseDragged(MouseEvent e) { //
向
被
控
端
发
送
MOUSE_DRAGGED,e.getX(),e.getY(),e.getButton() }
public void mouseMoved(MouseEvent e) { //
向
被
控
端
发
送
MOUSE_MOVED,e.getX(),e.getY(),e.getButton() } });
this.addMouseWheelListener(new MouseWheelListener(){ public void mouseWheelMoved(MouseWheelEvent e) { //
向
被
控
端
发
送
MOUSE_WHEELMOVED,e.getX(),e.getY(),e.getUnitsToScroll() } });
对于键盘指令,可以让窗口把自己作为听众加入来获得,具体如下:
Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener(){
5
…… 此处隐藏:1591字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [资格考试]机械振动与噪声学部分答案
- [资格考试]空调工程课后思考题部分整合版
- [资格考试]电信登高模拟试题
- [资格考试]2018年上海市徐汇区中考物理二模试卷(
- [资格考试]坐标转换及方里网的相关问题(椭球体、
- [资格考试]语文教研组活动记录表
- [资格考试]广东省2006年高应变考试试题
- [资格考试]LTE学习总结—后台操作-数据配置步骤很
- [资格考试]北京市医疗美容主诊医师和外籍整形外科
- [资格考试]中学生广播稿400字3篇
- [资格考试]CL800双模站点CDMA主分集RSSI差异过大
- [资格考试]泵与泵站考试复习题
- [资格考试]4个万能和弦搞定尤克里里即兴弹唱(入
- [资格考试]咽喉与经络的关系
- [资格考试]《云南省国家通用语言文字条例》学习心
- [资格考试]标准化第三范式
- [资格考试]GB-50016-2014-建筑设计防火规范2018修
- [资格考试]五年级上册品社复习资料(第二单元)
- [资格考试]2.对XX公司领导班子和班子成员意见建议
- [资格考试]关于市区违法建设情况的调研报告
- 二0一五年下半年经营管理目标考核方案
- 2014年春八年级英语下第三次月考
- 北师大版语文二年级上册第十五单元《松
- 2016国网江苏省电力公司招聘高校毕业生
- 多渠道促家长督导家长共育和谐 - 图文
- 2018 - 2019学年高中数学第2章圆锥曲线
- 竞争比合作更重要( - 辩论准备稿)课
- “案例积淀式”校本研训的实践与探索
- 新闻必须客观vs新闻不必客观一辩稿
- 福师大作业 比较视野下的外国文学
- 新编大学英语第二册1-7单元课文翻译及
- 年产13万吨天然气蛋白项目可行性研究报
- 河南省洛阳市2018届高三第二次统一考试
- 地下车库建筑设计探讨
- 南京大学应用学科教授研究方向汇编
- 2018年八年级物理全册 第6章 第4节 来
- 毕业论文-浅析余华小说的悲悯性 - 以《
- 2019年整理乡镇城乡环境综合治理工作总
- 广西民族大学留学生招生简章越南语版本
- 故宫旧称紫禁城简介




