Are there any libraries for connecting as a client via Remote Desktop Protocol (RDP) in Linux? The language used is secondary to the issue of existence. Any mainstream language would do (e.g. C++, Perl, Java, Ruby, PHP, Python), and even less popular ones like OCaml or Scheme.
Is there any option available other than taking the rdesktop source and hacking a library out of that?
There is a set of cross-platform open source RDP libraries available in FreeRDP project. They are written in C and under Apache Licence 2.0. See http://www.freerdp.com
Typing rdp into my Mandriva Software Managment tool revealed libxrdp which is a library that xrdp depends on but I don't know the details so it may not be what you want.
The project website is xrdp.sourceforge.net.
rdesktop is going to be your best option. The code is quite clean and I don't think making a library would be a huge deal.
Another option if you prefer Java is the ProperJavaRDP Client http://properjavardp.sourceforge.net/ . It's nearly a strait port of rdesktop.
You can look at these implementations:
FreeRDP
(Apache License) - mostlyC
.FreeRDP
C#
bindingsFreeRDP-WebConnect
for HTML5 stuffrdesktop
(GPLv2) - mostlyC
.rdpy
(GPLv3) -python
but bitmap stuff is written inC
(borrowing code fromrdesktop
)properJavaRDP
(GPL) -java
Non portable implementations:
And the reference documents:
- http://msdn.microsoft.com/en-us/library/cc240445.aspx
- http://msdn.microsoft.com/en-us/library/cc240452.aspx (message flows / connection sequence)
Sorry, but a quick strace and nm of rdesktop reveal nothing beyond X, crypto, and compression libs.
rdesktop
does allow embedding into other windows, how does it not serve your purpose?
See the -X
option in help
You could embed rdesktop in a window of your own per J-16 SDIZ's suggestion and then send X.org events to that window programmatically. A similar route would be to install a VNC server on the Windows machine and run a VNC client on the Linux machine. That way you can also programmatically send X.org events to the VNC client.
This is what browsershots.org uses to programmatically control various web browsers in a cross-platform way through Python. Have a look at the gui
directory if the browsershots.org client source code
I've gotten xrdp to work with RHEL on EC2: xrdp.org
来源:https://stackoverflow.com/questions/1071508/does-an-rdp-client-library-under-linux-exist