Applet在web页面打开远程桌面前端测试代码【备忘】
来源:互联网 发布:双卡能同时使用4g网络 编辑:程序博客网 时间:2024/05/17 00:06
曾经用Applet在web页面打开远程桌面的前端测试代码,后台代码无法公开,仅作备忘。
RdpApplet.java:
package com.elusiva.rdp.applet;import java.applet.Applet;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Graphics;import java.awt.TextArea;import java.io.ByteArrayOutputStream;import java.io.FilterOutputStream;import java.io.IOException;import java.io.OutputStream;import java.io.PrintStream;import java.net.MalformedURLException;import java.net.URL;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.StringTokenizer;import com.elusiva.rdp.Common;import com.elusiva.rdp.OrderException;import com.elusiva.rdp.RdesktopException;import com.elusiva.rdp.RdesktopSwing;public class RdpApplet extends Applet {private final String rdpShellPath = "C:\\Program Files\\XXX\\Open Virtual Desktop\\rdpshell.exe";private RdpThread_2 rThread = null;private String[] argArray = null;private List<String> argList = new ArrayList<String>(); TextArea aTextArea = null; PrintStream aPrintStream = null; public void paint(Graphics g){ g.setColor(new Color(0xFFFFFF)); g.fillRect(0,0,g.getClipBounds().width,g.getClipBounds().height); g.setColor(new Color(0x000000)); int width = g.getFontMetrics().stringWidth("Launching isoft IVAPP Everywhere session..."); int x = (int) (g.getClipBounds().getWidth() / 2) - (width/2); int y = (int) (g.getClipBounds().getHeight() / 2); if(!redirectOutput) g.drawString("Launching isoft IVAPP Everywhere session...", x, y); width = g.getFontMetrics().stringWidth("Connect to Server..."); x = (int) (g.getClipBounds().getWidth() / 2) - (width/2); y = (int) (g.getClipBounds().getHeight() / 2) + 20; if(!redirectOutput) g.drawString("Connect to Server...", x, y); } boolean redirectOutput = false; public void init(){ redirectOutput = isSet("redirectOutput"); if(redirectOutput){ aPrintStream = new PrintStream( new FilteredStream(new ByteArrayOutputStream() ) ); System.setOut(aPrintStream); System.setErr(aPrintStream); aTextArea = new TextArea(); setLayout(new BorderLayout()); add("Center" , aTextArea); } initArgArray(); //getargArray(); } public void initArgArray() {String url = this.getParameter("url");System.out.println("url=" + url);Map<String, String> params = null;params = RequestServer.doRequest(url);// 获取用户账号参数argList.add("-u");argList.add("31" + params.get("loginName"));// 获取用户密码参数argList.add("-p");argList.add(params.get("loginPassword"));argList.add("-fsmc");//获取应用程序pathargList.add("-s");argList.add(rdpShellPath+" "+params.get("appExePath"));//获取IP参数argList.add(params.get("ip"));argArray = new String[argList.size()];Object[] objList = argList.toArray();int j = 0;for (Object o : objList) {argArray[j++] = o.toString();System.out.print(o.toString());}} public void start(){ Common.underApplet = true; rThread = new RdpThread_2(argArray, this.getParameter("redirect_on_exit"), this); rThread.start(); } public void stop(){ rThread = null; notify(); } private boolean isSet(String parameter){ String s = this.getParameter(parameter); if(s != null){ if(s.equalsIgnoreCase("yes")) return true; } return false; } class FilteredStream extends FilterOutputStream { public FilteredStream(OutputStream aStream) { super(aStream); } public void write(byte b[]) throws IOException { String aString = new String(b); aTextArea.append(aString); } public void write(byte b[], int off, int len) throws IOException { String aString = new String(b , off , len); aTextArea.append(aString); } } }class RdpThread extends Thread{ String[] args; String redirect = null; Applet parentApplet = null; public RdpThread(String[] args, String redirect, Applet a){ parentApplet = a; this.args = args; this.redirect = redirect; } public void run(){ this.setPriority(Thread.MAX_PRIORITY); try { RdesktopSwing.main(args); if(redirect != null){ URL u = new URL(redirect); parentApplet.getAppletContext().showDocument(u); } } catch (OrderException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (RdesktopException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (MalformedURLException e) { // TODO Auto-generated catch block System.err.println(e.getClass().getName() + ": " + e.getMessage()); e.printStackTrace(); } Common.underApplet = false; }}
RequestServer.java:
package com.elusiva.rdp.applet;import java.io.IOException;import java.io.InputStream;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;import java.util.Iterator;import java.util.Map; public class RequestServer { public static void main(String[] args) throws IOException {String requestURL = "http://192.168.210.201/sm/webservices/server_random.php?type=windows&sid=1293712837Q5yTs";doRequest(requestURL);} public static Map<String,String> doRequest(String requestURL) { Map<String,String> params = null;try {//创建URLURL url = new URL(requestURL);//打开URL连接 URLConnection connection = url.openConnection(); /* * 然后把连接设为输出模式。URLConnection通常作为输入来使用,比如下载一个Web页。 * 通过把URLConnection设为输出,可以把数据向某个Web页传送,如下: */ connection.setDoOutput(true); // 一旦发送成功,用以下方法就可以得到服务器的回应: InputStream is = connection.getInputStream(); //解析XML获取参数 params = XMLReader.ParseXML(is);} catch (MalformedURLException e) {System.out.println("创建URL失败!");} catch(IOException e){System.out.println("打开连接失败!");}return params; } }
XMLReader.java:
package com.elusiva.rdp.applet;import java.io.InputStream;import java.util.HashMap;import java.util.Map;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.NodeList;public class XMLReader {private final static Map<String,String> params = new HashMap<String,String>();public static Map<String,String> ParseXML(InputStream is) {try {DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = factory.newDocumentBuilder();Document doc = builder.parse(is);//以去掉XML文档中作为格式化内容的空白doc.normalize(); NodeList links = doc.getElementsByTagName("server");Element link = (Element) links.item(0);//将参数放到map中String code = link.getElementsByTagName("code").item(0).getFirstChild().getNodeValue();if("0".equals(code)){params.put("ip", link.getElementsByTagName("ip").item(0).getFirstChild().getNodeValue());params.put("loginName", link.getElementsByTagName("loginName").item(0).getFirstChild().getNodeValue());params.put("loginPassword", link.getElementsByTagName("loginPassword").item(0).getFirstChild().getNodeValue());params.put("appExePath", link.getElementsByTagName("appExePath").item(0).getFirstChild().getNodeValue());}} catch (Exception e) {System.err.println(e.getMessage());}return params;}}
- Applet在web页面打开远程桌面前端测试代码【备忘】
- 在页面测试代码
- Web前端代码规范与页面布局
- web前端页面优化
- web 前端 切页面
- 在Applet中实现页面的跳转
- Web前端测试题
- web前端分析/测试
- web前端测试要点
- 手机客户端在Web页面上事件触发打开Word
- 使web browser新窗口页面在原窗口中打开
- 通过web连接页面打开app在 appstore中的详情
- ASP.NET中如何在页面前端书写C#代码?
- 在XP中打开远程桌面(by quqi99)
- 打开网页即可连接远程电脑——一个applet的远程桌面客户端
- 在 Web 浏览器中运行 applet
- 在web应用程序中嵌入Applet
- 全屏打开页面代码
- oracle查询昨天数据表新增所有记录
- Gray码数组中是否存在4个元素的异或结果为0?
- hibernate完整实现dao 的crud
- poj 2195 Going Home--最小费用最大流--spfa--动态数组--或者用 最小权匹配
- 怎么找到google play下载的apk文件
- Applet在web页面打开远程桌面前端测试代码【备忘】
- 将文本文件导入oracle数据库中
- 在一个PHP文件中引入另一个文件的方法
- 6410主频修改
- JS正则表达式详解
- 多进程,多线程总结
- iOS 中监听观察通知的几种方法
- 关于scrolltop 兼容 IE6/7/8, Safari,FF的方法
- 异步任务的应用