Note that there are some explanatory texts on larger screens.

plurals
  1. POAndroid-rdp-client setup and compiling
    primarykey
    data
    text
    <p>I have tried to compile the android-rdp-client(downloaded source code from <a href="http://android-rdp-client.googlecode.com/svn/trunk/androidRDPClient/" rel="nofollow">here</a> ), but could not get an output except a blank screen. I have set the username, IP, password etc to access my PC via my android phone. The code is below.</p> <p><strong>-- CODE --</strong></p> <pre><code>import gnu.getopt.Getopt; import gnu.getopt.LongOpt; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; import net.propero.rdp.Common; import net.propero.rdp.ConnectionException; import net.propero.rdp.Constants; import net.propero.rdp.Options; import net.propero.rdp.RDPClientChooser; import net.propero.rdp.RdesktopException; import net.propero.rdp.Rdp; import net.propero.rdp.rdp5.Rdp5; import net.propero.rdp.rdp5.VChannels; import org.apache.log4j.BasicConfigurator; import org.apache.log4j.PropertyConfigurator; import android.app.Activity; import android.content.res.Configuration; import android.os.Bundle; import android.util.Log; public class RdpActivity extends Activity { private static final String TAG = "AndroidRDPClientActivity"; static boolean keep_running; static boolean loggedon; static boolean readytosend; static boolean showTools; static String mapFile = "en-gb"; static String keyMapLocation = ""; static String server = "localhost"; static String password="4104636"; int logonflags = Rdp.RDP_LOGON_NORMAL; // static SendEvent toolFrame = null; public void onConfigurationChanged(Configuration newConfig) { // TODO Auto-generated method stub super.onConfigurationChanged(newConfig); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // Intent intent = new Intent(); // intent.setClass(AndroidRDPClientActivity.this, CanvasActivity.class); // startActivity(intent); Rdesktop(); } private void Rdesktop() { init(); } private void init() { keep_running = true; loggedon = false; // 未登陆 readytosend = false; showTools = false; mapFile = "en-gb"; keyMapLocation = ""; // toolFrame = null; BasicConfigurator.configure(); RDPClientChooser Chooser = new RDPClientChooser(); String[] args = { "127.0.0.1" }; if (Chooser.RunNativeRDPClient(args)) { // Chooser.RunNativeRDPClient(args) // = false if (!Common.underApplet) System.exit(0); } int logonflags = Rdp.RDP_LOGON_NORMAL; // 正常登陆 自动登陆 boolean fKdeHack = false; int c; String arg; StringBuffer sb = new StringBuffer(); LongOpt[] alo = new LongOpt[15]; alo[0] = new LongOpt("debug_key", LongOpt.NO_ARGUMENT, null, 0); alo[1] = new LongOpt("debug_hex", LongOpt.NO_ARGUMENT, null, 0); alo[2] = new LongOpt("no_paste_hack", LongOpt.NO_ARGUMENT, null, 0); alo[3] = new LongOpt("log4j_config", LongOpt.REQUIRED_ARGUMENT, sb, 0); alo[4] = new LongOpt("packet_tools", LongOpt.NO_ARGUMENT, null, 0); alo[5] = new LongOpt("quiet_alt", LongOpt.NO_ARGUMENT, sb, 0); alo[6] = new LongOpt("no_remap_hash", LongOpt.NO_ARGUMENT, null, 0); alo[7] = new LongOpt("no_encryption", LongOpt.NO_ARGUMENT, null, 0); alo[8] = new LongOpt("use_rdp4", LongOpt.NO_ARGUMENT, null, 0); alo[9] = new LongOpt("use_ssl", LongOpt.NO_ARGUMENT, null, 0); alo[10] = new LongOpt("enable_menu", LongOpt.NO_ARGUMENT, null, 0); alo[11] = new LongOpt("console", LongOpt.NO_ARGUMENT, null, 0); alo[12] = new LongOpt("load_licence", LongOpt.NO_ARGUMENT, null, 0); alo[13] = new LongOpt("save_licence", LongOpt.NO_ARGUMENT, null, 0); alo[14] = new LongOpt("persistent_caching", LongOpt.NO_ARGUMENT, null, 0); String progname = "properJavaRDP";// 程åº?å?? Getopt g = new Getopt("properJavaRDP", args, "bc:d:f::g:k:l:m:n:p:s:t:T:u:o:r:", alo); // ClipChannel clipChannel = new ClipChannel(); //çœ?ç•¥ while ((c = g.getopt()) != -1) { switch (c) { case 0: switch (g.getLongind()) { case 0: Options.debug_keyboard = true; break; case 1: Options.debug_hexdump = true; break; case 2: break; case 3: arg = g.getOptarg(); PropertyConfigurator.configure(arg); // logger.info("Log4j using config file " + arg); break; case 4: showTools = true; break; case 5: Options.altkey_quiet = true; break; case 6: Options.remap_hash = false; break; case 7: Options.packet_encryption = false; break; case 8: Options.use_rdp5 = false; // Options.server_bpp = 8; Options.set_bpp(8); break; case 9: Options.use_ssl = true; break; case 10: Options.enable_menu = true; break; case 11: Options.console_session = true; break; case 12: Options.load_licence = true; break; case 13: Options.save_licence = true; break; case 14: Options.persistent_bitmap_caching = true; break; default: // usage(); } break; case 'o': Options.set_bpp(Integer.parseInt(g.getOptarg())); break; case 'b': Options.low_latency = false; break; case 'm': mapFile = g.getOptarg(); break; case 'c': Options.directory = g.getOptarg(); break; case 'd': Options.domain = g.getOptarg(); break; case 'f': // Dimension screen_size = Toolkit.getDefaultToolkit() // .getScreenSize(); // Options.width = screen_size.width &amp; ~3; // Options.height = screen_size.height; Options.width = 600 &amp; ~3; Options.height = 800; Options.fullscreen = true; arg = g.getOptarg(); if (arg != null) { if (arg.charAt(0) == 'l') fKdeHack = true; else { System.err.println(progname + ": Invalid fullscreen option '" + arg + "'"); // usage(); } } break; case 'g': arg = g.getOptarg(); int cut = arg.indexOf("x", 0); if (cut == -1) { System.err.println(progname + ": Invalid geometry: " + arg); // usage(); } Options.width = Integer.parseInt(arg.substring(0, cut)) &amp; ~3; Options.height = Integer.parseInt(arg.substring(cut + 1)); break; case 'k': arg = g.getOptarg(); // Options.keylayout = KeyLayout.strToCode(arg); if (Options.keylayout == -1) { System.err.println(progname + ": Invalid key layout: " + arg); // usage(); } break; case 'l': arg = g.getOptarg(); switch (arg.charAt(0)) { case 'd': case 'D': // logger.setLevel(Level.DEBUG); break; case 'i': case 'I': // logger.setLevel(Level.INFO); break; case 'w': case 'W': // logger.setLevel(Level.WARN); break; case 'e': case 'E': // logger.setLevel(Level.ERROR); break; case 'f': case 'F': // logger.setLevel(Level.FATAL); break; default: System.err.println(progname + ": Invalid debug level: " + arg.charAt(0)); // usage(); } break; case 'n': Options.hostname = g.getOptarg(); break; case 'p': Options.password = g.getOptarg(); logonflags |= Rdp.RDP_LOGON_AUTO; break; case 's': Options.command = g.getOptarg(); break; case 'u': Options.username = g.getOptarg(); break; case 't': arg = g.getOptarg(); try { Options.port = Integer.parseInt(arg); } catch (NumberFormatException nex) { System.err.println(progname + ": Invalid port number: " + arg); // usage(); } break; case 'T': Options.windowTitle = g.getOptarg().replace('_', ' '); break; case 'r': Options.licence_path = g.getOptarg(); break; case '?': default: // usage(); break; } } if (fKdeHack) { Options.height -= 46; } String server = null; logonflags |= Rdp.RDP_LOGON_AUTO; // 自动登陆的è¯?, 需è¦?填上用户å??和密ç ? if (g.getOptind() &lt; args.length) { int colonat = args[args.length - 1].indexOf(":", 0); if (colonat == -1) { server = args[args.length - 1]; } else { server = args[args.length - 1].substring(0, colonat); Options.port = Integer.parseInt(args[args.length - 1] .substring(colonat + 1)); } } else { System.err.println(progname + ": A server name is required!"); // usage(); } VChannels channels = new VChannels(); // Initialise all RDP5 channels if (Options.use_rdp5) { // TODO: implement all relevant channels // if (Options.map_clipboard) // channels.register(clipChannel); } String os = System.getProperty("os.name"); String osvers = System.getProperty("os.version"); if (os.equals("Windows 2000") || os.equals("Windows XP")) Options.built_in_licence = true; Log.i(TAG, "Operating System is " + os + " version " + osvers); if (os.startsWith("Linux")) Constants.OS = Constants.LINUX; else if (os.startsWith("Windows")) Constants.OS = Constants.WINDOWS; else if (os.startsWith("Mac")) Constants.OS = Constants.MAC; if (Constants.OS == Constants.MAC) Options.caps_sends_up_and_down = false; Rdp5 RdpLayer = null; Common.rdp = RdpLayer; // RdesktopFrame window = new RdesktopFrame_Localised(); boolean[] deactivated = new boolean[1]; int[] ext_disc_reason = new int[1]; while (keep_running) { // logger.debug("Initialising RDP layer..."); RdpLayer = new Rdp5(channels); Common.rdp = RdpLayer; // logger.debug("Registering drawing surface..."); // RdpLayer.registerDrawingSurface(window); // logger.debug("Registering comms layer..."); // window.registerCommLayer(RdpLayer); loggedon = false; readytosend = false; if (server.equalsIgnoreCase("localhost")) server = "127.0.0.1"; // Attempt to connect to server on port Options.port try { RdpLayer.connect(Options.username, InetAddress .getByName(server), logonflags, Options.domain, password, Options.command, Options.directory); // Remove to get rid of sendEvent tool if (showTools) { // toolFrame = new SendEvent(RdpLayer); // toolFrame.show(); } // End if (keep_running) { /* * By setting encryption to False here, we have an * encrypted login packet but unencrypted transfer of * other packets */ if (!Options.packet_encryption) Options.encryption = false; // logger.info("Connection successful"); // now show window after licence negotiation RdpLayer.mainLoop(deactivated, ext_disc_reason); if (deactivated[0]) { /* clean disconnect */ System.exit(-1); // return 0; } else { System.exit(-1); } keep_running = false; // exited main loop if (!readytosend) { // maybe the licence server was having a comms // problem, retry? String msg1 = "The terminal server disconnected before licence negotiation completed."; String msg2 = "Possible cause: terminal server could not issue a licence."; String[] msg = { msg1, msg2 }; // logger.warn(msg1); // logger.warn(msg2); // window.showErrorDialog(msg); } } // closing bracket to if(running) // Remove to get rid of tool window // if (showTools) // toolFrame.dispose(); // End } catch (ConnectionException e) { String msg[] = { "Connection Exception", e.getMessage() }; // window.showErrorDialog(msg); //System.exit(-1); this.finish(); } catch (UnknownHostException e) { // error(e, RdpLayer, window, true); } catch (SocketException s) { if (RdpLayer.isConnected()) { // logger.fatal(s.getClass().getName() + " " // + s.getMessage()); // // s.printStackTrace(); // error(s, RdpLayer, window, true); // Rdesktop.exit(0, RdpLayer, window, true); } } catch (RdesktopException e) { String msg1 = e.getClass().getName(); String msg2 = e.getMessage(); // logger.fatal(msg1 + ": " + msg2); e.printStackTrace(System.err); if (!readytosend) { // maybe the licence server was having a comms // problem, retry? String msg[] = { "The terminal server reset connection before licence negotiation completed.", "Possible cause: terminal server could not connect to licence server.", "Retry?" }; // boolean retry = window.showYesNoErrorDialog(msg); // if (!retry) { // logger.info("Selected not to retry."); // Rdesktop.exit(0, RdpLayer, window, true); // } else { // if (RdpLayer != null &amp;&amp; RdpLayer.isConnected()) { // logger.info("Disconnecting ..."); // RdpLayer.disconnect(); // logger.info("Disconnected"); // } // logger.info("Retrying connection..."); // keep_running = true; // retry // continue; // } } else { String msg[] = { e.getMessage() }; // window.showErrorDialog(msg); // Rdesktop.exit(0, RdpLayer, window, true); } } catch (Exception e) { // logger.warn(e.getClass().getName() + " " + // e.getMessage()); e.printStackTrace(); // error(e, RdpLayer, window, true); } } System.exit(-1); } } </code></pre> <p>What should I do to get this code working? Is there any other requirements like a server side software for my windows machine? For now I have enabled remote desktop connections to my PC.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload