Methods, systems and articles of manufacture to resume a remote desktop session
Example methods, systems and articles of manufacture to resume remote desktop sessions are disclosed. A disclosed example method to resume a remote desktop session with a first computing device includes sending a query packet containing a first value representing a user identifier from a second computer device to a third computing device, receiving a response packet containing a second value representing the first computing device from the third computing device, and resuming at the second computing device the remote desktop session with the first computing device using the value.
Latest Hewlett Packard Patents:
A remote desktop session allows a person working at a local computer to view and manipulate the desktop of a remote computer over a network as if the person were sitting in front of that remote computer. Remote desktop sessions may be implemented, for example, using the Microsoft® remote desktop protocol, virtual network computing (VNC) software and/or HP® remote graphics software.
Increasingly, computer users want to be able to establish a remote desktop session to a remote computer using a first computer and then move to a second computer and resume that same remote desktop session from the second computer, without losing any work. Typical remote connection clients require an identifier for the remote computer (e.g., a hostname or an Internet protocol (IP) address assigned to the remote computer) in order to establish and/or resume a remote desktop session. Accordingly, to resume a remote desktop session at the same and/or a different computer, a user needs to know and/or be able to determine the remote computer's identifier. In some environments, the remote computer may change from day to day, depending on resource constraints. For example, a hostname and/or IP address may be re-assigned from a first remote computer to a second remote computer. Thus, the user has traditionally been required to remember and/or make a note of the remote computer's hostname or IP address in order to resume the remote desktop session. Unfortunately, hostnames and/or IP addresses may change from day to day or even from connection to connection, depending on network rules, further frustrating the user's efforts to resume remote desktop sessions.
Example methods, systems and articles of manufacture to resume remote desktop sessions disclosed herein unburden users from having to remember and/or record remote computer identifiers (e.g., a hostname and/or an IP address). Examples disclosed herein enable a user to automatically locate and/or restore any or all of their existing remote desktop sessions from the same and/or different computers. The remote desktop sessions are automatically located and/or identified based on a user identifier (e.g., a username, an NT domain name such as domain\user, a SEA address such as user@domain, and/or a user-specific UUID used by a directory service) associated with and/or assigned to a user, and a list of automatically identified remote desktop sessions is presented to the user. The user selects which, if any, of the identified remote desktop sessions are to be resumed. As a result, the user at no time needs to be aware of a remote computer's identifier.
A disclosed example method to resume a remote desktop session with a first computing device includes sending a query packet containing a first value representing a user identifier from a second computer device to a third computing device, receiving a response packet containing a second value representing the first computing device from the third computing device, and resuming at the second computing device the remote desktop session with the first computing device using the value.
A disclosed example system to resume a remote desktop session includes a first computer including a user agent, the user agent to multicast a query packet containing a first value representing a user identifier, and a second computer including a service agent, the service agent to send a response packet in response to the query packet, the response packet containing a second value representing a remote computer providing the remote desktop session associated with the user identifier.
A disclosed example tangible article of manufacture stores machine-readable instructions that, when executed, cause a machine to at least receive from a first computing device a query packet containing a first value representing a user identifier, and send to the first computing device a response packet containing a second value representing a second computing device providing a remote desktop session associated with the user identifier.
When the example client computers 115, 116 and the example remote computer 110 interact to establish a remote desktop session (e.g., a remote desktop session 130) and/or to terminate a remote desktop session, the example remote desktop server 125 of
To enable a user to resume remote desktop sessions, the example client computer 116 of
When a remote desktop session (e.g., the example remote desktop session 130) is established, resumed and/or terminated, the example service agent 145 of
In response, the example directory agent 150 of
To resume the remote desktop session 130 from the example client computer 116, a user initiates, opens, resumes and/or causes the computer to execute the example user agent 140. The example user agent 140 of
When the directory agent 150 receives the SLP query 165, the example directory agent 150 of
When the user agent 140 receives the SLP response(s) 170, the example user agent 140 of
In comparison to the example system 100 of
While example systems 100 and 200 to resume remote desktop sessions are illustrated in
If there are one or more directory agents (e.g., the example directory agent 150) present (block 320), the user agent 140 sends the SLP query to the directory agent(s) (block 325). If there is not a directory agent present (block 320), the user agent 140 multicasts the SLP query (block 330).
Continuing at block 335 of
The user agent 140 presents a list of the automatically identified remote desktop sessions (block 350). If the user selects any of the presented remote desktop sessions (block 355), the user agent 140 sends the session connection information to the remote desktop client 120 (block 360), and control exits from the example machine-accessible instructions of
Returning to block 355, if the user does not select any of the presented remote desktop sessions (block 355), the user agent 140 informs, directs and/or notifies the remote desktop client 120 that a new remote desktop session is to be initiated (block 365), and control exits from the example machine-accessible instructions of
If the serving agent supports unencrypted responses and/or the received SLP query contains a public encryption key (block 405), the serving agents selects a first entry in a database (e.g., the example session database 135 and/or the example SLP database 160) (block 410). The serving agent computes a cryptographic hash of user identifier(s) associated with the entry (block 415) and compares the computed cryptographic hash to the cryptographic hash included in the received SLP query (block 420).
If the cryptographic hashes match (block 420), the serving agent determines whether the SLP query included a public encryption key (block 425). If a public encryption key was included (block 425), the serving agent encrypts connection information associated with the entry using the public encryption key (block 430). The serving agent generates, creates and/or forms an SLP response (e.g., the example SLP response 170 and/or the example SLP response 205) that includes the connection information (which may be encrypted) (block 435) and sends the SLP response to the querying user agent (block 440). If there are more entries in the database (block 445), control proceeds to block 450 to select a next entry (block 450).
If there are no more entries in the database to process (block 445), control exits from the example machine-accessible instructions of
Returning to block 420, if the cryptographic hashes do not match (block 420), control proceeds to block 445 to determine if there are more entries in the database to process.
While the illustrated example of
A processor, a controller and/or any other suitable processing device may be used, configured and/or programmed to execute and/or carry out the example machine-accessible instructions of
As used herein, the term “tangible computer-readable medium” is expressly defined to include any type of computer-readable medium and to expressly exclude propagating signals. As used herein, the term “non-transitory computer-readable medium” is expressly defined to include any type of computer-readable medium and to exclude propagating signals. Example tangible and/or non-transitory computer-readable medium include a volatile and/or non-volatile memory, a volatile and/or non-volatile memory device, a compact disc (CD), a digital versatile disc (DVD), a floppy disk, a read-only memory (ROM), a random-access memory (RAM), a programmable ROM (PROM), an electronically-programmable ROM (EPROM), an electronically-erasable PROM (EEPROM), an optical storage disk, an optical storage device, magnetic storage disk, a network-attached storage device, a server-based storage device, a shared network storage device, a magnetic storage device, a cache, and/or any other storage media in which information is stored for any duration (e.g., for extended time periods, permanently, brief instances, for temporarily buffering, and/or for caching of the information) and which can be accessed by a processor, a computer and/or other machine having a processor, such as the example processor platform P100 discussed below in connection with
The processor platform P100 of the instant example includes at least one programmable processor P105. For example, the processor P105 can be implemented by one or more Intel®, AMD®, and/or ARM® microprocessors. Of course, other processors from other processor families and/or manufacturers are also appropriate. The processor P105 executes coded instructions P110 and/or P112 present in main memory of the processor P105 (e.g., within a volatile memory P115 and/or a non-volatile memory P120) and/or in a storage device P150. The processor P105 may execute, among other things, the example machine-accessible instructions of
The processor P105 is in communication with the main memory including the non-volatile memory P110 and the volatile memory P115, and the storage device P150 via a bus P125. The volatile memory P115 may be implemented by Synchronous Dynamic Random Access Memory (SDRAM), Dynamic Random Access Memory (DRAM), RAMBUS Dynamic Random Access Memory (RDRAM) and/or any other type of RAM device. The non-volatile memory P110 may be implemented by flash memory and/or any other desired type of memory device. Access to the memory P115 and the memory P120 may be controlled by a memory controller.
The processor platform P100 also includes an interface circuit P130. Any type of interface standard, such as an external memory interface, serial port, general-purpose input/output, as an Ethernet interface, a universal serial bus (USB), and/or a PCI express interface, etc, may implement the interface circuit P130.
The interface circuit P130 may also includes one or more communication device(s) 145 such as a network interface card to facilitate exchange of data with other computers, nodes and/or routers of a network.
In some examples, the processor platform P100 also includes one or more mass storage devices P150 to store software and/or data. Examples of such storage devices P150 include a floppy disk drive, a hard disk drive, a solid-state hard disk drive, a CD drive, a DVD drive, a network-attached storage device, a server-based storage device, a shared network storage device and/or any other solid-state, magnetic and/or optical storage device. The example storage devices P150 may be used to, for example, store the example coded instructions of
Although certain example methods, apparatus and articles of manufacture have been described herein, the scope of coverage of this patent is not limited thereto. On the contrary, this patent covers all methods, apparatus and articles of manufacture fairly falling within the scope of the claims of this patent either literally or under the doctrine of equivalents.
Claims
1. A method to resume a remote desktop session, the method comprising:
- multicasting a query to resume the remote desktop session, the query containing a first value representing a user identifier, and the query multicasted from a first computing device to a first intermediate computing device on a first network domain and a second intermediate computing device on a second network domain;
- receiving a first response from the first intermediate computing device or a second response from the second intermediate computing device, the first response including a first address stored at the first intermediate computing device for a first remote desktop session corresponding to the user identifier at the first network domain, and the second response including a second address stored at the second intermediate device for a second remote desktop session corresponding to the user identifier at the second network domain; and
- selecting to resume, at the first computing device, the first remote desktop session based on the first address or the second remote desktop session based on the second address.
2. A method as defined in claim 1, further comprising including a public key in the query, wherein the first and second addresses are encrypted using the public key.
3. A method as defined in claim 1, further comprising computing the first value as a hash of the user identifier.
4. A method as defined in claim 1, further comprising:
- multicasting the query containing the first value to a third intermediate computing device on a third network domain; and
- receiving a third response from the third intermediate computing device, the third response including a third address stored at the third intermediate device for a third remote desktop session corresponding to the user identifier at the third network domain, the third remote desktop session being selectable to resume at the first computing device based on the third address.
5. The method as defined in claim 1, further comprising:
- receiving a third address corresponding to the first intermediate computing device and a fourth address corresponding to the second intermediate computing device from a domain name service, the third address and the fourth address being used to multicast the query.
6. A tangible computer-readable medium comprising instructions which, when executed, cause a machine to at least:
- multicast a query packet containing a user identifier from a first computing device to a first intermediate computing device on a first network domain and to a second intermediate computing device on a second network domain;
- receive a first response packet from the first intermediate computing device or a second response packet from the second intermediate device, the first response packet including a first address stored at the first intermediate computing device for a first remote desktop session corresponding to the user identifier at the first network domain, and the second response packet including a second address stored at the second intermediate device for a second remote desktop session corresponding to the user identifier at the second network domain; and
- select to resume, at the first computing device, the first remote desktop session based on the first address or the second remote desktop session based on the second address.
7. A tangible computer-readable medium as defined in claim 6, further comprising instructions which, when executed, cause the machine to at least:
- include a public key in the query packet, wherein the first and second addresses are encrypted using the public key.
8. A tangible computer-readable medium as defined in claim 6, further comprising instructions which, when executed, cause the machine to at least:
- compute the first value as a hash of the user identifier.
9. A tangible computer-readable medium as defined in claim 6, further comprising instructions which, when executed, cause the machine to at least:
- send the query packet containing the first value to a third intermediate computing device on a third network domain; and
- receive a third response packet from the third intermediate computing device, the third response packet including a third address stored at the third intermediate device for a third remote desktop session corresponding to the user identifier at the third network domain, the third remote desktop session selectable to resume at the first computing device based on the third address.
10. A tangible computer-readable medium as defined in claim 6, further comprising instructions which, when executed, cause the machine to at least:
- receive a third address corresponding to the first intermediate computing device and a fourth address corresponding to the second intermediate computing device from a domain name service, the machine to use the third address and the fourth address to multicast the query.
11. A system to resume a remote desktop session, the system comprising:
- a first directory agent in a first network domain to receive query packets containing a first user identifier, to receive registration packets containing a second user identifier and a first address, and to send a first response packet containing the first address when the first user identifier matches the second user identifier;
- a second directory agent in a second network domain to receive query packets containing the first user identifier, to receive registration packets containing a third user identifier and a second address, and to send a second response packet containing the second address when the first user identifier matches the third user identifier; and
- a user agent in a third network domain to multicast the query packets containing the first user identifier, to receive the first and second response packets, and to resume the remote desktop session using the first address or the second address.
12. A system as defined in claim 11, wherein the user agent receives a third address corresponding to the first directory agent and a fourth address corresponding to the second directory agent, and uses the third address and the fourth address to send the query packets.
13. A system as defined in claim 11, wherein the query packets include a public key.
14. A system as defined in claim 13, wherein the first directory agent encrypts the first address with the public key before sending the response packets, and the second directory agent encrypts the second address with the public key before sending the response packets.
15. A system as defined in claim 11, wherein the first directory agent and the second directory agent discards the query packets when the query packets do not contain a public key.
7461260 | December 2, 2008 | Drews et al. |
7685298 | March 23, 2010 | Day et al. |
8108525 | January 31, 2012 | Kumar et al. |
8589575 | November 19, 2013 | Ramachandra et al. |
20080235361 | September 25, 2008 | Crosbie et al. |
20090006537 | January 1, 2009 | Palekar et al. |
20090037763 | February 5, 2009 | Adhya et al. |
20090210519 | August 20, 2009 | Zill et al. |
20090216975 | August 27, 2009 | Halperin et al. |
20100217874 | August 26, 2010 | Anantharaman et al. |
- Microsoft, “Connect to a user session”, Feb. 19, 2011, pp. 1-2.
- IETF, RFC 2608/Update 2165, “Service Location Protocol, Version 2”, Jun. 1999, pp. 1-38.
- IBM, “SLP direcotry agent configuration”, 2010, pp. 1-2.
- HP Remote Graphics Software User Guide 5.4.5, Jan. 2011, 247 pages.
- HP Session Allocation Manager v3.1, May 2010, 4 pages.
- Microsoft, Understanding the Remote Desktop Protocol (RDP), last review Mar. 27, 2007, retrieved from http://support.microsoft.com/default.aspx?scid=kb;EN-US;q186607, on Oct. 30, 2013, 2 pages.
- Vettorello, Marco et al., “Some Notes on Security in the Service Location Protocol Version 2 (SLPv2),” 2001, 10 pages.
Type: Grant
Filed: Apr 1, 2011
Date of Patent: Mar 24, 2015
Patent Publication Number: 20120254447
Assignee: Hewlett-Packard Development Company, L.P. (Houston, TX)
Inventors: Valentin Popescu (Tomball, TX), Paul Michael Anderson (Fort Collins, CO)
Primary Examiner: Jung Park
Assistant Examiner: Albert Shih
Application Number: 13/078,636
International Classification: G06F 15/16 (20060101); H04L 29/06 (20060101);