`
zhangfeilo
  • 浏览: 399722 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
社区版块
存档分类
最新评论

[properJavaRDP]在网页中实现远程连接

 
阅读更多

内容摘要:

  • 利用开源软件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/

 

分享到:
评论
1 楼 jcbingjc 2018-12-05  
楼主,你好,按照上面的配置,我报如下错误:
Missing Permissions manifest attribute in main jar: http://localhost:8080/myWEB/applet/properJavaRDP-1.1.jar
0 [Thread-46] INFO net.propero.rdp.RDPClientChooser  - RDPClientChooser
1 [Thread-46] INFO net.propero.rdp.RDPClientChooser  - RDPClientChooser.RunNativeRDPClient
88 [Thread-46] INFO net.propero.rdp  - properJavaRDP version 1.1
88 [Thread-46] INFO net.propero.rdp  - Java version is 1.8
88 [Thread-46] INFO net.propero.rdp  - Operating System is Windows 10 version 10.0
130 [Thread-46] INFO net.propero.rdp  - Connecting to 10.0.0.40:3389 ...
请问是我哪里配错了吗?

相关推荐

    Java实现调用远程桌面示例

    本篇将深入探讨如何利用`properJavaRDP`这个开源项目来在Java中实现调用远程桌面。 `properJavaRDP`是一个用Java编写的远程桌面协议(RDP)客户端,它提供了对Windows远程桌面服务的访问支持。此项目旨在提供一个...

    Java实现远程桌面连接

    Java实现远程桌面连接的properjavardp源码工程,可直接运行。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...

    java远程桌面连接

    同时,限制访问权限,只允许授权用户进行远程连接。 2. **性能优化**:减少数据传输量,例如只传输屏幕变化的部分,而不是整个屏幕;使用高效的序列化和反序列化算法;优化网络连接,如使用更快的协议,减少延迟。 ...

    java 远程桌面功能实现

    该库基于JNA(Java Native Access)技术,能够调用操作系统级别的RDP接口,实现与Windows、Linux等系统之间的远程连接。 3. **JNA(Java Native Access)**: JNA是Java平台上的一个库,允许Java代码直接调用操作...

    properJavaRDP-1.1.jar

    properJavaRDP-1.1.jar

    properJavaRDP_properJavaRDP二次开发_

    ProperJavaRDP是一款开源的Java实现的远程桌面协议(RDP)客户端,它允许用户通过Java应用程序连接到Windows服务器进行远程操作。这个压缩包文件"properJavaRDP"显然是对原项目进行了二次开发,旨在修复已知的bug并...

    properJavaRDP

    描述中提到"properJavaRDP"的源代码具有极高的研究价值,这表明它在Java RDP领域的设计和实现上有独到之处。项目被描述为其他在线Java远程终端软件的基础,意味着它可能包含了一些关键的算法或组件,这些是构建类似...

    ProperJavaRDP.zip

    在描述中提到,这个压缩包是从官方网站下载的“javardp”,意味着它是一个用Java实现的RDP客户端。Eclipse是一个广泛使用的Java集成开发环境(IDE),程序员可以在这里编写、调试和运行Java代码。由于项目已经预设为...

    properJavaRDP14-1.1.jar

    properJavaRDP14-1.1.jar

    properjavardp-code-36-trunk

    properjavardp-code-36-trunk

Global site tag (gtag.js) - Google Analytics