内容摘要:

  • 利用开源软件properJavaRDP实现远程桌面连接
  • 如何让Applet嵌入到网页中正常运行
  • 如何处理连接win7时的异常:Wrong modulus size! Expected 64+8got:264

正文:

  客户提出这样一个功能,要求在网页中打开远程桌面。

  首先想到的是有没有这方面开源软件,于是上网搜了一下,于是找到了rdesktopproperJavaRDP这两个实现了RDP协议的JAVA项目。properJavaRDP是基于rdesktop的,使用起来比较简单。可以在linux,windows,mac下运行,几乎可以远程连接到所有windows版本。

    第一步,下载jar包。

  下载地址:http://sourceforge.net/projects/properjavardp/files/properjavardp/1.1/

  注意,只需要下载properJavaRDP-1.1.jar和properJavaRDP14-1.1.jar这两个jar就可以了。

  下载log4j-java11,地址:http://sourceforge.net/projects/properjavardp/files/log4j-java11/1.5.3/

  下载java-getopt-1.0.14.jar,地址:http://www.urbanophile.com/arenn/hacking/getopt/java-getopt-1.0.14.jar

  第二步,修正连接win7时的错误。

  在eclipse中新建一个Java Project,导入jar包,找到net.propero.rdp包下的Rdesktop.java右键Run As——>Run Configurations,在弹出的界面中选择Arguments,在Program arguments中填入IP及端口,例如122.232.242.172:3389,就可以打开远程桌面了。

  但是如果你连接的主机是win7或者win2008时,就会出现如下错误:

  Wrong modulus size! Expected 64+8got:264!

  官方也给出了这个问题的补丁,地址:http://sourceforge.net/p/properjavardp/patches/1/

  将补丁中给出的Secure.java重新编译成class文件,替换properJavaRDP-1.1.jar中的同名文件即可解决此问题。

  第三步,在网页中通过Applet实现远程桌面。

  新建一个web project。在webRoot下新建一文件夹,名字随便,我这里叫applet。将上面修正过的4个jar包放到applet下。    

  注意:由于html访问不到WEB-INF目录中的内容,所以jar包不能发到WEB-INF/lib下。

  目录结构如图:

      

  在index.jsp中嵌入net.propero.rdp.applet.RdpApplet.class,代码如下:

<applet
code="net.propero.rdp.applet.RdpApplet.class"
codebase="applet"
archive="java-getopt-1.0.14.jar,log4j-java1.1.jar,properJavaRDP-1.1.jar,properJavaRDP14-1.1.jar"
width = "800"
height = "800"
name="webRDP"
>
<param name="server" VALUE="12X.23X.24X.17X"/>
<param name="port" value="3389"/>
</applet>

  将代码部署到tomcat中,启动后,在网页中访问index.jsp页面。

  首次打开,浏览器会提示装JAVA插件,点击安装。JAVA插件是必须需要安装的,否则无法运行applet。

  安装java插件后重启浏览器,重新访问index.jsp,出现安全警告,勾选,运行。

  

还有可能会有如下警告:

  

这时候,即使我们选不阻止,浏览器也不会允许这个程序运行,这是因为程序依赖的jar不被信息。所以需要对jar进行数字签名来使浏览器信任此程序。

还有可能遇到下面异常:Java.lang.SecurityException: trusted loader attempted to load sandboxed resource from http://xxxx:xx/xx/xx.jar。

或者Exception in thread "Thread-43" java.security.AccessControlException: access denied ("java.util.PropertyPermission" "gnu.posixly_correct" "read")

以及BlockedException,都可能是由于没有数字签名引起的。

数字签名参考此链接:http://blog.csdn.net/dongzi87/article/details/9140361

  第四步,页面转换。

  这一步一定不能忽略。转换之后的页面对浏览器更友好,兼容性更好。

    就我的经历而言,前面几步反复试了几次,还是会有SecurityException或者BlockedException之类的异常。页面转换之后,程序可以正常运行了。

  所以如果前面几步没有成功,也不要灰心,尝试转换下页面试试。

  运行JAVA安装目录下bin文件夹下面的HtmlConverter.exe,对index.jsp进行转换。

  转换为object的方式嵌入。

<object
classid = "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
codebase = "http://java.sun.com/update/1.6.0/jinstall-6u27-windows-i586.cab#Version=6,0,0,7"
WIDTH = "800" HEIGHT = "800" NAME = "webRDP" ALIGN = "top" >

  至此,大功告成。

补充:

  1、applet调试:可以在eclipse中Debug As——>Java Applet来进行运行和调试.如果applet在eclipse中能正常运行,而在页面运行时出现上面提到的异常,除了检查代码正确性之外,可以通过对jar包数字签名和页面装换来解决.不要通过编码是形式来对applet提升权限.

  applet在页面中运行,可以通过java控制台来查看异常.如果没有打开,在控制面板---java---高级中打开控制台,如图:

  

  2、相关code:https://code.google.com/p/lixia-javardp/

      

      

  

  

  

  

  

[properJavaRDP]在网页中实现远程连接的更多相关文章

  1. ubuntu中不能远程连接解决

    今天装好ubuntu19.04之后不能远程连接,网上找了很久终于自己解决了.ap 步骤如下:希望对各位有用,哪里不对请指出 第一步我们需要加载openssh-server   等待加载完毕后,     ...

  2. MySql中允许远程连接

    要达到这个目的需要实现两点 开通用户权限 解除本地绑定 开通用户权限 首先登陆服务器端的mysql //不使用空格可以直接登陆 mysql -u用户名 -p密码 mysql> use mysql ...

  3. virtualbox虚拟机中mysql远程连接登陆报2003错误的解决方法

    最近在virtualbox中安装了Ubuntu 14,配置了一个mysql server,设置的桥接网络模式.在其他电脑连接的时候,总是报2003错误.开始以为是localhost没有置换为%,运行u ...

  4. 在网页中插入qq连接

    <a href="tencent://message/?uin=这里写qq号 &Site=这里随便七个名字 &Menu=要为yes">显示出来的名字&l ...

  5. CentOS 7中允许远程连接mariadb数据库

    # /etc/init.d/mysql restart 或者 service mysqld start 启动服务 # /etc/init.d/mysql stop 或者 service mysqld ...

  6. sql server 在作业中 远程连接 oracle mysql sqlserver 数据库

    在作业中执行远程连接时,需要对本次作业执行的步骤指定特定用户 并且该用户必须拥有所需操作数据库的db_owner角色,和服务器sysadmin角色 在作业中执行远程连接时,需要做登录映射 下面是我在作 ...

  7. linux远程连接mysql数据库

    在linux系统中,远程连接mysql数据库时不仅需要开启ip访问,还需要将防火墙中添加相应规则 在wdlinux中的[安全管理]菜单下选择[防火墙[iptables]]选项,增加端口为3306的规则 ...

  8. 电脑远程连接windows阿里云服务器解决卡顿【小白教程】

    我们在阿里云服务器网页上进行远程连接进行操作,会卡顿.解决办法如下: 1.登录阿里云服务器,进入服务器控制台,复制服务器IP:  2.回到桌面,打开cmd命令窗口,输入mstsc  3.在‘’计算机’ ...

  9. Xshell远程连接的具体操作和Xshell多会话设置小技巧

    前几天给大家分享了Xshell的安装教程,今天给大家分享如何在Xshell中进行远程连接,并且分享一下如何设置一条命令可以发送多个终端,这里以Xshell6为例进行说明,具体的教程如下. 1.依次点击 ...

随机推荐

  1. Mac下charles安装及配置

    一.下载地址 https://www.charlesproxy.com/download/ 激活码 Registered Name: https://zhile.io License Key: 488 ...

  2. MySQL高可用复制管理工具 —— Orchestrator介绍

    背景 在MySQL高可用架构中,目前使用比较多的是Percona的PXC,Galera以及MySQL 5.7之后的MGR等,其他的还有的MHA,今天介绍另一个比较好用的MySQL高可用复制管理工具:O ...

  3. redo/declare/typeset

    变量设置功能,都是由命令行直接设置的,那么,可不可以让使用者能够经由键盘输入? 什么意思呢?是否记得某些程序执行的过程当中,会等待使用者输入 "yes/no"之类的讯息啊? 在 b ...

  4. C# 添加、修改以及删除Excel迷你图表的方法

    Excel表格中的迷你图表能够直观地向我们展示出数据的变化趋势.本文将介绍C#如何实现为表格数据生成迷你图表,以及修改和删除迷你图表的方法.下面将详细讲述. 所用组件工具:Spire.XLS for ...

  5. 学JAVA第三天,JAVA第二章《JAVA数据类型》

    ---恢复内容开始--- <JAVA数据类型> 我们一般都用int类型,因为int类行一般的日常生活的数据都能满足了. 当然,想李嘉诚,马云这种有钱人,int类行就不能满足帮他记钱的了,像 ...

  6. Java中的锁——锁的分类

    Java中有各种各样的锁,例如公平锁.乐观锁等等,这篇文章主要介绍一下各种锁的分类. 按照其性质分类 公平锁/非公平锁 公平锁是指多个线程按照申请锁的顺序来获取锁. 非公平锁是指多个线程获取锁的顺序并 ...

  7. MatrixTree速成

    前言 MatrixTree定理是用来解决生成树计数问题的有利工具 比如说这道题 MatrixTree定理的算法流程也非常简单 我们记矩阵\(A\)为无向图的度数矩阵 记矩阵\(D\)为无向图的邻接矩阵 ...

  8. 为什么AI的翻译水平还远不能和人类相比?

    为什么AI的翻译水平还远不能和人类相比? https://mp.weixin.qq.com/s/0koIt-qu9IOVxNhbFcZr1Q 作者 | SHARON ZHOU 译者 | 王天宇 编辑 ...

  9. 通过Arcpy在ArcMap工具箱中添加脚本计算面图层的起终点坐标

    关键词: Arcpy,ArcMap Toolbox, Coordinates of Polygon 需求分析: Arcmap中添加有三个图层:图层“GY乡级河道”(面图层)是全县13个乡镇全部的乡级河 ...

  10. OpenTK学习笔记

    OpenGL定义 OpenGL被定义为"图形硬件的一种软件接口".实质上是3D图形和模型库,具有高度可移植性,具有非常快的速度. OpenGL架构 术语pipeline常用于阐述彼 ...