US20050256923A1 - Methods and apparatus for displaying application output on devices having constrained system resources - Google Patents
Methods and apparatus for displaying application output on devices having constrained system resources Download PDFInfo
- Publication number
- US20050256923A1 US20050256923A1 US10/709,581 US70958104A US2005256923A1 US 20050256923 A1 US20050256923 A1 US 20050256923A1 US 70958104 A US70958104 A US 70958104A US 2005256923 A1 US2005256923 A1 US 2005256923A1
- Authority
- US
- United States
- Prior art keywords
- application
- server
- protocol
- screen
- proxy server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
- G06F9/452—Remote windowing, e.g. X-Window System, desktop virtualisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1608—Error detection by comparing the output signals of redundant hardware
- G06F11/1616—Error detection by comparing the output signals of redundant hardware where the redundant component is an I/O device or an adapter therefor
- G06F11/162—Displays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
- G06F16/58—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
- G06F16/583—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using metadata automatically derived from the content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9577—Optimising the visualization of content, e.g. distillation of HTML documents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/12—Digital output to print unit, e.g. line printer, chain printer
- G06F3/1201—Dedicated interfaces to print systems
- G06F3/1223—Dedicated interfaces to print systems specifically adapted to use a particular technique
- G06F3/1224—Client or server resources management
Definitions
- the present invention relates generally to displaying at client devices the output of application programs executing on server devices and, more particularly, to techniques and apparatus for displaying the output of application programs on devices having constrained system resources.
- Technologies for providing remote access to networked resources include a variety of client/server software combinations.
- One of these combinations is often referred to as a “thin-client” or a “distributed application processing” system.
- an application program is executed by a server computing device, usually referred to as the “application server,” on behalf of one or more client computing devices, usually referred to as the “thin-client” or the “thin-client application.”
- client computing devices usually referred to as the “thin-client” or the “thin-client application.”
- Thin-client computing architectures are popular implementations for providing remote connectivity to applications and other system resources.
- Citrix MetaFrame Presentation Server software in combination with Intelligent Computing Architecture (ICA) clients, available from Citrix Systems, Inc. of Fort Lauderdale, Fla.
- ICA Intelligent Computing Architecture
- X servers in combination with X Windows clients available from the X Consortium
- Microsoft Windows NT Server 4.0 Terminal Server Edition in combination with Remote Display Protocol (RDP) clients, available from Microsoft Corporation of Redmond, Wash.
- RDP Remote Display Protocol
- the client device may offer limited amounts of memory, slower communication subsystems, and limited system resources without degradation in performance that is noticeable to the user.
- a personal computer, workstation, or other similar computing device typically provides ample system resources to execute the thin-client application and communicate with the application server.
- the present invention enables low-end client devices, such as cell phones, personal digital assistants, and embedded systems, to interact with application programs executing on application servers, allowing applications to accessed remotely from various locations.
- the present invention relates to a system for displaying at a user device output produced by an application program executing on a server.
- the system includes an application server executing an application program.
- a proxy server receives data from the application server, the data representing a screen of graphical display output produced by the application program.
- a user device executes a client application that receives static image data from the proxy server. The received static image data represents the screen of graphical display output produced by the application program.
- the present invention relates to a method for displaying at a user device output produced by an application program executing on a server.
- An application server executes an application producing a screen of graphical user interface data and transmits to a proxy server the screen of produced graphical user interface data.
- the proxy server transmits to a user device static image data representing at least a portion of the screen of produced graphical user interface data.
- the user device displays the transmitted static image data.
- the present invention relates to an apparatus for displaying at a user device output produced by an application program executing on a server.
- the apparatus includes a first protocol handler receiving from an application server data in a first protocol format, the data representative of a screen of graphical display output produced by an application executing on the application server.
- the apparatus also includes a second protocol handler transmitting to a client application for display static image data in a second protocol format, the static image data representative of at least a portion of the screen of graphical display output received by the first protocol handler.
- the present invention relates to a method for displaying at a user device graphical display output produced by an application program executing on a server.
- Static image data is received from an application server, via a first protocol, representative of a screen of graphical display output produced by an application executing on the application server.
- the static image data is transmitted to a client application for display via a second protocol, the static image data representative of at least a portion of the screen of graphical display output produced by the application executing on the application server.
- the present invention relates to a system for displaying at a user device output produced by an application program executing on a server.
- the system includes an application server executing an application program.
- the system also includes a proxy server receiving from the application server data that represents a screen of graphical display output produced by the application program via a presentation-level protocol.
- the system further includes a user device executing a client application, the client application receiving from said proxy server static image data representing the screen of graphical display output produced by the application program via HyperText Transfer Protocol (HTTP) commands.
- HTTP HyperText Transfer Protocol
- the present invention relates to a method for displaying at a user device output produced by an application program executing on a server.
- An application server executes an application that produces a screen of graphical user interface data.
- the application server transmits to a proxy server, via a presentation-level protocol, the screen of produced graphical user interface data.
- the proxy server transmits to a user device, via HyperText Transfer Protocol (HTTP) commands, static image data representing at least a portion of the screen of produced graphical user interface data.
- HTTP HyperText Transfer Protocol
- the present invention relates to an article of manufacture having embodied thereon computer-readable program means for displaying at a user device output produced by an application program executing on a server.
- the article of manufacture includes: computer-readable program means for transmitting to a proxy server a screen of graphical user interface data produced by an application executing on the server; computer-readable program means for communicating to a user device, by the proxy server, static image data representing at least a portion of the screen of produced graphical user interface data; and computer-readable program means for displaying, by the user device, the transmitted static image data.
- the present invention relates to an article of manufacture having embodied thereon computer-readable programs means for displaying at a user device graphical display output produced by an application program executing on a server.
- the article of manufacture includes: computer-readable program means for receiving from an application server, via a first protocol, data representative of a screen of graphical display output produced by an application executing on the application server; and computer-readable programs means for transmitting to a client application for display, via a second protocol, static image data representative of at least a portion of the screen of graphical display output produced by the application executing on the application server.
- FIG. 1 is a block diagram of one embodiment of a system for providing application output to devices having constrained system resources
- FIGS. 2A and 2B are block diagrams depicting embodiments of computers useful in connection with the present invention.
- FIG. 3 is a flowchart depicting one embodiment of the operation of a system for providing application output to devices having constrained system resources
- FIG. 4 is a diagrammatic representation of one embodiment of a protocol used to communicate application output to devices having constrained systems resources.
- a system 100 for providing application output to a client device having constrained system resources includes an application server 110 , a proxy server 150 , and a client 140 .
- the system 100 includes multiple, logically-grouped application servers 110 , each of which are available to execute applications on behalf of a client 140 .
- the logical group of servers may be referred to as a “server farm.”
- multiple proxy servers 150 may be provided.
- the proxy servers may be geographically dispersed.
- the application server 110 executes one or more application programs 122 , 124 , 126 , 128 on behalf of a client 140 .
- An application program is any program that processes data to provide output and that uses an operating system for access to system resources.
- Exemplary application programs include: word processing applications, such as MICROSOFT WORD, manufactured by Microsoft Corporation of Redmond, Wash.; spreadsheet programs, such as MICROSOFT EXCEL, manufactured by Microsoft Corporation; electronic mail programs, such as MICROSOFT OUTLOOK, manufactured by Microsoft Corporation and GROUPWISE, manufactured by Novell Corp. of Provo, Utah; and productivity suites such as STAR OFFICE, manufactured by Sun Microsystems of Mountain View, Calif.
- the application server 110 communicates with the proxy server 150 over a first network 125 .
- the first network 125 can be a local area network (LAN), a metropolitan area network (MAN), or a wide area network (WAN) such as the Internet.
- the application server 110 and the proxy server 150 may connect to the first network 125 through a variety of connections including standard telephone lines, LAN or WAN links (e.g., T1, T3, 56 kb, X.25), broadband connections (ISDN, Frame Relay, ATM), and wireless connections.
- Connections between the application server 110 and the proxy server 150 may use a variety of data-link layer communication protocols (e.g., TCP/IP, IPX, SPX, NetBIOS, NetBEUI, SMB, Ethernet, ARCNET, Fiber Distributed Data Interface (FDDI), RS232, IEEE 802.11, IEEE 802.11a, IEE 802.11b, IEEE 802.11g and direct asynchronous connections).
- data-link layer communication protocols e.g., TCP/IP, IPX, SPX, NetBIOS, NetBEUI, SMB, Ethernet, ARCNET, Fiber Distributed Data Interface (FDDI), RS232, IEEE 802.11, IEEE 802.11a, IEE 802.11b, IEEE 802.11g and direct asynchronous connections).
- the proxy server 150 executes one or more thin-client applications 152 , 154 such as a Remote Display Protocol client, manufactured by Microsoft Corporation or an ICA client, manufactured by Citrix Systems, Inc. of Fort Lauderdale, Fla.
- the application server 110 communicates the output of the application programs 122 , 124 , 126 , 128 to thin-client applications 152 , 154 executing on the proxy server 150 and receives user input directed to the application programs 122 , 124 , 126 , 128 from the thin-client application 152 , 154 .
- the application server 110 communicates with the thin-client applications 152 , 154 over network 125 using a presentation-layer protocol such as the Independent Computing Architecture (ICA) protocol, available from Citrix Systems, Inc. of Fort Lauderdale, Fla. or the Remote Display Protocol (RDP), available from Microsoft Corporation.
- ICA Independent Computing Architecture
- RDP Remote Display Protocol
- the proxy server 150 also executes a proxy server application 158 .
- the proxy server application 158 may be an application program, a subsystem or a service.
- the proxy server application 158 manages the thin-client applications 152 , 154 hosted by the proxy server 150 .
- the proxy server application also transmits application output received by the thin-client applications 152 , 154 to the client device 140 and transmits user input received from the client device 140 to the appropriate thin-client application 152 , 154 executing on the proxy server 150 .
- the proxy server application 158 executing on the proxy server 150 communicates with the client 140 over a second network 175 .
- the client 140 and the proxy server 150 may connect to the second network 175 through a variety of connections including standard telephone lines, LAN or WAN links (e.g., T1, T3, 56 kb, X.25), broadband connections (ISDN, Frame Relay, ATM), and wireless connections.
- Connections between the client 140 and the proxy server 150 may use a variety of data-link layer communication protocols (e.g., TCP/IP, IPX, SPX, NetBIOS, NetBEUI, SMB, Ethernet, ARCNET, Fiber Distributed Data Interface (FDDI), RS232, IEEE 802.11, IEEE 802.11a, IEE 802.11b, IEEE 802.11g and direct asynchronous connections).
- data-link layer communication protocols e.g., TCP/IP, IPX, SPX, NetBIOS, NetBEUI, SMB, Ethernet, ARCNET, Fiber Distributed Data Interface (FDDI), RS232, IEEE 802.11, IEEE 802.11a, IEE 802.11b, IEEE 802.11g and direct asynchronous connections).
- the client device 140 is a mobile device, such as a cellular telephone or a personal digital assistant.
- the client 140 and the proxy server application 158 connect to the second network using any one of a number of well-known protocols from the GSM or CDMA families, such as W-CDMA. These protocols support commercial wireless communication services and W-CDMA, in particular, is the underlying protocol supporting i-Mode and mMode services, offered by NTT DoCoMo.
- the client device 140 executes a client application 146 .
- the client application transmits and receives http or https requests to and from the proxy server application 158 .
- the client application 148 transmits user input directed to an executing application program 122 , 124 , 126 , 128 to the proxy server application 158 over the second network 175 . It is also responsible for rendering graphical output on the screen of the client device corresponding to the output of the application program 122 , 124 , 126 , 128 executing on the application server 110 .
- the application server 110 and the proxy server 150 are provided as personal computer or computer servers, of the sort manufactured by the Hewlett-Packard Corporation of Palo Alto, Calif. or the Dell Corporation of Round Rock, Tex.
- the client device 140 may also be provided as a personal computer.
- each computer 200 includes a central processing unit 202 , and a main memory unit 204 .
- Each computer 200 may also include other optional elements, such as one or more input/output devices 230 a - 230 n (generally referred to using reference numeral 230 ), and a cache memory 240 in communication with the central processing unit 202 .
- the central processing unit 202 is any logic circuitry that responds to and processes instructions fetched from the main memory unit 204 .
- the central processing unit is provided by a microprocessor unit, such as: the 8088, the 80286, the 80386, the 80486, the Pentium, Pentium Pro, the Pentium II, the Celeron, or the Xeon processor, all of which are manufactured by Intel Corporation of Mountain View, Calif.; the 68000, the 68010, the 68020, the 68030, the 68040, the PowerPC 601, the PowerPC604, the PowerPC604e, the MPC603e, the MPC603ei, the MPC603ev, the MPC603r, the MPC603p, the MPC740, the MPC745, the MPC750, the MPC755, the MPC7400, the MPC7410, the MPC7441, the MPC7445, the MPC7447, the MPC7450, the MPC7451, the M
- Main memory unit 204 may be one or more memory chips capable of storing data and allowing any storage location to be directly accessed by the microprocessor 202 , such as Static random access memory (SRAM), Burst SRAM or SynchBurst SRAM (BSRAM), Dynamic random access memory (DRAM), Fast Page Mode DRAM (FPM DRAM), Enhanced DRAM (EDRAM), Extended Data Output RAM (EDO RAM), Extended Data Output DRAM (EDO DRAM), Burst Extended Data Output DRAM (BEDO DRAM), Enhanced DRAM (EDRAM), synchronous DRAM (SDRAM), JEDEC SRAM, PC100 SDRAM, Double Data Rate SDRAM (DDR SDRAM), Enhanced SDRAM (ESDRAM), SyncLink DRAM (SLDRAM), Direct Rambus DRAM (DRDRAM), or Ferroelectric RAM (FRAM).
- SRAM Static random access memory
- BSRAM SynchBurst SRAM
- DRAM Dynamic random access memory
- FPM DRAM Fast Page Mode DRAM
- EDRAM Extended Data
- FIG. 2A the processor 202 communicates with main memory 204 via a system bus 220 (described in more detail below).
- FIG. 2B depicts an embodiment of a computer system 200 in which the processor communicates directly with main memory 204 via a memory port.
- the main memory 204 may be DRDRAM.
- FIGS. 2A and 2B depict embodiments in which the main processor 202 communicates directly with cache memory 240 via a secondary bus, sometimes referred to as a “backside” bus.
- the main processor 202 communicates with cache memory 240 using the system bus 220 .
- Cache memory 240 typically has a faster response time than main memory 204 and is typically provided by SRAM, BSRAM, or EDRAM.
- the processor 202 communicates with various I/O devices 230 via a local system bus 220 .
- Various busses may be used to connect the central processing unit 202 to the I/O devices 230 , including a VESA VL bus, an ISA bus, an EISA bus, a MichroChannel Architecture (MCA) bus, a PCI bus, a PCI-X bus, a PCI-Express bus, or a NuBus.
- MCA MichroChannel Architecture
- PCI bus PCI bus
- PCI-X bus PCI-Express bus
- NuBus NuBus.
- the processor 202 may use an Advanced Graphics Port (AGP) to communicate with the display.
- AGP Advanced Graphics Port
- FIG. 2B depicts an embodiment of a computer system 200 in which the main processor 202 communicates directly with I/O device 230 b via HyperTransport, Rapid I/O, or InfiniBand.
- FIG. 2B also depicts an embodiment in which local busses and direct communication are mixed: the processor 202 communicates with I/O device 230 a using a local interconnect bus while communicating with I/O device 230 b directly.
- I/O devices 230 may be present in the computer system 200 .
- Input devices include keyboards, mice, trackpads, trackballs, microphones, and drawing tablets.
- Output devices include video displays, speakers, inkjet printers, laser printers, and dye-sublimation printers.
- An I/O device may also provide mass storage for the computer system 200 such as a hard disk drive, a floppy disk drive for receiving floppy disks such as 3.5-inch, 5.25-inch disks or ZIP disks, a CD-ROM drive, a CD-R/RW drive, a DVD-ROM drive, tape drives of various formats, and USB storage devices such as the USB Flash Drive line of devices manufactured by Twintech Industry, Inc. of Los Alamitos, Calif.
- an I/O device 230 may be a bridge between the system bus 220 and an external communication bus, such as a USB bus, an Apple Desktop Bus, an RS-232 serial connection, a SCSI bus, a FireWire bus, a FireWire 800 bus, an Ethernet bus, an AppleTalk bus, a Gigabit Ethernet bus, an Asynchronous Transfer Mode bus, a HIPPI bus, a Super HIPPI bus, a SerialPlus bus, a SCI/LAMP bus, a FibreChannel bus, or a Serial Attached small computer system interface bus.
- an external communication bus such as a USB bus, an Apple Desktop Bus, an RS-232 serial connection, a SCSI bus, a FireWire bus, a FireWire 800 bus, an Ethernet bus, an AppleTalk bus, a Gigabit Ethernet bus, an Asynchronous Transfer Mode bus, a HIPPI bus, a Super HIPPI bus, a SerialPlus bus, a SCI/LAMP bus, a FibreChannel bus, or
- General-purpose desktop computers of the sort depicted in FIGS. 2A and 2B typically operate under the control of operating systems, which control scheduling of tasks and access to system resources.
- Typical operating systems include: MICROSOFT WINDOWS, manufactured by Microsoft Corp. of Redmond, Wash.; MacOS, manufactured by Apple Computer of Cupertino, Calif.; OS/2, manufactured by International Business Machines of Armonk, N.Y.; and Linux, a freely-available operating system distributed by Caldera Corp. of Salt Lake City, Utah, among others.
- the client device 140 may be a JAVA-enabled cellular telephone, such as the i50sx, i55sr, i58sr, i85s i88s, i90c, i95cl, or the im11000, all of which are manufactured by Motorola Corp. of Schaumburg, Ill., the 6035 or the 7135, manufactured by Kyocera of Kyoto, Japan, or the i300 or i330, manufactured by Samsung Electronics Co., Ltd., of Seoul, Korea.
- JAVA-enabled cellular telephone such as the i50sx, i55sr, i58sr, i85s i88s, i90c, i95cl, or the im11000, all of which are manufactured by Motorola Corp. of Schaumburg, Ill., the 6035 or the 7135, manufactured by Kyocera of Kyoto, Japan, or the i300 or i330, manufactured by Samsung Electronics Co., Ltd., of Seoul, Korea.
- the client device 140 may be a personal digital assistant (PDA) operating under control of the PalmOS operating system, such as the Tungsten W, the VII, the VIIx, the i705, all of which are manufactured by palmOne, Inc. of Milpitas, California.
- PDA personal digital assistant
- the client device 140 may be a personal digital assistant (PDA) operating under control of the PocketPC operating system, such as the iPAQ 4155, iPAQ 5555, iPAQ 1945, iPAQ 2215, and iPAQ 4255, all of which manufactured by Hewlett-Packard Corporation of Palo Alto, Calif., the ViewSonic V36, manufactured by ViewSonic of Walnut, California, or the Toshiba PocketPC e405, manufactured by Toshiba America, Inc. of New York, N.Y.
- the client device is a combination PDA/telephone device such as the Treo 180, Treo 270 or Treo 600, all of which are manufactured by palmOne, Inc. of Milpitas, Calif.
- the client device 140 is a cellular telephone that operates under control of the PocketPC operating system, such as the MPx200, manufactured by Motorola Corp.
- FIG. 3 depicts the operation of the system just described in FIGS. 1-2B .
- the client application 146 transmits to the proxy server application 158 a request to have an application program 122 , 124 , 126 , 128 executed on its behalf (step 302 ).
- the http request transmitted by the client application 146 includes the name of the application the user wants to have executed.
- the request may identify a file on which the user wants to work.
- the request includes the file type and the proxy server application 158 identifies one or more application programs capable of processing the file.
- the proxy server application 158 may look up the application program to use from a table mapping file types to specific application programs associated with those files types.
- the http request transmitted by the client application 146 may specifically identify a particular published desktop or particular server 100 on which the application program 122 , 124 , 126 , 128 should be executed.
- the proxy server application 158 spawns a thin client application 152 , 154 (step 322 ) and provides the thin-client application 152 , 154 with the identity of the requested program.
- the thin-client application 152 , 154 operates in a manner well-known in the art, except that the thin-client application 152 , 154 sets aside a block of memory to which the thin-client writes application output (step 342 ). Put another way, the thin-client application 152 , 154 writes application output to a virtual screen maintained in memory rather than to a visual display, as is usually done in the art. In some embodiments, however, the thin-client application 152 , 154 writes to both a virtual screen and to a traditional display screen.
- the thin-client application 152 , 154 transmits a request to a server 110 to begin execution of an application program 122 , 124 , 126 , 128 (step 344 ).
- the thin-client application 152 , 154 transmits the request to one server in a server farm, which responds to the thin-client application 152 , 154 with the address of a server 110 hosting the requested application program 122 , 124 , 126 , 128 .
- the thin-client application 152 , 154 transmits the request to a service access point, which returns a document to the client device 140 that provides the client application 146 with the necessary information to connect to the appropriate application server 110 .
- the thin-client application 152 , 154 initiates a connection with the identified server 110 .
- the thin-client application 152 , 154 sets up a virtual screen memory area (step 342 ) after transmitting the application request to the application server 110 (step 344 ). In still other embodiments, these actions happen substantially simultaneously.
- the server 110 begins executing the requested application program 122 , 124 , 126 , 128 (step 382 ) and transmits graphical application output over the first network 125 using a thin-client presentation protocol (step 384 ).
- a thin-client presentation protocol step 384 .
- steps taken by the application server 110 to form presentation-level protocol packets for transmission to the thin-client application 152 , 154 are described in U.S. Pat. Nos. 6,141,737, 6,118,899, 6,081,623, 6,057,857 and 6,016,535, the entire contents of which are incorporated herein by reference.
- the thin-client application 152 , 154 decodes presentation protocol packets received from the application server 110 and writes graphical application output represented by the presentation protocol packets to the virtual screen memory (step 346 ).
- the virtual screen memory is a screen buffer, i.e., the virtual screen memory area stores a bitmap representation of data required to form a visual display of the graphical output.
- the client application 146 transmits a request for a static image representing the current state of the graphical application output to the proxy server application (step 304 ).
- the client application may request the current state of the graphical application output every minute, every thirty seconds, every 15 seconds, every 10 seconds, every 5 seconds, every other second, once a second, twice a second, five times a second, ten times a second, twenty times a second, or thirty times a second.
- the proxy server application 158 periodically transmits a static image representing the current state of the graphical application output to the client application 146 .
- the proxy server application 158 may transmit updates to the client application 146 every minute, every thirty seconds, every 15 seconds, every 10 seconds, every 5 seconds, every other second, once a second, twice a second, five times a second, ten times a second, twenty times a second, or thirty times a second.
- the proxy server application 158 may transmit an update to the client application 146 when the proxy server application 158 determines that a predetermined percentage of the virtual screen memory area has changed state or whenever a request for the current state of the graphical application output is received by the proxy server application.
- the proxy server application 158 receives the transmitted request (step 324 ) and creates a static image file using the virtual screen memory of the appropriate thin-client application 152 , 154 as input (step 326 ).
- the client application 146 stores the state of its connection with the proxy server application 158 , for example, in a “cookie.”
- the transmitted request (step 324 ) may include a session identifier that the proxy server application 158 uses to select from which virtual screen memory to create the static image file.
- the request includes a unique identifier associated with the client device 140 . For example, for embodiments in which the client device 140 is a cell phone, the unique identifier may be the telephone number associated with the cell phone.
- the client application 146 does not store the state of its connection with the proxy server application 158 .
- the session must be identified in the transmitted request (step 324 ) in a manner that does not reveal the session identifier to an eavesdropper.
- the portion of the transmitted http request (step 324 ) that identifies the session may be encrypted using a private key shared between the client application 146 and the proxy server application 158 .
- the request includes a unique identifier associated with the client device 140 , which may also be encrypted to protect it from an eavesdropper.
- the unique identifier may be the telephone number associated with the cell phone.
- the static image created by the proxy server application 158 may be in any one of a number of standard formats, including JPEG, GIF, PNG, TIFF, or BMP.
- the proxy server application 158 calls a Common Object Model (COM) Application Programming Interface (API) exposed by the thin-client application 152 , 154 to create the static image.
- COM Common Object Model
- API Application Programming Interface
- the proxy server application 158 optimizes the size of the static image created. In one of these embodiments, the proxy server application 158 determines the size of the screen image by selecting the screen area surrounding the user's current position. The user's current position may determined by using the x coordinate and y coordinate of the last mouse click or the x coordinate and y coordinate of the last mouse position to be transmitted to the proxy server application 158 . The amount of the screen above, below, to the left of and to the right of the user's last position that is used to create the screen image may be set to a predetermined number of pixels, or it may be selected based on the client device 140 .
- the proxy server application 158 increases the amount of image loss that is acceptable. That is, the proxy server application 158 uses a lossy compression algorithm, such as JPEG, to encode the screen image before transmission. The proxy server application 158 may select the amount of image loss that is acceptable based on the image type to be transmitted, the relative size differential between the screen of the client device 158 and the virtual screen memory, the absolute size of the screen of the client device 140 , the bit depth of the screen of the client device 140 , or the bandwidth available for use over the network 175 .
- a lossy compression algorithm such as JPEG
- the proxy server application 158 does not use a static image to transmit screens that have no graphical elements.
- the client application 146 exposes a separate set of programming interfaces for text drawings commands and for graphical commands. For screens having no graphical elements, only text drawing calls would be made to render the application output screen.
- the proxy server application 158 scales the application output read from the virtual screen buffer so that the screen, or a larger portion of the screen, is viewable on the screen of the client device 140 .
- the scaling may be provided by a COM interface.
- the proxy server application 158 transmits the created static image file to the client application 146 (step 328 ).
- a single session identifier may be shared between multiple client devices 140 , allowing one or more client devices 140 to shadow another client device 140 , i.e. the output displayed by the “shadowing” client devices 140 is the same as the “shadowed” client device 140 .
- the static image file is transmitted to client application 146 using HyperText Transfer Protocol (http) or Secure HyperText Transfer Protocol (https).
- http HyperText Transfer Protocol
- https Secure HyperText Transfer Protocol
- the protocol used to transmit static image files to the client application 146 and to receive client input from the client application 146 is described in more detail in connection with FIG. 4 below.
- the client application 146 displays the received static image file (step 308 ).
- FIG. 4 one embodiment of a protocol used by the client application 146 and the proxy server application 158 to exchange user input and application execution output is depicted diagrammatically.
- four protocol commands are depicted: “Get Image” 410 ; “Send String” 420 ; “Send Keystroke” 430 ; and “Send Mouse Event” 440 .
- the client application 146 transmits to the proxy server application 158 an http request 412 identifying the server to which the request is directed and parameters concerning the static image requested by the client application 146 .
- the parameters included in the http request transmitted by the client application 146 include a starting x coordinate, a starting y coordinate, an ending x coordinate, an ending y coordinate, and a preferred static image file type.
- the proxy server application 158 responds with an http packet 414 transmitting the requested static image file.
- the protocol embodiment shown in FIG. 4 also includes three input commands, “Send String” 420 , “Send Keystroke” 430 , and “Send Mouse Event” 440 .
- the client application 146 transmits to the proxy server application 158 an http packet identifying the server to which the user input is directed and the input.
- the user input is a series of alphanumeric characters.
- the user input is the keystroke.
- the user input is the x coordinate of the mouse event, the y coordinate of the mouse event, and whether the mouse event includes a “click.”
- the “Send Mouse Event” also include an indication of which mouse button was clicked.
- the proxy server application 158 responds to the client application 146 with an “OK” message 424 , 434 , 444 .
- the proxy server application 158 Upon receipt of user input 422 , 432 , 442 , the proxy server application 158 forwards the user input to the thin-client application 152 , 154 .
- the thin-client application 152 , 154 forwards the received user input to the application server 110 .
- the application server 110 receives the user input and provides it to the application program 122 , 124 , 126 , 128 .
- the present invention may be provided as one or more computer-readable programs embodied on or in one or more articles of manufacture.
- the article of manufacture may be a floppy disk, a hard disk, a compact disc, a digital versatile disc, a flash memory card, a PROM, a RAM, a ROM, or a magnetic tape.
- the computer-readable programs may be implemented in any programming language. Some examples of languages that can be used include C, C++, C#, or JAVA.
- the software programs may be stored on or in one or more articles of manufacture as object code.
Abstract
A system for displaying at a user device output produced by an application program executing on a server includes an application server executing an application program. A proxy server receives data from the application server that represents a screen of graphical display output produced by the application program. A user device executes a client application. The client application receives from the proxy server static image data representing the screen of graphical display output produced by the application program.
Description
- The present invention relates generally to displaying at client devices the output of application programs executing on server devices and, more particularly, to techniques and apparatus for displaying the output of application programs on devices having constrained system resources.
- Technologies for providing remote access to networked resources include a variety of client/server software combinations. One of these combinations is often referred to as a “thin-client” or a “distributed application processing” system. In these systems, an application program is executed by a server computing device, usually referred to as the “application server,” on behalf of one or more client computing devices, usually referred to as the “thin-client” or the “thin-client application.” Only input to the application received from the user at the thin-client and output produced by an application executing on the application server are transmitted between the thin-client and the application server. Thin-client computing architectures are popular implementations for providing remote connectivity to applications and other system resources. Examples of such systems include: Citrix MetaFrame Presentation Server software in combination with Intelligent Computing Architecture (ICA) clients, available from Citrix Systems, Inc. of Fort Lauderdale, Fla.; X servers in combination with X Windows clients available from the X Consortium; and Microsoft Windows NT Server 4.0 Terminal Server Edition in combination with Remote Display Protocol (RDP) clients, available from Microsoft Corporation of Redmond, Wash.
- Because a client in a thin-client computing architecture does not execute the application program and is required to transmit only user input to the application server and display only output of the application executing on the application server, the client device may offer limited amounts of memory, slower communication subsystems, and limited system resources without degradation in performance that is noticeable to the user. A personal computer, workstation, or other similar computing device typically provides ample system resources to execute the thin-client application and communicate with the application server.
- However, more users requiring remote connectivity are using computing devices as thin-clients that do not provide sufficient memory, network resources, or proper operating system environments to function as thin-clients, such as cell phones and personal digital assistants. For example, many current cell phones provide less than 1 Megabyte of random access memory, which is generally not sufficient for execution of the thin-client application. Further, it is often useful for an embedded system to access an application server for application output. Typically, these systems are also limited in resources such as memory.
- It would be useful to have a system allowing client devices having constrained system resources, such as limited memory, to interact with application programs executing on application servers.
- The present invention enables low-end client devices, such as cell phones, personal digital assistants, and embedded systems, to interact with application programs executing on application servers, allowing applications to accessed remotely from various locations.
- In one aspect the present invention relates to a system for displaying at a user device output produced by an application program executing on a server. The system includes an application server executing an application program. A proxy server receives data from the application server, the data representing a screen of graphical display output produced by the application program. A user device executes a client application that receives static image data from the proxy server. The received static image data represents the screen of graphical display output produced by the application program.
- In another aspect the present invention relates to a method for displaying at a user device output produced by an application program executing on a server. An application server executes an application producing a screen of graphical user interface data and transmits to a proxy server the screen of produced graphical user interface data. The proxy server transmits to a user device static image data representing at least a portion of the screen of produced graphical user interface data. The user device displays the transmitted static image data.
- In still another aspect the present invention relates to an apparatus for displaying at a user device output produced by an application program executing on a server. The apparatus includes a first protocol handler receiving from an application server data in a first protocol format, the data representative of a screen of graphical display output produced by an application executing on the application server. The apparatus also includes a second protocol handler transmitting to a client application for display static image data in a second protocol format, the static image data representative of at least a portion of the screen of graphical display output received by the first protocol handler.
- In yet another aspect the present invention relates to a method for displaying at a user device graphical display output produced by an application program executing on a server. Static image data is received from an application server, via a first protocol, representative of a screen of graphical display output produced by an application executing on the application server. The static image data is transmitted to a client application for display via a second protocol, the static image data representative of at least a portion of the screen of graphical display output produced by the application executing on the application server.
- In still yet another aspect the present invention relates to a system for displaying at a user device output produced by an application program executing on a server. The system includes an application server executing an application program. The system also includes a proxy server receiving from the application server data that represents a screen of graphical display output produced by the application program via a presentation-level protocol. The system further includes a user device executing a client application, the client application receiving from said proxy server static image data representing the screen of graphical display output produced by the application program via HyperText Transfer Protocol (HTTP) commands.
- In another aspect the present invention relates to a method for displaying at a user device output produced by an application program executing on a server. An application server executes an application that produces a screen of graphical user interface data. The application server transmits to a proxy server, via a presentation-level protocol, the screen of produced graphical user interface data. The proxy server transmits to a user device, via HyperText Transfer Protocol (HTTP) commands, static image data representing at least a portion of the screen of produced graphical user interface data. The user device displays the transmitted static image data.
- In still another aspect, the present invention relates to an article of manufacture having embodied thereon computer-readable program means for displaying at a user device output produced by an application program executing on a server. The article of manufacture includes: computer-readable program means for transmitting to a proxy server a screen of graphical user interface data produced by an application executing on the server; computer-readable program means for communicating to a user device, by the proxy server, static image data representing at least a portion of the screen of produced graphical user interface data; and computer-readable program means for displaying, by the user device, the transmitted static image data.
- In a still further aspect the present invention relates to an article of manufacture having embodied thereon computer-readable programs means for displaying at a user device graphical display output produced by an application program executing on a server. The article of manufacture includes: computer-readable program means for receiving from an application server, via a first protocol, data representative of a screen of graphical display output produced by an application executing on the application server; and computer-readable programs means for transmitting to a client application for display, via a second protocol, static image data representative of at least a portion of the screen of graphical display output produced by the application executing on the application server.
- These and other aspects of this invention will be readily apparent from the detailed description below and the appended drawings, which are meant to illustrate and not to limit the invention, and in which:
-
FIG. 1 is a block diagram of one embodiment of a system for providing application output to devices having constrained system resources; -
FIGS. 2A and 2B are block diagrams depicting embodiments of computers useful in connection with the present invention; -
FIG. 3 is a flowchart depicting one embodiment of the operation of a system for providing application output to devices having constrained system resources; -
FIG. 4 is a diagrammatic representation of one embodiment of a protocol used to communicate application output to devices having constrained systems resources. - Referring now to
FIG. 1 , asystem 100 for providing application output to a client device having constrained system resources includes anapplication server 110, aproxy server 150, and aclient 140. Although only oneapplication server 110,proxy server 150, andclient 140 is depicted in the embodiment shown inFIG. 1 , it should be understood that the system may provide multiple ones of any or each of those components. For example, in one embodiment, thesystem 100 includes multiple, logically-groupedapplication servers 110, each of which are available to execute applications on behalf of aclient 140. In these embodiments, the logical group of servers may be referred to as a “server farm.” In other embodiments,multiple proxy servers 150 may be provided. In some of these embodiments, the proxy servers may be geographically dispersed. - The
application server 110 executes one ormore application programs client 140. An application program is any program that processes data to provide output and that uses an operating system for access to system resources. Exemplary application programs include: word processing applications, such as MICROSOFT WORD, manufactured by Microsoft Corporation of Redmond, Wash.; spreadsheet programs, such as MICROSOFT EXCEL, manufactured by Microsoft Corporation; electronic mail programs, such as MICROSOFT OUTLOOK, manufactured by Microsoft Corporation and GROUPWISE, manufactured by Novell Corp. of Provo, Utah; and productivity suites such as STAR OFFICE, manufactured by Sun Microsystems of Mountain View, Calif. - The
application server 110 communicates with theproxy server 150 over afirst network 125. Thefirst network 125 can be a local area network (LAN), a metropolitan area network (MAN), or a wide area network (WAN) such as the Internet. Theapplication server 110 and theproxy server 150 may connect to thefirst network 125 through a variety of connections including standard telephone lines, LAN or WAN links (e.g., T1, T3, 56 kb, X.25), broadband connections (ISDN, Frame Relay, ATM), and wireless connections. Connections between theapplication server 110 and theproxy server 150 may use a variety of data-link layer communication protocols (e.g., TCP/IP, IPX, SPX, NetBIOS, NetBEUI, SMB, Ethernet, ARCNET, Fiber Distributed Data Interface (FDDI), RS232, IEEE 802.11, IEEE 802.11a, IEE 802.11b, IEEE 802.11g and direct asynchronous connections). - The
proxy server 150 executes one or more thin-client applications application server 110 communicates the output of theapplication programs client applications proxy server 150 and receives user input directed to theapplication programs client application application server 110 communicates with the thin-client applications network 125 using a presentation-layer protocol such as the Independent Computing Architecture (ICA) protocol, available from Citrix Systems, Inc. of Fort Lauderdale, Fla. or the Remote Display Protocol (RDP), available from Microsoft Corporation. Although only two thin-client applications are depicted in the embodiment shown inFIG. 1 , theproxy server 150 may host any number of thin-client applications - The
proxy server 150 also executes aproxy server application 158. Theproxy server application 158 may be an application program, a subsystem or a service. Theproxy server application 158 manages the thin-client applications proxy server 150. The proxy server application also transmits application output received by the thin-client applications client device 140 and transmits user input received from theclient device 140 to the appropriate thin-client application proxy server 150. - The
proxy server application 158 executing on theproxy server 150 communicates with theclient 140 over asecond network 175. For embodiments in which theclient 140 is an embedded system, theclient 140 and theproxy server 150 may connect to thesecond network 175 through a variety of connections including standard telephone lines, LAN or WAN links (e.g., T1, T3, 56 kb, X.25), broadband connections (ISDN, Frame Relay, ATM), and wireless connections. Connections between theclient 140 and theproxy server 150 may use a variety of data-link layer communication protocols (e.g., TCP/IP, IPX, SPX, NetBIOS, NetBEUI, SMB, Ethernet, ARCNET, Fiber Distributed Data Interface (FDDI), RS232, IEEE 802.11, IEEE 802.11a, IEE 802.11b, IEEE 802.11g and direct asynchronous connections). - In other embodiments, the
client device 140 is a mobile device, such as a cellular telephone or a personal digital assistant. In these embodiments, theclient 140 and theproxy server application 158 connect to the second network using any one of a number of well-known protocols from the GSM or CDMA families, such as W-CDMA. These protocols support commercial wireless communication services and W-CDMA, in particular, is the underlying protocol supporting i-Mode and mMode services, offered by NTT DoCoMo. - The
client device 140 executes aclient application 146. The client application transmits and receives http or https requests to and from theproxy server application 158. The client application 148 transmits user input directed to an executingapplication program proxy server application 158 over thesecond network 175. It is also responsible for rendering graphical output on the screen of the client device corresponding to the output of theapplication program application server 110. - In many embodiments, the
application server 110 and theproxy server 150 are provided as personal computer or computer servers, of the sort manufactured by the Hewlett-Packard Corporation of Palo Alto, Calif. or the Dell Corporation of Round Rock, Tex. For embodiments in which theclient device 140 is an embedded system, theclient device 140 may also be provided as a personal computer.FIGS. 2A and 2B depict block diagrams of atypical computer 200 useful as theapplication server 110, theproxy server 150, or the client device in those embodiments. As shown inFIGS. 2A and 2B , eachcomputer 200 includes acentral processing unit 202, and amain memory unit 204. Eachcomputer 200 may also include other optional elements, such as one or more input/output devices 230 a-230 n (generally referred to using reference numeral 230), and acache memory 240 in communication with thecentral processing unit 202. - The
central processing unit 202 is any logic circuitry that responds to and processes instructions fetched from themain memory unit 204. In many embodiments, the central processing unit is provided by a microprocessor unit, such as: the 8088, the 80286, the 80386, the 80486, the Pentium, Pentium Pro, the Pentium II, the Celeron, or the Xeon processor, all of which are manufactured by Intel Corporation of Mountain View, Calif.; the 68000, the 68010, the 68020, the 68030, the 68040, the PowerPC 601, the PowerPC604, the PowerPC604e, the MPC603e, the MPC603ei, the MPC603ev, the MPC603r, the MPC603p, the MPC740, the MPC745, the MPC750, the MPC755, the MPC7400, the MPC7410, the MPC7441, the MPC7445, the MPC7447, the MPC7450, the MPC7451, the MPC7455, the MPC7457 processor, all of which are manufactured by Motorola Corporation of Schaumburg, Ill.; the Crusoe TM5800, the Crusoe TM5600, the Crusoe TM5500, the Crusoe TM5400, the Efficeon TM8600, the Efficeon TM8300, or the Efficeon TM8620 processor, manufactured by Transmeta Corporation of Santa Clara, Calif.; the RS/6000 processor, the RS64, the RS 64 II, the P2SC, the POWER3, the RS64 III, the POWER3-II, the RS 64 IV, the POWER4, the POWER4+, the POWER5, or the POWER6 processor, all of which are manufactured by International Business Machines of White Plains, N.Y.; or the AMD Opteron, the AMD Athalon 64 FX, the AMD Athalon, or the AMD Duron processor, manufactured by Advanced Micro Devices of Sunnyvale, Calif. -
Main memory unit 204 may be one or more memory chips capable of storing data and allowing any storage location to be directly accessed by themicroprocessor 202, such as Static random access memory (SRAM), Burst SRAM or SynchBurst SRAM (BSRAM), Dynamic random access memory (DRAM), Fast Page Mode DRAM (FPM DRAM), Enhanced DRAM (EDRAM), Extended Data Output RAM (EDO RAM), Extended Data Output DRAM (EDO DRAM), Burst Extended Data Output DRAM (BEDO DRAM), Enhanced DRAM (EDRAM), synchronous DRAM (SDRAM), JEDEC SRAM, PC100 SDRAM, Double Data Rate SDRAM (DDR SDRAM), Enhanced SDRAM (ESDRAM), SyncLink DRAM (SLDRAM), Direct Rambus DRAM (DRDRAM), or Ferroelectric RAM (FRAM). - In the embodiment shown in
FIG. 2A , theprocessor 202 communicates withmain memory 204 via a system bus 220 (described in more detail below).FIG. 2B depicts an embodiment of acomputer system 200 in which the processor communicates directly withmain memory 204 via a memory port. For example, inFIG. 2B themain memory 204 may be DRDRAM. -
FIGS. 2A and 2B depict embodiments in which themain processor 202 communicates directly withcache memory 240 via a secondary bus, sometimes referred to as a “backside” bus. In other embodiments, themain processor 202 communicates withcache memory 240 using thesystem bus 220.Cache memory 240 typically has a faster response time thanmain memory 204 and is typically provided by SRAM, BSRAM, or EDRAM. - In the embodiment shown in
FIG. 2A , theprocessor 202 communicates with various I/O devices 230 via alocal system bus 220. Various busses may be used to connect thecentral processing unit 202 to the I/O devices 230, including a VESA VL bus, an ISA bus, an EISA bus, a MichroChannel Architecture (MCA) bus, a PCI bus, a PCI-X bus, a PCI-Express bus, or a NuBus. For embodiments in which the I/O device is an video display, theprocessor 202 may use an Advanced Graphics Port (AGP) to communicate with the display.FIG. 2B depicts an embodiment of acomputer system 200 in which themain processor 202 communicates directly with I/O device 230 b via HyperTransport, Rapid I/O, or InfiniBand.FIG. 2B also depicts an embodiment in which local busses and direct communication are mixed: theprocessor 202 communicates with I/O device 230 a using a local interconnect bus while communicating with I/O device 230 b directly. - A wide variety of I/O devices 230 may be present in the
computer system 200. Input devices include keyboards, mice, trackpads, trackballs, microphones, and drawing tablets. Output devices include video displays, speakers, inkjet printers, laser printers, and dye-sublimation printers. An I/O device may also provide mass storage for thecomputer system 200 such as a hard disk drive, a floppy disk drive for receiving floppy disks such as 3.5-inch, 5.25-inch disks or ZIP disks, a CD-ROM drive, a CD-R/RW drive, a DVD-ROM drive, tape drives of various formats, and USB storage devices such as the USB Flash Drive line of devices manufactured by Twintech Industry, Inc. of Los Alamitos, Calif. - In further embodiments, an I/O device 230 may be a bridge between the
system bus 220 and an external communication bus, such as a USB bus, an Apple Desktop Bus, an RS-232 serial connection, a SCSI bus, a FireWire bus, a FireWire 800 bus, an Ethernet bus, an AppleTalk bus, a Gigabit Ethernet bus, an Asynchronous Transfer Mode bus, a HIPPI bus, a Super HIPPI bus, a SerialPlus bus, a SCI/LAMP bus, a FibreChannel bus, or a Serial Attached small computer system interface bus. - General-purpose desktop computers of the sort depicted in
FIGS. 2A and 2B typically operate under the control of operating systems, which control scheduling of tasks and access to system resources. Typical operating systems include: MICROSOFT WINDOWS, manufactured by Microsoft Corp. of Redmond, Wash.; MacOS, manufactured by Apple Computer of Cupertino, Calif.; OS/2, manufactured by International Business Machines of Armonk, N.Y.; and Linux, a freely-available operating system distributed by Caldera Corp. of Salt Lake City, Utah, among others. - For embodiments in which the
client device 140 is a mobile device, the client device may be a JAVA-enabled cellular telephone, such as the i50sx, i55sr, i58sr, i85s i88s, i90c, i95cl, or the im11000, all of which are manufactured by Motorola Corp. of Schaumburg, Ill., the 6035 or the 7135, manufactured by Kyocera of Kyoto, Japan, or the i300 or i330, manufactured by Samsung Electronics Co., Ltd., of Seoul, Korea. In other embodiments in which theclient device 140 is mobile, it may be a personal digital assistant (PDA) operating under control of the PalmOS operating system, such as the Tungsten W, the VII, the VIIx, the i705, all of which are manufactured by palmOne, Inc. of Milpitas, California. In further embodiments, theclient device 140 may be a personal digital assistant (PDA) operating under control of the PocketPC operating system, such as the iPAQ 4155, iPAQ 5555, iPAQ 1945, iPAQ 2215, and iPAQ 4255, all of which manufactured by Hewlett-Packard Corporation of Palo Alto, Calif., the ViewSonic V36, manufactured by ViewSonic of Walnut, California, or the Toshiba PocketPC e405, manufactured by Toshiba America, Inc. of New York, N.Y. In still other embodiments the client device is a combination PDA/telephone device such as the Treo 180, Treo 270 or Treo 600, all of which are manufactured by palmOne, Inc. of Milpitas, Calif. In still further embodiment, theclient device 140 is a cellular telephone that operates under control of the PocketPC operating system, such as the MPx200, manufactured by Motorola Corp. -
FIG. 3 depicts the operation of the system just described inFIGS. 1-2B . Theclient application 146 transmits to the proxy server application 158 a request to have anapplication program client application 146 includes the name of the application the user wants to have executed. In other embodiments, the request may identify a file on which the user wants to work. In these embodiments, the request includes the file type and theproxy server application 158 identifies one or more application programs capable of processing the file. For example, theproxy server application 158 may look up the application program to use from a table mapping file types to specific application programs associated with those files types. In still further embodiments, the http request transmitted by theclient application 146 may specifically identify a particular published desktop orparticular server 100 on which theapplication program - The
proxy server application 158 spawns athin client application 152, 154 (step 322) and provides the thin-client application client application client application client application client application - The thin-
client application server 110 to begin execution of anapplication program client application client application server 110 hosting the requestedapplication program client application client device 140 that provides theclient application 146 with the necessary information to connect to theappropriate application server 110. In all of these embodiments, the thin-client application server 110. - In other embodiments, the thin-
client application - The
server 110 begins executing the requestedapplication program first network 125 using a thin-client presentation protocol (step 384). Various embodiments of the steps taken by theapplication server 110 to form presentation-level protocol packets for transmission to the thin-client application - The thin-
client application application server 110 and writes graphical application output represented by the presentation protocol packets to the virtual screen memory (step 346). In many embodiments, the virtual screen memory is a screen buffer, i.e., the virtual screen memory area stores a bitmap representation of data required to form a visual display of the graphical output. - In the embodiment shown in
FIG. 3 , theclient application 146 transmits a request for a static image representing the current state of the graphical application output to the proxy server application (step 304). The client application may request the current state of the graphical application output every minute, every thirty seconds, every 15 seconds, every 10 seconds, every 5 seconds, every other second, once a second, twice a second, five times a second, ten times a second, twenty times a second, or thirty times a second. In other embodiments, theproxy server application 158 periodically transmits a static image representing the current state of the graphical application output to theclient application 146. In these other embodiments, theproxy server application 158 may transmit updates to theclient application 146 every minute, every thirty seconds, every 15 seconds, every 10 seconds, every 5 seconds, every other second, once a second, twice a second, five times a second, ten times a second, twenty times a second, or thirty times a second. Alternatively, theproxy server application 158 may transmit an update to theclient application 146 when theproxy server application 158 determines that a predetermined percentage of the virtual screen memory area has changed state or whenever a request for the current state of the graphical application output is received by the proxy server application. - Referring back to
FIG. 3 , theproxy server application 158 receives the transmitted request (step 324) and creates a static image file using the virtual screen memory of the appropriate thin-client application client application 146 stores the state of its connection with theproxy server application 158, for example, in a “cookie.” In these embodiments, the transmitted request (step 324) may include a session identifier that theproxy server application 158 uses to select from which virtual screen memory to create the static image file. In further of these embodiments, the request includes a unique identifier associated with theclient device 140. For example, for embodiments in which theclient device 140 is a cell phone, the unique identifier may be the telephone number associated with the cell phone. - In other embodiments, the
client application 146 does not store the state of its connection with theproxy server application 158. In these embodiments, the session must be identified in the transmitted request (step 324) in a manner that does not reveal the session identifier to an eavesdropper. For example, the portion of the transmitted http request (step 324) that identifies the session may be encrypted using a private key shared between theclient application 146 and theproxy server application 158. In further of these embodiments, the request includes a unique identifier associated with theclient device 140, which may also be encrypted to protect it from an eavesdropper. For example, for embodiments in which theclient device 140 is a cell phone, the unique identifier may be the telephone number associated with the cell phone. - The static image created by the
proxy server application 158 may be in any one of a number of standard formats, including JPEG, GIF, PNG, TIFF, or BMP. In some embodiments, theproxy server application 158 calls a Common Object Model (COM) Application Programming Interface (API) exposed by the thin-client application - In some embodiments, the
proxy server application 158 optimizes the size of the static image created. In one of these embodiments, theproxy server application 158 determines the size of the screen image by selecting the screen area surrounding the user's current position. The user's current position may determined by using the x coordinate and y coordinate of the last mouse click or the x coordinate and y coordinate of the last mouse position to be transmitted to theproxy server application 158. The amount of the screen above, below, to the left of and to the right of the user's last position that is used to create the screen image may be set to a predetermined number of pixels, or it may be selected based on theclient device 140. - In another embodiment, the
proxy server application 158 increases the amount of image loss that is acceptable. That is, theproxy server application 158 uses a lossy compression algorithm, such as JPEG, to encode the screen image before transmission. Theproxy server application 158 may select the amount of image loss that is acceptable based on the image type to be transmitted, the relative size differential between the screen of theclient device 158 and the virtual screen memory, the absolute size of the screen of theclient device 140, the bit depth of the screen of theclient device 140, or the bandwidth available for use over thenetwork 175. - In still other embodiments, the
proxy server application 158 does not use a static image to transmit screens that have no graphical elements. In these embodiments, theclient application 146 exposes a separate set of programming interfaces for text drawings commands and for graphical commands. For screens having no graphical elements, only text drawing calls would be made to render the application output screen. - In still other embodiments, the
proxy server application 158 scales the application output read from the virtual screen buffer so that the screen, or a larger portion of the screen, is viewable on the screen of theclient device 140. Alternatively, the scaling may be provided by a COM interface. - The
proxy server application 158 transmits the created static image file to the client application 146 (step 328). In some embodiments, a single session identifier may be shared betweenmultiple client devices 140, allowing one ormore client devices 140 to shadow anotherclient device 140, i.e. the output displayed by the “shadowing”client devices 140 is the same as the “shadowed”client device 140. In one embodiment, the static image file is transmitted toclient application 146 using HyperText Transfer Protocol (http) or Secure HyperText Transfer Protocol (https). The protocol used to transmit static image files to theclient application 146 and to receive client input from theclient application 146 is described in more detail in connection withFIG. 4 below. Theclient application 146 displays the received static image file (step 308). - Referring now to
FIG. 4 , one embodiment of a protocol used by theclient application 146 and theproxy server application 158 to exchange user input and application execution output is depicted diagrammatically. In the embodiment shown inFIG. 4 , four protocol commands are depicted: “Get Image” 410; “Send String” 420; “Send Keystroke” 430; and “Send Mouse Event” 440. - As shown in
FIG. 4 , theclient application 146 transmits to theproxy server application 158 an http request 412 identifying the server to which the request is directed and parameters concerning the static image requested by theclient application 146. In the embodiment shown inFIG. 4 , the parameters included in the http request transmitted by theclient application 146 include a starting x coordinate, a starting y coordinate, an ending x coordinate, an ending y coordinate, and a preferred static image file type. Theproxy server application 158 responds with anhttp packet 414 transmitting the requested static image file. - The protocol embodiment shown in
FIG. 4 also includes three input commands, “Send String” 420, “Send Keystroke” 430, and “Send Mouse Event” 440. For each of these commands, theclient application 146 transmits to theproxy server application 158 an http packet identifying the server to which the user input is directed and the input. In the case of the “Send String”command 422, the user input is a series of alphanumeric characters. In the case of the “Send Keystroke”command 432, the user input is the keystroke. In the case of the “Send Mouse Event”command 442, the user input is the x coordinate of the mouse event, the y coordinate of the mouse event, and whether the mouse event includes a “click.” In some embodiments, the “Send Mouse Event” also include an indication of which mouse button was clicked. In each of these cases, theproxy server application 158 responds to theclient application 146 with an “OK”message - Upon receipt of
user input proxy server application 158 forwards the user input to the thin-client application client application application server 110. theapplication server 110 receives the user input and provides it to theapplication program - The present invention may be provided as one or more computer-readable programs embodied on or in one or more articles of manufacture. The article of manufacture may be a floppy disk, a hard disk, a compact disc, a digital versatile disc, a flash memory card, a PROM, a RAM, a ROM, or a magnetic tape. In general, the computer-readable programs may be implemented in any programming language. Some examples of languages that can be used include C, C++, C#, or JAVA. The software programs may be stored on or in one or more articles of manufacture as object code.
- While the invention has been shown and described with reference to specific preferred embodiments, it should be understood by those skilled in the art that various changes in form and detail may be made therein without departing from the spirit and scope of the invention as defined by the following claims.
Claims (54)
1. A system for displaying at a user device output produced by an application program executing on a server, the system comprising:
an application server executing an application program;
a proxy server receiving from said application server data representing a screen of graphical display output produced by the application program;
a user device executing a client application, said client application receiving from said proxy server static image data representing the screen of graphical display output produced by the application program.
2. The system of claim 1 wherein said application server comprises one of a plurality of servers in a server farm.
3. The system of claim 1 wherein said proxy server receives input transmitted from said client application and transmits the received input to said application server.
4. The system of claim 1 wherein said proxy server receives data from said application server via a presentation protocol.
5. The system of claim 1 wherein said proxy server receives data from said application server via the Independent Computing Architecture (ICA) protocol.
6. The system of claim 1 wherein said proxy server receives data from said application server via the Remote Display Protocol (RDP).
7. The system of claim 1 wherein said proxy server modifies the data received from said application server.
8. The system of claim 7 wherein said proxy server scales the data received from said application server.
9. The system of claim 7 wherein said proxy server modifies the color depth of the data received from said application server.
10. The system of claim 7 wherein said proxy server performs lossy image compression on the data received from said application server.
11. The system of claim 1 wherein said proxy server receives from said application server data representing a change in a screen of graphical display output produced by the application program and transmits updated static image data to said client application.
12. The system of claim 11 wherein the updated static image data is transmitted by said proxy server after a predetermined period of time has elapsed.
13. The system of claim 1 wherein the static image data received by said client application comprises at least a portion of an image file in GIF format.
14. The system of claim 1 wherein the static image data received by said client application comprises at least a portion of an image in JPEG format.
15. The system of claim 1 wherein said client application receives static image data from said proxy server via the Hyper Text Transfer Protocol (HTTP).
16. The system of claim 1 wherein said client application comprises a JAVA application.
17. The system of claim 1 wherein said client application uses less than 50 KB of memory during execution.
18. The system of claim 1 wherein said client application requests updated static image data from said proxy server.
19. The system of claim 1 wherein said user device comprises a cell phone.
20. A method for displaying at a user device output produced by an application program executing on a server, the method comprising the steps of:
(a) executing, by an application server, an application producing a screen of graphical user interface data;
(b) transmitting to a proxy server, by the application server, the screen of produced graphical user interface data;
(c) transmitting to a user device, by the proxy server, static image data representing at least a portion of the screen of produced graphical user interface data; and
(d) displaying, by the user device, the transmitted static image data.
21. The method of claim 20 further comprising the step of formatting, by the application server, the screen of graphical user interface data produced by the executing application into at least a first message in a presentation protocol format.
22. The method of claim 20 further comprising the step of formatting, by the application server, the screen of graphical user interface data produced by the executing application into at least a first message in Independent Computing Architecture (ICA) protocol format.
23. The method of claim 20 further comprising the step of formatting, by the application server, the screen of graphical user interface data produced by the executing application into at a first message in Remote Display Protocol (RDP) format.
24. The method of claim 20 further comprising the step of creating, by the proxy server, a static image file representing at least a portion of the screen of produced graphical user interface data.
25. The method of claim 20 further comprising the step of modifying, by the proxy server, the data received from the application server.
26. The method of claim 25 wherein said modifying step comprises applying lossy image compression to the data received from the application server.
27. The method of claim 25 wherein said modifying step comprises changing the color depth of the data received from the application server.
28. The method of claim 25 wherein said modifying step comprises scaling the data received from the application server.
29. The method of claim 18 wherein step (c) comprises transmitting to a user device, by the proxy server, GIF image data representing at least a portion of the screen of graphical user output.
30. The method of claim 20 wherein step (c) comprises transmitting to a user device, by the proxy server, JPEG image data representing at least a portion of the screen of graphical user output.
31. The method of claim 20 wherein step (c) comprises transmitting to a user device via the Hyper Text Transfer Protocol (HTTP), by the proxy server, static image data representing at least a portion of the screen of produced graphical user interface data.
32. The method of claim 20 further comprising the step of receiving, by the proxy server, data representing input from the user device.
33. The method of claim 32 further comprising the step of transmitting, by the proxy server, the received user input data to the application server.
34. The method of claim 20 further comprising the step of receiving, by the proxy server, data from the application execution server representing a change in the screen of produced graphical user interface data.
35. The method of claim 34 further comprising the step of transmitting to a user device, by the proxy server, static image data representing the changed screen of produced graphical user interface data.
36. The method of claim 35 wherein said transmitting step occurs after a predetermined period of time has elapsed.
37. The method of claim 20 further comprising the step of transmitting, by the client application, a request for updated static image information.
38. An apparatus for displaying at a user device output produced by an application program executing on a server, the apparatus comprising:
a first protocol handler receiving from an application server data in a first protocol format, the data representative of a screen of graphical display output produced by an application executing on the application server; and
a second protocol handler transmitting to a client application for display static image data in a second protocol format, the static image data representative of at least a portion of the screen of graphical display output received by the first protocol handler.
39. The apparatus of claim 38 wherein the second protocol handler receives from the client application data representative of user input.
40. The apparatus of claim 39 wherein the first protocol handler transmits to the application server the data representative of user input received by the second protocol handler.
41. The apparatus of claim 38 wherein the first protocol handler translates the received data from the first protocol to the second protocol.
42. The apparatus of claim 38 wherein the second protocol handler translates the received data from the first protocol to the second protocol.
43. The apparatus of claim 38 further comprising a translation module accessing the data received by the first protocol handler in the first protocol and translating it into at least one message in the second protocol format.
44. A method for displaying at a user device graphical display output produced by an application program executing on a server, the method comprising the steps of:
(a) receiving from an application server, via a first protocol, data representative of a screen of graphical display output produced by an application executing on the application server; and
(b) transmitting to a client application for display, via a second protocol, static image data representative of at least a portion of the screen of graphical display output produced by the application executing on the application server.
45. The method of claim 44 further comprising the step of receiving from the client application, via the second protocol, data representative of user input to the application program.
46. The method of claim 45 further comprising the step of transmitting to the application server, via the first protocol, data representative of user input received from the client application.
47. The method of claim 44 further comprising the step of translating the data representative of the screen of graphical display output from the format of the first protocol to the format of the second protocol.
48. The method of claim 44 wherein step (b) comprises transmitting to a client application for display, via a second protocol, GIF data representative of at least a portion of the screen of graphical display output of the application executing on the application server.
49. The method of claim 48 wherein the GIF file is transmitted to the client application via the HyperText Transfer Protocol (HTTP).
50. The method of claim 44 wherein step (b) comprises transmitting to a client application for display, via a second protocol, JPEG data representative of at least a portion of the screen of graphical display output of the application executing on the application server.
51. A system for displaying at a user device output produced by an application program executing on a server, the system comprising:
an application server executing an application program;
a proxy server receiving from said application server data representing a screen of graphical display output produced by the application program via a presentation-level protocol;
a user device executing a client application, said client application receiving from said proxy server static image data representing the screen of graphical display output produced by the application program via HyperText Transfer Protocol (HTTP) commands.
52. A method for displaying at a user device output produced by an application program executing on a server, the method comprising the steps of:
(a) executing, by an application server, an application producing a screen of graphical user interface data;
(b) transmitting to a proxy server via a presentation-level protocol, by the application server, the screen of produced graphical user interface data;
(c) transmitting to a user device via HyperText Transfer Protocol (HTTP) commands, by the proxy server, static image data representing at least a portion of the screen of produced graphical user interface data; and
(d) displaying, by the user device, the transmitted static image data.
53. An article of manufacture having embodied thereon computer-readable program means for displaying at a user device output produced by an application program executing on a server, the article of manufacture comprising:
computer-readable program means for transmitting to a proxy server a screen of graphical user interface data produced by an application executing on the server;
computer-readable program means for communicating to a user device, by the proxy server, static image data representing at least a portion of the screen of produced graphical user interface data; and
computer-readable program means for displaying, by the user device, the transmitted static image data.
54. An article of manufacture having embodied thereon computer-readable programs means for displaying at a user device graphical display output produced by an application program executing on a server, the article of manufacture comprising:
computer-readable program means for receiving from an application server, via a first protocol, data representative of a screen of graphical display output produced by an application executing on the application server; and
computer-readable programs means for transmitting to a client application for display, via a second protocol, static image data representative of at least a portion of the screen of graphical display output produced by the application executing on the application server.
Priority Applications (8)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/709,581 US20050256923A1 (en) | 2004-05-14 | 2004-05-14 | Methods and apparatus for displaying application output on devices having constrained system resources |
EP05750298A EP1756709A1 (en) | 2004-05-14 | 2005-05-13 | Methods and apparatus for displaying application output on devices having constrained system resources |
CA002566717A CA2566717A1 (en) | 2004-05-14 | 2005-05-13 | Methods and apparatus for displaying application output on devices having constrained system resources |
JP2007513436A JP2008502176A (en) | 2004-05-14 | 2005-05-13 | Method and system for displaying application output on a device having constrained system resources |
KR1020067025934A KR20070012544A (en) | 2004-05-14 | 2005-05-13 | Methods and apparatus for displaying application output on devices having constrained system resources |
AU2005246306A AU2005246306A1 (en) | 2004-05-14 | 2005-05-13 | Methods and apparatus for displaying application output on devices having constrained system resources |
PCT/US2005/016928 WO2005114395A1 (en) | 2004-05-14 | 2005-05-13 | Methods and apparatus for displaying application output on devices having constrained system resources |
IL179205A IL179205A0 (en) | 2004-05-14 | 2006-11-13 | Methods and apparatus for displaying application output on devices having constrained system resources |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/709,581 US20050256923A1 (en) | 2004-05-14 | 2004-05-14 | Methods and apparatus for displaying application output on devices having constrained system resources |
Publications (1)
Publication Number | Publication Date |
---|---|
US20050256923A1 true US20050256923A1 (en) | 2005-11-17 |
Family
ID=34969731
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/709,581 Abandoned US20050256923A1 (en) | 2004-05-14 | 2004-05-14 | Methods and apparatus for displaying application output on devices having constrained system resources |
Country Status (8)
Country | Link |
---|---|
US (1) | US20050256923A1 (en) |
EP (1) | EP1756709A1 (en) |
JP (1) | JP2008502176A (en) |
KR (1) | KR20070012544A (en) |
AU (1) | AU2005246306A1 (en) |
CA (1) | CA2566717A1 (en) |
IL (1) | IL179205A0 (en) |
WO (1) | WO2005114395A1 (en) |
Cited By (73)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060047836A1 (en) * | 2004-08-13 | 2006-03-02 | Rao Goutham P | A method for maintaining transaction integrity across multiple remote access servers |
US20090094387A1 (en) * | 2007-10-05 | 2009-04-09 | Pano Logic, Inc. | Universal serial bus assistance engine |
KR100900168B1 (en) | 2006-04-19 | 2009-06-02 | 닛본 덴끼 가부시끼가이샤 | Screen transition program generating method and device |
US20090287831A1 (en) * | 2008-05-15 | 2009-11-19 | Kazushi Nakagawa | Application distribution control system, application distribution control method, information processing apparatus, and client terminal |
US20090307603A1 (en) * | 2008-06-05 | 2009-12-10 | Microsoft Corporation | Dynamic content delivery to network-enabled static |
US20090307571A1 (en) * | 2008-06-05 | 2009-12-10 | Microsoft Corporation | Image acquisition from dynamic content for delivery to network-enabled static display devices |
US20100058354A1 (en) * | 2008-08-28 | 2010-03-04 | Gene Fein | Acceleration of multimedia production |
US20100083363A1 (en) * | 2008-09-26 | 2010-04-01 | Microsoft Corporation | Binding activation of network-enabled devices to web-based services |
WO2010048539A1 (en) * | 2008-10-26 | 2010-04-29 | Citrix Systems, Inc. | Panning a native display on a mobile computing device to a window, interpreting a gesture-based instruction to scroll contents of the window, and wrapping text on the window |
US7724657B2 (en) | 2004-07-23 | 2010-05-25 | Citrix Systems, Inc. | Systems and methods for communicating a lossy protocol via a lossless protocol |
US20100174818A1 (en) * | 2009-01-07 | 2010-07-08 | Microsoft Corporation | Input Service for Client Devices |
US7757074B2 (en) | 2004-06-30 | 2010-07-13 | Citrix Application Networking, Llc | System and method for establishing a virtual private network |
US20100205656A1 (en) * | 2009-02-06 | 2010-08-12 | Fein Gene S | Media monitoring system |
US20100205332A1 (en) * | 2009-02-06 | 2010-08-12 | Gene Fein | Media file synchronization |
US7849269B2 (en) | 2005-01-24 | 2010-12-07 | Citrix Systems, Inc. | System and method for performing entity tag and cache control of a dynamically generated object not identified as cacheable in a network |
US7921184B2 (en) | 2005-12-30 | 2011-04-05 | Citrix Systems, Inc. | System and method for performing flash crowd caching of dynamically generated objects in a data communication network |
US7925694B2 (en) | 2007-10-19 | 2011-04-12 | Citrix Systems, Inc. | Systems and methods for managing cookies via HTTP content layer |
US7937370B2 (en) | 2000-09-22 | 2011-05-03 | Axeda Corporation | Retrieving data from a server |
US7949705B1 (en) * | 2004-06-14 | 2011-05-24 | Oracle America, Inc. | Dynamic desktop switching for thin clients |
US7966418B2 (en) | 2003-02-21 | 2011-06-21 | Axeda Corporation | Establishing a virtual tunnel between two computer programs |
US7978714B2 (en) | 2004-07-23 | 2011-07-12 | Citrix Systems, Inc. | Methods and systems for securing access to private networks using encryption and authentication technology built in to peripheral devices |
US7978716B2 (en) | 2003-11-24 | 2011-07-12 | Citrix Systems, Inc. | Systems and methods for providing a VPN solution |
US20110179106A1 (en) * | 2010-01-15 | 2011-07-21 | Ibahn General Holdings Corporation | Virtual user interface |
US8055758B2 (en) | 2000-07-28 | 2011-11-08 | Axeda Corporation | Reporting the state of an apparatus to a remote computer |
US8060886B2 (en) | 2002-04-17 | 2011-11-15 | Axeda Corporation | XML scripting of SOAP commands |
US8065397B2 (en) | 2006-12-26 | 2011-11-22 | Axeda Acquisition Corporation | Managing configurations of distributed devices |
US8090877B2 (en) | 2008-01-26 | 2012-01-03 | Citrix Systems, Inc. | Systems and methods for fine grain policy driven cookie proxying |
US8108543B2 (en) | 2000-09-22 | 2012-01-31 | Axeda Corporation | Retrieving data from a server |
US8169436B2 (en) | 2008-01-27 | 2012-05-01 | Citrix Systems, Inc. | Methods and systems for remoting three dimensional graphics |
US20120172134A1 (en) * | 1996-11-14 | 2012-07-05 | Bally Gaming, Inc. | Browser manager, gaming machine, gaming network, and system |
US8255456B2 (en) | 2005-12-30 | 2012-08-28 | Citrix Systems, Inc. | System and method for performing flash caching of dynamically generated objects in a data communication network |
US8301839B2 (en) | 2005-12-30 | 2012-10-30 | Citrix Systems, Inc. | System and method for performing granular invalidation of cached dynamically generated objects in a data communication network |
US20120324358A1 (en) * | 2011-06-16 | 2012-12-20 | Vmware, Inc. | Delivery of a user interface using hypertext transfer protocol |
US8370479B2 (en) | 2006-10-03 | 2013-02-05 | Axeda Acquisition Corporation | System and method for dynamically grouping devices based on present device conditions |
US8406119B2 (en) | 2001-12-20 | 2013-03-26 | Axeda Acquisition Corporation | Adaptive device-initiated polling |
US20130110918A1 (en) * | 2010-07-06 | 2013-05-02 | Nec Corporation | Thin client system, management server, management method and program |
US8495305B2 (en) | 2004-06-30 | 2013-07-23 | Citrix Systems, Inc. | Method and device for performing caching of dynamically generated objects in a data communication network |
US8495013B2 (en) | 2010-12-24 | 2013-07-23 | Kt Corporation | Distributed storage system and method for storing objects based on locations |
US8549149B2 (en) | 2004-12-30 | 2013-10-01 | Citrix Systems, Inc. | Systems and methods for providing client-side accelerated access to remote applications via TCP multiplexing |
EP2649500A2 (en) * | 2010-12-10 | 2013-10-16 | Wyse Technology L.L.C. | Methods and systems for accessing and controlling a remote desktop of a remote machine in real time by a web browser at a client device via http api utilizing a transcoding server |
US20130273897A1 (en) * | 2010-08-29 | 2013-10-17 | Vascode Technologies Ltd. | System and methods for multi-tasking in a clientless mobile phone |
US20130283171A1 (en) * | 2012-03-28 | 2013-10-24 | Skytap | Methods and systems for an intermediate graphical desktop sharing protocol |
CN103460670A (en) * | 2010-12-10 | 2013-12-18 | 韦斯技术有限公司 | Methods and systems for a remote desktop session utilizing a http handler and a remote desktop client common interface |
US8700695B2 (en) | 2004-12-30 | 2014-04-15 | Citrix Systems, Inc. | Systems and methods for providing client-side accelerated access to remote applications via TCP pooling |
US8706877B2 (en) | 2004-12-30 | 2014-04-22 | Citrix Systems, Inc. | Systems and methods for providing client-side dynamic redirection to bypass an intermediary |
US8739274B2 (en) | 2004-06-30 | 2014-05-27 | Citrix Systems, Inc. | Method and device for performing integrated caching in a data communication network |
US8775870B2 (en) | 2010-12-22 | 2014-07-08 | Kt Corporation | Method and apparatus for recovering errors in a storage system |
US8826118B2 (en) * | 1999-05-14 | 2014-09-02 | F5 Networks, Inc. | Applications and services supported by a client-server independent intermediary mechanism |
US20140289411A1 (en) * | 2013-03-21 | 2014-09-25 | Nextbit Systems Inc. | Decentralized operating system |
US8849756B2 (en) | 2011-04-13 | 2014-09-30 | Kt Corporation | Selecting data nodes in distributed storage system |
US8856777B2 (en) | 2004-12-30 | 2014-10-07 | Citrix Systems, Inc. | Systems and methods for automatic installation and execution of a client-side acceleration program |
US8892495B2 (en) | 1991-12-23 | 2014-11-18 | Blanding Hovenweep, Llc | Adaptive pattern recognition based controller apparatus and method and human-interface therefore |
US8954595B2 (en) | 2004-12-30 | 2015-02-10 | Citrix Systems, Inc. | Systems and methods for providing client-side accelerated access to remote applications via TCP buffering |
US8966112B1 (en) | 2009-11-30 | 2015-02-24 | Dell Software Inc. | Network protocol proxy |
US9003455B2 (en) | 2010-07-30 | 2015-04-07 | Guest Tek Interactive Entertainment Ltd. | Hospitality media system employing virtual set top boxes |
US20150134725A1 (en) * | 2013-11-13 | 2015-05-14 | Adrian Cesena, Jr. | Computer-implemented methods, computer readable medium and systems for virtual application execution |
US9052962B2 (en) | 2011-03-31 | 2015-06-09 | Kt Corporation | Distributed storage of data in a cloud storage system |
US20150244755A1 (en) * | 2012-10-10 | 2015-08-27 | Huawei Device Co., Ltd. | Method, apparatus, and home network system for presenting multiple images, and mobile terminal |
US9158460B2 (en) | 2011-04-25 | 2015-10-13 | Kt Corporation | Selecting data nodes using multiple storage policies in cloud storage system |
EP2649532A4 (en) * | 2010-12-10 | 2016-03-02 | Wyse Technology Llc | Methods and systems for remote desktop session redrawing via http headers |
EP2649533A4 (en) * | 2010-12-10 | 2016-03-23 | Wyse Technology Llc | Methods and systems for facilitating a remote desktop session utilizing long polling |
US9514242B2 (en) | 2011-08-29 | 2016-12-06 | Vmware, Inc. | Presenting dynamically changing images in a limited rendering environment |
US9535563B2 (en) | 1999-02-01 | 2017-01-03 | Blanding Hovenweep, Llc | Internet appliance system and method |
US9549045B2 (en) | 2011-08-29 | 2017-01-17 | Vmware, Inc. | Sharing remote sessions of a user interface and/or graphics of a computer |
US9800939B2 (en) | 2009-04-16 | 2017-10-24 | Guest Tek Interactive Entertainment Ltd. | Virtual desktop services with available applications customized according to user type |
US9888062B2 (en) | 2010-12-24 | 2018-02-06 | Kt Corporation | Distributed storage system including a plurality of proxy servers and method for managing objects |
US20180124215A1 (en) * | 2015-03-25 | 2018-05-03 | Sino-Japanese Engineering Corporation | Device control method by thin client system |
US10165042B2 (en) | 2010-12-10 | 2018-12-25 | Wyse Technology L.L.C. | Methods and systems for conducting a remote desktop session via HTML that supports a 2D canvas and dynamic drawing |
US10248374B2 (en) | 2010-12-10 | 2019-04-02 | Wyse Technology L.L.C. | Methods and systems for a remote desktop session utilizing HTTP header |
US10749914B1 (en) | 2007-07-18 | 2020-08-18 | Hammond Development International, Inc. | Method and system for enabling a communication device to remotely execute an application |
US11444878B2 (en) * | 2019-09-04 | 2022-09-13 | Yahoo Ad Tech Llc | Intelligent dataflow-based service discovery and analysis |
US11647095B1 (en) * | 2018-10-02 | 2023-05-09 | Intuit Inc. | Method and system for orchestrating communications between application services through a unified connector platform |
US11778007B2 (en) * | 2018-08-14 | 2023-10-03 | Kt Corporation | Server, method and user device for providing virtual reality content |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100800447B1 (en) | 2006-09-27 | 2008-02-04 | 엘지전자 주식회사 | Java midlet screen size correcting method, and mobile terminal thereof |
US20080270911A1 (en) * | 2007-04-24 | 2008-10-30 | Nehal Dantwala | System and method to develop a custom application for a multi-function peripheral (mfp) |
JP2009290469A (en) * | 2008-05-28 | 2009-12-10 | Hideaki Watanabe | Network communication system |
US8001213B2 (en) | 2008-12-22 | 2011-08-16 | Nokia Corporation | Method, apparatus and computer program product for providing unrestricted content on a user terminal |
FR2944618B1 (en) * | 2009-04-17 | 2011-11-25 | Gerard Weerts | SYSTEM FOR PROVIDING AN APPLICATION ON A USER TERMINAL. |
WO2011111926A2 (en) * | 2010-03-12 | 2011-09-15 | 블루가 (주) | Apparatus and method for implementing web-based user interface on mobile terminal |
KR20100048965A (en) * | 2010-03-12 | 2010-05-11 | 블루가 (주) | Apparatus for implementing a web-based user interface and method thereof |
KR20120035493A (en) * | 2010-10-05 | 2012-04-16 | 엘지전자 주식회사 | Network monitor system and the operating method |
US20130234984A1 (en) | 2012-03-06 | 2013-09-12 | Industry-University Cooperation Foundation Hanyang University | System for linking and controlling terminals and user terminal used in the same |
Citations (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5577188A (en) * | 1994-05-31 | 1996-11-19 | Future Labs, Inc. | Method to provide for virtual screen overlay |
US5983247A (en) * | 1996-05-30 | 1999-11-09 | Matsushita Electric Industrial Co., Ltd. | Data conversion apparatus for reading a document for a display screen and generating a display image for another display screen which has a different aspect ratio from the former display screen |
US6009410A (en) * | 1997-10-16 | 1999-12-28 | At&T Corporation | Method and system for presenting customized advertising to a user on the world wide web |
US6173316B1 (en) * | 1998-04-08 | 2001-01-09 | Geoworks Corporation | Wireless communication device with markup language based man-machine interface |
US6202096B1 (en) * | 1997-04-15 | 2001-03-13 | Hewlett-Packard Company | Method and apparatus for device interaction by protocol |
US20010047406A1 (en) * | 2000-04-13 | 2001-11-29 | Netilla Networks Inc. | Apparatus and accompanying methods for providing, through a centralized server site, an integrated virtual office environment, remotely accessible via a network-connected web browser, with remote network monitoring and management capabilities |
US20020046262A1 (en) * | 2000-08-18 | 2002-04-18 | Joerg Heilig | Data access system and method with proxy and remote processing |
US20020054090A1 (en) * | 2000-09-01 | 2002-05-09 | Silva Juliana Freire | Method and apparatus for creating and providing personalized access to web content and services from terminals having diverse capabilities |
US6400996B1 (en) * | 1999-02-01 | 2002-06-04 | Steven M. Hoffberg | Adaptive pattern recognition based control system and method |
US20020091738A1 (en) * | 2000-06-12 | 2002-07-11 | Rohrabaugh Gary B. | Resolution independent vector display of internet content |
US20030041110A1 (en) * | 2000-07-28 | 2003-02-27 | Storymail, Inc. | System, Method and Structure for generating and using a compressed digital certificate |
US20030055327A1 (en) * | 1997-11-13 | 2003-03-20 | Andrew Shaw | Color quality and packet shaping features for displaying an application on a variety of client devices |
US20040015537A1 (en) * | 2002-07-15 | 2004-01-22 | Richard Doerksen | Handheld client framework system |
US20040139208A1 (en) * | 2002-12-03 | 2004-07-15 | Raja Tuli | Portable internet access device back page cache |
US6850252B1 (en) * | 1999-10-05 | 2005-02-01 | Steven M. Hoffberg | Intelligent electronic appliance system and method |
US6931270B2 (en) * | 2002-02-11 | 2005-08-16 | General Electric Company | Method and system for conducting medical imaging transactions |
US20050186913A1 (en) * | 2004-02-24 | 2005-08-25 | Research In Motion Limited | Remote user interface |
US7006881B1 (en) * | 1991-12-23 | 2006-02-28 | Steven Hoffberg | Media recording device with remote graphic user interface |
US7130792B2 (en) * | 2000-10-16 | 2006-10-31 | Iis Inc. | Method for offering multilingual information translated in many languages through a communication network |
US7174286B2 (en) * | 2001-07-26 | 2007-02-06 | Irise | Systems and methods for defining a simulated interactive web page |
US7216149B1 (en) * | 2000-08-18 | 2007-05-08 | International Business Machines Corporation | Gathering enriched web server activity data of cached web content |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000242566A (en) * | 1999-02-23 | 2000-09-08 | Dainippon Printing Co Ltd | Image distribution system, image proxy device and recording medium |
EP1182576A1 (en) * | 2000-08-18 | 2002-02-27 | Sun Microsystems, Inc. | Data access system and method with proxy and remote processing |
JP2003323402A (en) * | 2002-05-01 | 2003-11-14 | Ntt Docomo Inc | Thin client system, and thin client terminal, thin client terminal control method and control program therefor |
JP2003348562A (en) * | 2002-05-27 | 2003-12-05 | Telecommunication Advancement Organization Of Japan | System for distributing cg image |
-
2004
- 2004-05-14 US US10/709,581 patent/US20050256923A1/en not_active Abandoned
-
2005
- 2005-05-13 EP EP05750298A patent/EP1756709A1/en not_active Withdrawn
- 2005-05-13 AU AU2005246306A patent/AU2005246306A1/en not_active Abandoned
- 2005-05-13 KR KR1020067025934A patent/KR20070012544A/en not_active Application Discontinuation
- 2005-05-13 JP JP2007513436A patent/JP2008502176A/en active Pending
- 2005-05-13 WO PCT/US2005/016928 patent/WO2005114395A1/en active Application Filing
- 2005-05-13 CA CA002566717A patent/CA2566717A1/en not_active Abandoned
-
2006
- 2006-11-13 IL IL179205A patent/IL179205A0/en unknown
Patent Citations (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7006881B1 (en) * | 1991-12-23 | 2006-02-28 | Steven Hoffberg | Media recording device with remote graphic user interface |
US5577188A (en) * | 1994-05-31 | 1996-11-19 | Future Labs, Inc. | Method to provide for virtual screen overlay |
US5983247A (en) * | 1996-05-30 | 1999-11-09 | Matsushita Electric Industrial Co., Ltd. | Data conversion apparatus for reading a document for a display screen and generating a display image for another display screen which has a different aspect ratio from the former display screen |
US6202096B1 (en) * | 1997-04-15 | 2001-03-13 | Hewlett-Packard Company | Method and apparatus for device interaction by protocol |
US6721286B1 (en) * | 1997-04-15 | 2004-04-13 | Hewlett-Packard Development Company, L.P. | Method and apparatus for device interaction by format |
US6009410A (en) * | 1997-10-16 | 1999-12-28 | At&T Corporation | Method and system for presenting customized advertising to a user on the world wide web |
US20030055327A1 (en) * | 1997-11-13 | 2003-03-20 | Andrew Shaw | Color quality and packet shaping features for displaying an application on a variety of client devices |
US6470381B2 (en) * | 1998-04-08 | 2002-10-22 | Access Co., Ltd. | Wireless communication device with markup language based man-machine interface |
US7228340B2 (en) * | 1998-04-08 | 2007-06-05 | Access Co., Ltd | Wireless communication device with markup language based man-machine interface |
US6317781B1 (en) * | 1998-04-08 | 2001-11-13 | Geoworks Corporation | Wireless communication device with markup language based man-machine interface |
US6173316B1 (en) * | 1998-04-08 | 2001-01-09 | Geoworks Corporation | Wireless communication device with markup language based man-machine interface |
US6675204B2 (en) * | 1998-04-08 | 2004-01-06 | Access Co., Ltd. | Wireless communication device with markup language based man-machine interface |
US6400996B1 (en) * | 1999-02-01 | 2002-06-04 | Steven M. Hoffberg | Adaptive pattern recognition based control system and method |
US6640145B2 (en) * | 1999-02-01 | 2003-10-28 | Steven Hoffberg | Media recording device with packet data interface |
US6850252B1 (en) * | 1999-10-05 | 2005-02-01 | Steven M. Hoffberg | Intelligent electronic appliance system and method |
US20010047406A1 (en) * | 2000-04-13 | 2001-11-29 | Netilla Networks Inc. | Apparatus and accompanying methods for providing, through a centralized server site, an integrated virtual office environment, remotely accessible via a network-connected web browser, with remote network monitoring and management capabilities |
US20020091738A1 (en) * | 2000-06-12 | 2002-07-11 | Rohrabaugh Gary B. | Resolution independent vector display of internet content |
US20030041110A1 (en) * | 2000-07-28 | 2003-02-27 | Storymail, Inc. | System, Method and Structure for generating and using a compressed digital certificate |
US7216149B1 (en) * | 2000-08-18 | 2007-05-08 | International Business Machines Corporation | Gathering enriched web server activity data of cached web content |
US20020046262A1 (en) * | 2000-08-18 | 2002-04-18 | Joerg Heilig | Data access system and method with proxy and remote processing |
US20020054090A1 (en) * | 2000-09-01 | 2002-05-09 | Silva Juliana Freire | Method and apparatus for creating and providing personalized access to web content and services from terminals having diverse capabilities |
US7130792B2 (en) * | 2000-10-16 | 2006-10-31 | Iis Inc. | Method for offering multilingual information translated in many languages through a communication network |
US7174286B2 (en) * | 2001-07-26 | 2007-02-06 | Irise | Systems and methods for defining a simulated interactive web page |
US6931270B2 (en) * | 2002-02-11 | 2005-08-16 | General Electric Company | Method and system for conducting medical imaging transactions |
US20040015537A1 (en) * | 2002-07-15 | 2004-01-22 | Richard Doerksen | Handheld client framework system |
US20040139208A1 (en) * | 2002-12-03 | 2004-07-15 | Raja Tuli | Portable internet access device back page cache |
US20050186913A1 (en) * | 2004-02-24 | 2005-08-25 | Research In Motion Limited | Remote user interface |
Cited By (150)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8892495B2 (en) | 1991-12-23 | 2014-11-18 | Blanding Hovenweep, Llc | Adaptive pattern recognition based controller apparatus and method and human-interface therefore |
US8943185B2 (en) * | 1996-11-14 | 2015-01-27 | Bally Gaming, Inc. | Networked gaming system having a browser manager |
US20120172134A1 (en) * | 1996-11-14 | 2012-07-05 | Bally Gaming, Inc. | Browser manager, gaming machine, gaming network, and system |
US9535563B2 (en) | 1999-02-01 | 2017-01-03 | Blanding Hovenweep, Llc | Internet appliance system and method |
US8826118B2 (en) * | 1999-05-14 | 2014-09-02 | F5 Networks, Inc. | Applications and services supported by a client-server independent intermediary mechanism |
US8898294B2 (en) | 2000-07-28 | 2014-11-25 | Axeda Corporation | Reporting the state of an apparatus to a remote computer |
US8055758B2 (en) | 2000-07-28 | 2011-11-08 | Axeda Corporation | Reporting the state of an apparatus to a remote computer |
US8762497B2 (en) | 2000-09-22 | 2014-06-24 | Axeda Corporation | Retrieving data from a server |
US8108543B2 (en) | 2000-09-22 | 2012-01-31 | Axeda Corporation | Retrieving data from a server |
US10069937B2 (en) | 2000-09-22 | 2018-09-04 | Ptc Inc. | Retrieving data from a server |
US7937370B2 (en) | 2000-09-22 | 2011-05-03 | Axeda Corporation | Retrieving data from a server |
US9170902B2 (en) | 2001-12-20 | 2015-10-27 | Ptc Inc. | Adaptive device-initiated polling |
US8406119B2 (en) | 2001-12-20 | 2013-03-26 | Axeda Acquisition Corporation | Adaptive device-initiated polling |
US9674067B2 (en) | 2001-12-20 | 2017-06-06 | PTC, Inc. | Adaptive device-initiated polling |
US10708346B2 (en) | 2002-04-17 | 2020-07-07 | Ptc Inc. | Scripting of soap commands |
US8060886B2 (en) | 2002-04-17 | 2011-11-15 | Axeda Corporation | XML scripting of SOAP commands |
US8752074B2 (en) | 2002-04-17 | 2014-06-10 | Axeda Corporation | Scripting of soap commands |
US9591065B2 (en) | 2002-04-17 | 2017-03-07 | Ptc Inc. | Scripting of SOAP commands |
US10069939B2 (en) | 2003-02-21 | 2018-09-04 | Ptc Inc. | Establishing a virtual tunnel between two computers |
US9002980B2 (en) | 2003-02-21 | 2015-04-07 | Axeda Corporation | Establishing a virtual tunnel between two computer programs |
US8291039B2 (en) | 2003-02-21 | 2012-10-16 | Axeda Corporation | Establishing a virtual tunnel between two computer programs |
US7966418B2 (en) | 2003-02-21 | 2011-06-21 | Axeda Corporation | Establishing a virtual tunnel between two computer programs |
US8559449B2 (en) | 2003-11-11 | 2013-10-15 | Citrix Systems, Inc. | Systems and methods for providing a VPN solution |
US7978716B2 (en) | 2003-11-24 | 2011-07-12 | Citrix Systems, Inc. | Systems and methods for providing a VPN solution |
US7949705B1 (en) * | 2004-06-14 | 2011-05-24 | Oracle America, Inc. | Dynamic desktop switching for thin clients |
US8726006B2 (en) | 2004-06-30 | 2014-05-13 | Citrix Systems, Inc. | System and method for establishing a virtual private network |
US8495305B2 (en) | 2004-06-30 | 2013-07-23 | Citrix Systems, Inc. | Method and device for performing caching of dynamically generated objects in a data communication network |
US7757074B2 (en) | 2004-06-30 | 2010-07-13 | Citrix Application Networking, Llc | System and method for establishing a virtual private network |
US8261057B2 (en) | 2004-06-30 | 2012-09-04 | Citrix Systems, Inc. | System and method for establishing a virtual private network |
US8739274B2 (en) | 2004-06-30 | 2014-05-27 | Citrix Systems, Inc. | Method and device for performing integrated caching in a data communication network |
US7978714B2 (en) | 2004-07-23 | 2011-07-12 | Citrix Systems, Inc. | Methods and systems for securing access to private networks using encryption and authentication technology built in to peripheral devices |
US8291119B2 (en) | 2004-07-23 | 2012-10-16 | Citrix Systems, Inc. | Method and systems for securing remote access to private networks |
US7724657B2 (en) | 2004-07-23 | 2010-05-25 | Citrix Systems, Inc. | Systems and methods for communicating a lossy protocol via a lossless protocol |
US9219579B2 (en) | 2004-07-23 | 2015-12-22 | Citrix Systems, Inc. | Systems and methods for client-side application-aware prioritization of network communications |
US8914522B2 (en) | 2004-07-23 | 2014-12-16 | Citrix Systems, Inc. | Systems and methods for facilitating a peer to peer route via a gateway |
US8351333B2 (en) | 2004-07-23 | 2013-01-08 | Citrix Systems, Inc. | Systems and methods for communicating a lossy protocol via a lossless protocol using false acknowledgements |
US8019868B2 (en) | 2004-07-23 | 2011-09-13 | Citrix Systems, Inc. | Method and systems for routing packets from an endpoint to a gateway |
US8634420B2 (en) | 2004-07-23 | 2014-01-21 | Citrix Systems, Inc. | Systems and methods for communicating a lossy protocol via a lossless protocol |
US7808906B2 (en) | 2004-07-23 | 2010-10-05 | Citrix Systems, Inc. | Systems and methods for communicating a lossy protocol via a lossless protocol using false acknowledgements |
US8014421B2 (en) | 2004-07-23 | 2011-09-06 | Citrix Systems, Inc. | Systems and methods for adjusting the maximum transmission unit by an intermediary device |
US8897299B2 (en) | 2004-07-23 | 2014-11-25 | Citrix Systems, Inc. | Method and systems for routing packets from a gateway to an endpoint |
US8046830B2 (en) | 2004-07-23 | 2011-10-25 | Citrix Systems, Inc. | Systems and methods for network disruption shielding techniques |
US8892778B2 (en) | 2004-07-23 | 2014-11-18 | Citrix Systems, Inc. | Method and systems for securing remote access to private networks |
US20060047836A1 (en) * | 2004-08-13 | 2006-03-02 | Rao Goutham P | A method for maintaining transaction integrity across multiple remote access servers |
US7657657B2 (en) * | 2004-08-13 | 2010-02-02 | Citrix Systems, Inc. | Method for maintaining transaction integrity across multiple remote access servers |
US8549149B2 (en) | 2004-12-30 | 2013-10-01 | Citrix Systems, Inc. | Systems and methods for providing client-side accelerated access to remote applications via TCP multiplexing |
US8700695B2 (en) | 2004-12-30 | 2014-04-15 | Citrix Systems, Inc. | Systems and methods for providing client-side accelerated access to remote applications via TCP pooling |
US8954595B2 (en) | 2004-12-30 | 2015-02-10 | Citrix Systems, Inc. | Systems and methods for providing client-side accelerated access to remote applications via TCP buffering |
US8706877B2 (en) | 2004-12-30 | 2014-04-22 | Citrix Systems, Inc. | Systems and methods for providing client-side dynamic redirection to bypass an intermediary |
US8856777B2 (en) | 2004-12-30 | 2014-10-07 | Citrix Systems, Inc. | Systems and methods for automatic installation and execution of a client-side acceleration program |
US7849270B2 (en) | 2005-01-24 | 2010-12-07 | Citrix Systems, Inc. | System and method for performing entity tag and cache control of a dynamically generated object not identified as cacheable in a network |
US8848710B2 (en) | 2005-01-24 | 2014-09-30 | Citrix Systems, Inc. | System and method for performing flash caching of dynamically generated objects in a data communication network |
US8788581B2 (en) | 2005-01-24 | 2014-07-22 | Citrix Systems, Inc. | Method and device for performing caching of dynamically generated objects in a data communication network |
US7849269B2 (en) | 2005-01-24 | 2010-12-07 | Citrix Systems, Inc. | System and method for performing entity tag and cache control of a dynamically generated object not identified as cacheable in a network |
US8255456B2 (en) | 2005-12-30 | 2012-08-28 | Citrix Systems, Inc. | System and method for performing flash caching of dynamically generated objects in a data communication network |
US7921184B2 (en) | 2005-12-30 | 2011-04-05 | Citrix Systems, Inc. | System and method for performing flash crowd caching of dynamically generated objects in a data communication network |
US8499057B2 (en) | 2005-12-30 | 2013-07-30 | Citrix Systems, Inc | System and method for performing flash crowd caching of dynamically generated objects in a data communication network |
US8301839B2 (en) | 2005-12-30 | 2012-10-30 | Citrix Systems, Inc. | System and method for performing granular invalidation of cached dynamically generated objects in a data communication network |
KR100900168B1 (en) | 2006-04-19 | 2009-06-02 | 닛본 덴끼 가부시끼가이샤 | Screen transition program generating method and device |
US8769095B2 (en) | 2006-10-03 | 2014-07-01 | Axeda Acquisition Corp. | System and method for dynamically grouping devices based on present device conditions |
US8370479B2 (en) | 2006-10-03 | 2013-02-05 | Axeda Acquisition Corporation | System and method for dynamically grouping devices based on present device conditions |
US9491071B2 (en) | 2006-10-03 | 2016-11-08 | Ptc Inc. | System and method for dynamically grouping devices based on present device conditions |
US10212055B2 (en) | 2006-10-03 | 2019-02-19 | Ptc Inc. | System and method for dynamically grouping devices based on present device conditions |
US8065397B2 (en) | 2006-12-26 | 2011-11-22 | Axeda Acquisition Corporation | Managing configurations of distributed devices |
US8788632B2 (en) | 2006-12-26 | 2014-07-22 | Axeda Acquisition Corp. | Managing configurations of distributed devices |
US9491049B2 (en) | 2006-12-26 | 2016-11-08 | Ptc Inc. | Managing configurations of distributed devices |
US9712385B2 (en) | 2006-12-26 | 2017-07-18 | PTC, Inc. | Managing configurations of distributed devices |
US10749914B1 (en) | 2007-07-18 | 2020-08-18 | Hammond Development International, Inc. | Method and system for enabling a communication device to remotely execute an application |
US11451591B1 (en) | 2007-07-18 | 2022-09-20 | Hammond Development International, Inc. | Method and system for enabling a communication device to remotely execute an application |
US10917444B1 (en) | 2007-07-18 | 2021-02-09 | Hammond Development International, Inc. | Method and system for enabling a communication device to remotely execute an application |
US8799533B2 (en) | 2007-10-05 | 2014-08-05 | Samsung Electronics Co., Ltd. | Universal serial bus assistance engine |
US8260985B2 (en) * | 2007-10-05 | 2012-09-04 | Pano Logic, Inc. | Universal serial bus assistance engine |
US20090094672A1 (en) * | 2007-10-05 | 2009-04-09 | Pano Logic, Inc. | Universal serial bus selective encryption |
US8984580B2 (en) | 2007-10-05 | 2015-03-17 | Samsung Electronics Co., Ltd. | Universal serial bus selective encryption |
US8813098B2 (en) | 2007-10-05 | 2014-08-19 | Samsung Electronics Co., Ltd. | Universal serial bus host controller driver over a network |
US20090094621A1 (en) * | 2007-10-05 | 2009-04-09 | Pano Logic, Inc. | Universal serial bus host controller driver over a network |
US20090094387A1 (en) * | 2007-10-05 | 2009-04-09 | Pano Logic, Inc. | Universal serial bus assistance engine |
US7925694B2 (en) | 2007-10-19 | 2011-04-12 | Citrix Systems, Inc. | Systems and methods for managing cookies via HTTP content layer |
US8090877B2 (en) | 2008-01-26 | 2012-01-03 | Citrix Systems, Inc. | Systems and methods for fine grain policy driven cookie proxying |
US8769660B2 (en) | 2008-01-26 | 2014-07-01 | Citrix Systems, Inc. | Systems and methods for proxying cookies for SSL VPN clientless sessions |
US9059966B2 (en) | 2008-01-26 | 2015-06-16 | Citrix Systems, Inc. | Systems and methods for proxying cookies for SSL VPN clientless sessions |
US8169436B2 (en) | 2008-01-27 | 2012-05-01 | Citrix Systems, Inc. | Methods and systems for remoting three dimensional graphics |
US8350863B2 (en) | 2008-01-27 | 2013-01-08 | Citrix Systems, Inc. | Methods and systems for improving resource utilization by delaying rendering of three dimensional graphics |
US8665265B2 (en) | 2008-01-27 | 2014-03-04 | Citrix Systems, Inc. | Methods and systems for remoting three dimensional graphics |
US8405654B2 (en) | 2008-01-27 | 2013-03-26 | Citrix Systems, Inc. | Methods and systems for remoting three dimensional graphics |
US20090287831A1 (en) * | 2008-05-15 | 2009-11-19 | Kazushi Nakagawa | Application distribution control system, application distribution control method, information processing apparatus, and client terminal |
US8606935B2 (en) * | 2008-05-15 | 2013-12-10 | Hitachi, Ltd. | Application distribution control system, application distribution control method, information processing apparatus, and client terminal |
US20090307571A1 (en) * | 2008-06-05 | 2009-12-10 | Microsoft Corporation | Image acquisition from dynamic content for delivery to network-enabled static display devices |
US8156418B2 (en) | 2008-06-05 | 2012-04-10 | Microsoft Corporation | Image acquisition from dynamic content for delivery to network-enabled static display devices |
US9071651B2 (en) * | 2008-06-05 | 2015-06-30 | Microsoft Technology Licensing, Llc | Dynamic content delivery to network-enabled static display device |
US20090307603A1 (en) * | 2008-06-05 | 2009-12-10 | Microsoft Corporation | Dynamic content delivery to network-enabled static |
US20100058354A1 (en) * | 2008-08-28 | 2010-03-04 | Gene Fein | Acceleration of multimedia production |
US8468587B2 (en) | 2008-09-26 | 2013-06-18 | Microsoft Corporation | Binding activation of network-enabled devices to web-based services |
US20100083363A1 (en) * | 2008-09-26 | 2010-04-01 | Microsoft Corporation | Binding activation of network-enabled devices to web-based services |
WO2010048539A1 (en) * | 2008-10-26 | 2010-04-29 | Citrix Systems, Inc. | Panning a native display on a mobile computing device to a window, interpreting a gesture-based instruction to scroll contents of the window, and wrapping text on the window |
US20100115458A1 (en) * | 2008-10-26 | 2010-05-06 | Adam Marano | Panning a native display on a mobile computing device to a window, interpreting a gesture-based instruction to scroll contents of the window, and wrapping text on the window |
US20100174818A1 (en) * | 2009-01-07 | 2010-07-08 | Microsoft Corporation | Input Service for Client Devices |
US20100205332A1 (en) * | 2009-02-06 | 2010-08-12 | Gene Fein | Media file synchronization |
US9838456B2 (en) | 2009-02-06 | 2017-12-05 | Empire Technology Development Llc | Media file synchronization |
US9077784B2 (en) | 2009-02-06 | 2015-07-07 | Empire Technology Development Llc | Media file synchronization |
US8893232B2 (en) | 2009-02-06 | 2014-11-18 | Empire Technology Development Llc | Media monitoring system |
US20100205656A1 (en) * | 2009-02-06 | 2010-08-12 | Fein Gene S | Media monitoring system |
US9800939B2 (en) | 2009-04-16 | 2017-10-24 | Guest Tek Interactive Entertainment Ltd. | Virtual desktop services with available applications customized according to user type |
US9054913B1 (en) | 2009-11-30 | 2015-06-09 | Dell Software Inc. | Network protocol proxy |
US8966112B1 (en) | 2009-11-30 | 2015-02-24 | Dell Software Inc. | Network protocol proxy |
US9229734B2 (en) | 2010-01-15 | 2016-01-05 | Guest Tek Interactive Entertainment Ltd. | Hospitality media system employing virtual user interfaces |
US9648378B2 (en) | 2010-01-15 | 2017-05-09 | Guest Tek Interactive Entertainment Ltd. | Virtual user interface including playback control provided over computer network for client device playing media from another source |
US10356467B2 (en) | 2010-01-15 | 2019-07-16 | Guest Tek Interactive Entertainment Ltd. | Virtual user interface including playback control provided over computer network for client device playing media from another source |
US20110179106A1 (en) * | 2010-01-15 | 2011-07-21 | Ibahn General Holdings Corporation | Virtual user interface |
US20130110918A1 (en) * | 2010-07-06 | 2013-05-02 | Nec Corporation | Thin client system, management server, management method and program |
US9003455B2 (en) | 2010-07-30 | 2015-04-07 | Guest Tek Interactive Entertainment Ltd. | Hospitality media system employing virtual set top boxes |
US9338479B2 (en) | 2010-07-30 | 2016-05-10 | Guest Tek Interactive Entertainment Ltd. | Virtualizing user interface and set top box functionality while providing media over network |
US8954048B2 (en) * | 2010-08-29 | 2015-02-10 | Vascode Technologies Ltd. | System and methods for multi-tasking in a clientless mobile phone |
US20130273897A1 (en) * | 2010-08-29 | 2013-10-17 | Vascode Technologies Ltd. | System and methods for multi-tasking in a clientless mobile phone |
EP2649532A4 (en) * | 2010-12-10 | 2016-03-02 | Wyse Technology Llc | Methods and systems for remote desktop session redrawing via http headers |
US10084864B2 (en) | 2010-12-10 | 2018-09-25 | Wyse Technology L.L.C. | Methods and systems for facilitating a remote desktop session utilizing a remote desktop client common interface |
EP2649533A4 (en) * | 2010-12-10 | 2016-03-23 | Wyse Technology Llc | Methods and systems for facilitating a remote desktop session utilizing long polling |
US10165042B2 (en) | 2010-12-10 | 2018-12-25 | Wyse Technology L.L.C. | Methods and systems for conducting a remote desktop session via HTML that supports a 2D canvas and dynamic drawing |
US10248374B2 (en) | 2010-12-10 | 2019-04-02 | Wyse Technology L.L.C. | Methods and systems for a remote desktop session utilizing HTTP header |
EP2649500A2 (en) * | 2010-12-10 | 2013-10-16 | Wyse Technology L.L.C. | Methods and systems for accessing and controlling a remote desktop of a remote machine in real time by a web browser at a client device via http api utilizing a transcoding server |
EP2649502A4 (en) * | 2010-12-10 | 2016-03-23 | Wyse Technology L L P | Methods and systems for a remote desktop session utilizing a http handler and a remote desktop client common interface |
CN103460670A (en) * | 2010-12-10 | 2013-12-18 | 韦斯技术有限公司 | Methods and systems for a remote desktop session utilizing a http handler and a remote desktop client common interface |
EP2649500A4 (en) * | 2010-12-10 | 2014-09-03 | Wyse Technology Llc | Methods and systems for accessing and controlling a remote desktop of a remote machine in real time by a web browser at a client device via http api utilizing a transcoding server |
US8775870B2 (en) | 2010-12-22 | 2014-07-08 | Kt Corporation | Method and apparatus for recovering errors in a storage system |
US8495013B2 (en) | 2010-12-24 | 2013-07-23 | Kt Corporation | Distributed storage system and method for storing objects based on locations |
US9888062B2 (en) | 2010-12-24 | 2018-02-06 | Kt Corporation | Distributed storage system including a plurality of proxy servers and method for managing objects |
US9052962B2 (en) | 2011-03-31 | 2015-06-09 | Kt Corporation | Distributed storage of data in a cloud storage system |
US8849756B2 (en) | 2011-04-13 | 2014-09-30 | Kt Corporation | Selecting data nodes in distributed storage system |
US9158460B2 (en) | 2011-04-25 | 2015-10-13 | Kt Corporation | Selecting data nodes using multiple storage policies in cloud storage system |
US20120324358A1 (en) * | 2011-06-16 | 2012-12-20 | Vmware, Inc. | Delivery of a user interface using hypertext transfer protocol |
US9600350B2 (en) * | 2011-06-16 | 2017-03-21 | Vmware, Inc. | Delivery of a user interface using hypertext transfer protocol |
US9514242B2 (en) | 2011-08-29 | 2016-12-06 | Vmware, Inc. | Presenting dynamically changing images in a limited rendering environment |
US9549045B2 (en) | 2011-08-29 | 2017-01-17 | Vmware, Inc. | Sharing remote sessions of a user interface and/or graphics of a computer |
US9939984B2 (en) * | 2012-03-28 | 2018-04-10 | Skytap | Methods and systems for an intermediate graphical desktop sharing protocol |
US10915218B2 (en) * | 2012-03-28 | 2021-02-09 | Skytap | Methods and systems for an intermediate graphical desktop sharing protocol |
US9383891B2 (en) * | 2012-03-28 | 2016-07-05 | Skytap | Methods and systems for an intermediate graphical desktop sharing protocol |
US20160004392A1 (en) * | 2012-03-28 | 2016-01-07 | Skytap | Methods and systems for an intermediate graphical desktop sharing protocol |
US20150373151A1 (en) * | 2012-03-28 | 2015-12-24 | Skytap | Methods and systems for an intermediate graphical desktop sharing protocol |
US10209850B2 (en) * | 2012-03-28 | 2019-02-19 | Skytap | Methods and systems for an intermediate graphical desktop sharing protocol |
US20130283171A1 (en) * | 2012-03-28 | 2013-10-24 | Skytap | Methods and systems for an intermediate graphical desktop sharing protocol |
US20150244755A1 (en) * | 2012-10-10 | 2015-08-27 | Huawei Device Co., Ltd. | Method, apparatus, and home network system for presenting multiple images, and mobile terminal |
TWI631472B (en) * | 2013-03-21 | 2018-08-01 | 雷蛇(亞太)私人有限公司 | Decentralized operating system |
US20140289411A1 (en) * | 2013-03-21 | 2014-09-25 | Nextbit Systems Inc. | Decentralized operating system |
US10515056B2 (en) | 2013-03-21 | 2019-12-24 | Razer (Asia-Pacific) Pte. Ltd. | API for resource discovery and utilization |
US9858052B2 (en) * | 2013-03-21 | 2018-01-02 | Razer (Asia-Pacific) Pte. Ltd. | Decentralized operating system |
US20150134725A1 (en) * | 2013-11-13 | 2015-05-14 | Adrian Cesena, Jr. | Computer-implemented methods, computer readable medium and systems for virtual application execution |
US20180124215A1 (en) * | 2015-03-25 | 2018-05-03 | Sino-Japanese Engineering Corporation | Device control method by thin client system |
US11778007B2 (en) * | 2018-08-14 | 2023-10-03 | Kt Corporation | Server, method and user device for providing virtual reality content |
US11647095B1 (en) * | 2018-10-02 | 2023-05-09 | Intuit Inc. | Method and system for orchestrating communications between application services through a unified connector platform |
US11444878B2 (en) * | 2019-09-04 | 2022-09-13 | Yahoo Ad Tech Llc | Intelligent dataflow-based service discovery and analysis |
Also Published As
Publication number | Publication date |
---|---|
CA2566717A1 (en) | 2005-12-01 |
AU2005246306A1 (en) | 2005-12-01 |
WO2005114395A1 (en) | 2005-12-01 |
IL179205A0 (en) | 2007-03-08 |
JP2008502176A (en) | 2008-01-24 |
KR20070012544A (en) | 2007-01-25 |
EP1756709A1 (en) | 2007-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20050256923A1 (en) | Methods and apparatus for displaying application output on devices having constrained system resources | |
US7797724B2 (en) | Methods and apparatus for secure online access on a client device | |
US20060271877A1 (en) | A system and methods for selective sharing of an application window | |
CN101495990B (en) | Systems and methods for providing authentication credentials across proxy server to virtual computing environments to access remote resource | |
US8645848B2 (en) | Systems and methods for dynamic menus | |
US8719421B2 (en) | Cross domain interaction of a web application | |
US7254621B2 (en) | Technique for enabling remote data access and manipulation from a pervasive device | |
CA2632706C (en) | High level network layer system and method | |
US7676833B2 (en) | Login screen with identifying data | |
US10659418B1 (en) | Managing notifications across services | |
US9330077B2 (en) | Dynamic image generation for customizable user interfaces | |
EP1087308A2 (en) | Method and system for providing resource access in a mobile enviroment | |
WO2006036230A1 (en) | System and: method for remoting twain function calls from a user session to a client system | |
JP2005063440A (en) | Method, system and program product for integrating web services on a client | |
US7783751B2 (en) | Communication system, proxy server, method of controlling same and control program therefor | |
US7748032B2 (en) | Method and apparatus for associating tickets in a ticket hierarchy | |
US20060117257A1 (en) | System and method for processing JavaScript resource files | |
KR20030096322A (en) | Method for integrating electronic mail and worldwide web communications with a user | |
US20020184305A1 (en) | System and method for printing from a web application | |
US20070088797A1 (en) | Information technology system with application portal control | |
JP2012503231A (en) | Asynchronous queuing messaging for web applications | |
JP7217342B2 (en) | Progressive API response | |
US9760897B2 (en) | Method and system for defining an offlinable view/controller graph | |
US10600108B2 (en) | Web session security and computational load management | |
US20030191819A1 (en) | Client aware notification in a wireless portal server |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: CITRIX SYSTEMS, INC., FLORIDA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:ADACHI, TETSUNORI;REEL/FRAME:014635/0153 Effective date: 20040519 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |