姓名:柴伟龙 学号: 指导老师:邹立杰 姓名:柴伟龙 学号: 指导老师:邹立杰 2012 毕业论文 ( 设计 ) 答辩
目录 系统介绍 1 需求分析 2 系统设计 3 具体实现 4 总结 5
远程系统 主控模块 被控模块 通讯模块
互联网的普及得到了飞速的发展,计 算机技术已广泛运用至人们日常的工作、 通讯中。如今远程控制软件应用范围越 来越广泛,可以进行远程办公、远程技 术支持、远程交流远程维护和管理等方 面的工作,为人们提供了便利。
基于 Java RMI 技术的远程协助系统 设计与实现,系统提出了基于 C/S Java RMI 技术的远程协助系统设计与实现的 完整解决方案。本课题 Java 远程方法调 用 (RMI) 的优点与结构, 并提出了如何实 现将其连接到现有的和原有的系统中的 方法以及如何编写客户端的程序以实现 远程调用的方法。进行远程控制控制端 通过输入被控制方的 ip 地址及端点,向 被控制方发起控制请求,被控制方接受 请求后,控制方即可在本机直接控制对 方机器。 本软件利用网络通信技术实现 了一个基于 C/S 的远程协助系统, 程序的开发采用面向对象的开发 技术,利用 JAVA 在 Windows XP/Windows 7 平台上开发,远程 控制部分采用基于客户机 / 服务器 的模式开发,网络通信部分采用 面向连接的传输控制协议 (Transmission Control Protocol , TCP) ,利用套接字 (Socket) 网络 通信技术开发。
RMI 即远程方法调用。是一种计算 机之间对象互相调用对方函数,启动 对方进程的一种机制,使用这种机制。 RMI 指的是远程方法调用 (Remote Method Invocation) 。它是一种机制, 能够让在某个 Java 虚拟机上的对象调 用另一个 Java 虚拟机中的对象上的方 法。如某一台计算机上的对象在调用 另外一台计算机上的方法时,使用的 程序语法规则和在本地机上对象间的 方法调用的语法规则一样。用此方法 调用的任何对象必须实现该远程接口。 JAVA RMI JAVA RMI 结构图
服务器 客户端 发送远程 控制请求 获取被控 端桌面 向客户端 发送接受 请求确认 信号 回应远程 控制请求
获取远程主机屏幕图像进行网络聊天通讯 控制远程键盘控制远程鼠标 主控模块客户 端
本系统的开发针对远程协助功 能在工业,家庭办公、企业管理等 各方面的广泛需求,随着网络技术 的进一步发展,网络速度越来越快, 家庭办公、远程技术支持,远程教 学和培训都将成为主流趋势。
对远程请 求进行回 应 对被控 桌面进 行实时 监视 实现鼠标和 键盘的操作 文本 聊天 选择断开连 接和最小化 远程窗口 远程主 机进行 操作
系统总体设计与功能结构 基于 Java RMI 技术的远程协助系统的总体功能 结构一共分为 3 个部分:主控模块,被控模块,通 讯模块。其中主控端包括两大大模块,即:接收好 友远程主机发送的桌面信息并绘制到组件显示,实 现监视功能的桌面显示模块和发送控制信息实现对 远程主机的控制功能模块。
主控端 显示远程桌面模块 开启远程控制截图按钮 远程控制模块 鼠标操作功能 单击控制双击控制滚轮控制拖拽控制按键按下控制按键抬起控制 关闭远程控制 显示远程桌面 键盘操作功能
主控端的核心部分,不仅需要读取输入流中的数据并解码,而且需要将 图片绘制到自己创建的容器中。除此之外,还要在容器中添加远程控制的开 关组件和调节发送速度的组件。 1. 显示远程桌面 ( 1 )读取输入流中的数据并解码。连接建立后,从输入流中读取的数据是 经过被控端编码后发送过来,因此需要解码才能将图片绘制到容器。 ( 2 )创建容器并绘制图片。创建的容器与图片的大小会不一致,因此需要 根据容器的大小计算图片的缩放比例。 2. 开关远程控制 对远程主机的控制在需要时开启,在不需要时关闭可以提高系统的灵活性, 因此需要在容器中添加开关按钮。 3. 截图 在远程窗口有一键截图的按钮,可以方便需要截图的使用。
鼠标操作功能 根据本地计算机的鼠标事件向 远程主机发送控制信息。 键盘操作功能 根据本地计算机的键盘事件向 远处主机发送控制信息。 让客户端用户通过鼠标控制服务 器端的计算机。其实现过程是客户端 软件先捕捉鼠标在图形化接口中的动 作,再将这些信息发送到服务器端, 最后服务器端的服务程序向操作系统 发送这个动作的消息,这样就如同在 服务器端的操作系统上进行了相应的 鼠标操作。
RMI 的简要实现过程 (1) 定义一个远程服务的接口 InterfaceRemote ,继承 Remote. (2) 实现定义的远程服务接口 InterfaceRemoteImpl ,同时继承 UnicastRemoteObject (3) 将接口和实现类编译,在其目录 ( 生成了.class 的目录 ) 下运行 rmic InterfaceRemoteImp, 会生成一个桩 ( stub ) InterfaceRemoteImpl_Stub.class (4) 创建一个 Server 端 InterfaceRemote interfactRemote = new InterfaceRemoteImpl(); Naming.rebind("rmi:// :1099/serve r", interfactRemote); ( 5) 创建一个 Client 端 InterfaceRemote testInterfactRemote = (InterfaceRemote) Naming.lookup("rmi:// :1099/serve r"); testInterfactRemote.add("rmia ", "rmib") (6) 生成了.class 的目录下执行 rmiregistry (7) 启动服务端 (8) 运行客户端
登录界面 输入账号密码后进行登录; 也可以点击注册账号,进入到 用户注册界面; 点击设置则进入设置界面;
设置界面 在登录前必须进行设置, 包括注册端口、总线程端 口和服务器 IP ,倘若没有 设置正确,软件将无法正 常运行。
当用户成功登录后,需要添加 好友才能与对方进行聊天和远 程协助,每个用户在主次之后 都会得到一个随机生成唯一的 账号号码,而添加好友也是通 过添加好友的账号来实现,在 主界面左下方有一个查找按钮
查找好友的界面输入对方的账 号进行查找 若账号存在且在线,则会显示 出对方的信息
双击主界面好友列表,则弹出 聊天窗口,即可向对方发送消 息和远程协助请求。 聊天窗口还可设置字体,向对 方发起窗口抖动。
作为主控端用户首先只需 要等待被控端发来远程协 助请求,当被控端发送远 程请求时会显示窗口询问 主控端是否接受对方的请 求。如果主控端接受了对 方的请求点击同意,双方 则建立连接,进行远程协 助控制。
通过 RMI 调用远程客户 端方法,远程连接主控 端定时通过 RMI 加载被 控制端屏幕,不断截图 获取远程客户端的操作 并发送到另一客户端。
此次毕业设计基本完成了一个基于 C/S 结构的基于 Java RMI 技术的远程协助系统,选择这个课题一方面是根据现在 远程控制的需要,要求用一种快速,安全,高效的途径解决 现行远程控制问题。 这个系统的实现依靠了很多最新的计算机技术,包括 JAVA 语言、 Java RMI 、 C/S 结构、 TCP/IP 协议等。主要实现了设 计论坛的一些基本操作,其中主要包括两个方面得操作:主 控端和被控端的操作。主控端主要是等待被控端的远程协助 请求,同意请求之后便可以进行远对被控端程控制。而在这 个系统设计中,最重要的就是图像的处理和传输,通过 RMI 调 用远程客户端方法,远程连接主控端定时通过 RMI 加载被控制 端屏幕重绘 panel_image ,不断截图获取远程客户端的操作并 发送到另一客户端。本系统有如下特点:方便,可靠,操作 简单,使用高效,稳定性,安全性,可扩展性良好。
最后,我首先要向导师邹立杰老师表示衷心的感谢。我的课题 是在导师老师的悉心指导下完成的。在本次毕业设计的每一个地 方都凝聚着老师的心血,没有老师的悉心指导,就没有本论文的 顺利完成。 感谢广州大学华软软件学院的各位老师,在他们的帮助下,使 这次我的毕业设计和论文能够顺利完成。 感谢广州大学华软软件学院的各位同学,大家的热情和团结对 我起到了极大的鼓舞和帮助。 最后向所有关心和我的组员们表示衷心感谢。最后, 感谢和我搭 档的每一个同学, 我们都付出了最大的努力, 完成了这个课题。
Thank you !