DE60109631T2 - Verfahren und Vorrichtung zur effizienten Verringerung von graphischen Anzeigedaten für ihre Übertragung mittels eines Übertragungsprotokolls für niedrige Bandbreiten - Google Patents

Verfahren und Vorrichtung zur effizienten Verringerung von graphischen Anzeigedaten für ihre Übertragung mittels eines Übertragungsprotokolls für niedrige Bandbreiten Download PDF

Info

Publication number
DE60109631T2
DE60109631T2 DE60109631T DE60109631T DE60109631T2 DE 60109631 T2 DE60109631 T2 DE 60109631T2 DE 60109631 T DE60109631 T DE 60109631T DE 60109631 T DE60109631 T DE 60109631T DE 60109631 T2 DE60109631 T2 DE 60109631T2
Authority
DE
Germany
Prior art keywords
client
server
agent
data
graphical data
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.)
Expired - Lifetime
Application number
DE60109631T
Other languages
English (en)
Other versions
DE60109631D1 (de
Inventor
Henry High Wycombe Collins
Ruiguo Yang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Citrix Systems Inc
Original Assignee
Citrix Systems Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Citrix Systems Inc filed Critical Citrix Systems Inc
Application granted granted Critical
Publication of DE60109631D1 publication Critical patent/DE60109631D1/de
Publication of DE60109631T2 publication Critical patent/DE60109631T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1454Digital output to display device ; Cooperation and interconnection of the display device with other functional units involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9577Optimising the visualization of content, e.g. distillation of HTML documents
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/131Protocols for games, networked simulations or virtual reality
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/565Conversion or adaptation of application format or content
    • H04L67/5651Reducing the amount or size of exchanged application data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/75Indicating network or usage conditions on the user display
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/2876Pairs of inter-processing entities at each side of the network, e.g. split proxies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/289Intermediate processing functionally located close to the data consumer application, e.g. in same machine, in same home or in same sub-network
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99932Access augmentation or optimizing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing

Description

  • ERFINDUNGSGEBIET
  • Die vorliegende Erfindung betrifft allgemein die Kommunikation zwischen einem Applikationsserver und einem dünnen Client in einem verteilten System und insbesondere die Reduzierung der Menge graphischer Displaydaten, die über einen Transportprotokollmechanismus mit niedriger Bandbreite übertragen wird.
  • ALLGEMEINER STAND DER TECHNIK
  • Verteilte Computersysteme verwenden die Technik des Verteilens der Applikationsausführung. Insbesondere führt ein Applikationsserver lokal ein Applikationsprogramm aus und liefert die Applikationsausgangsdaten an Clients/Netzbenutzer, die dann die Ergebnisse auf einem an ihrem lokalen Computer angekoppelten Displayschirm anzeigen. Durch Durchführen der Applikationsverarbeitungsfunktionen beim Server und Anzeigen der Applikationsausgabe am Client nützen diese verteilten Systeme die Server- und Clientressourcen am besten, d.h., der leistungsfähigere Server führt die rechen- und speicherintensiven Applikationsverarbeitungsfunktionen aus, während der Client, mit potentiell größerer Videoleistung, die Ausgabe anzeigt. Während der Ausführung des Applikationsprogramms betrachtet ein Benutzer des Client die Applikationsausgabedaten auf dem Clientdisplay und interagiert mit dem Applikationsprogramm über Tastatur- oder Mauseingaben. Die Eingaben des Clientbenutzers entsprechen Anforderungen an den Applikationsserver, bestimmte Aktionen auszuführen, die den Betrieb des Applikationsprogramms beeinflussen. Der Applikationsserver leitet diese Anforderungen zur weiteren Verarbeitung an die Applikation weiter. Der Applikationsserver fängt auch die Applikationsausgabedaten ab, die von dem Applikationsprogramm erzeugt wurden und in der Regel auf das Betriebssystem des Applikationsservers abzielen, und überträgt die Daten ganz oder teilweise an den Client, um dort angezeigt zu werden. Aus der Perspektive des Benutzers scheint das Applikationsprogramm lokal auszuführen, obwohl es tatsächlich auf einem abgesetzten Server ausgeführt und lediglich lokal angezeigt wird.
  • Die Leistung von verteilten Systemen hängt zu einem großen Grad von der Fähigkeit des Netzes ab, das den Client und den Server koppelt, und deshalb von der Menge graphischer Daten (entsprechend den Applikationsausgabedaten), die über das Netz übertragen werden. Da der Applikationsserver und die Client-Workstation im allgemeinen nur durch einen Transportmechanismus verbunden sind (wie etwa serielle Leitungen, Telefonleitungen, lokale Netze und Fernnetze), die eine niedrigere Bandbreite besitzen, als ansonsten zur Verfügung stehen würde, wenn das Applikationsprogramm lokal ausgeführt würde, kann die wahrgenommene Leistung des verteilten Systems leiden. Dementsprechend streben Hersteller von verteilten Systemen/Software ständig danach, die Leistung derartiger Systeme zu verbessern.
  • US-Patent 5,864,711 beschreibt ein System zum Fernsteuern durch einen Server, in einem über ein Kommunikationsnetz an den Server angekoppelten Client einer Außerschirm-Oberfläche.
  • KURZE DARSTELLUNG DER ERFINDUNG
  • Gemäß der Erfindung wird folgendes bereitgestellt: ein Verfahren zum Fernsteuern durch einen Server, in einem über ein Kommunikationsnetz an den Server angekoppelten Client eine Außerschirm-Oberfläche zu bilden, wobei das Verfahren im Server durchgeführt wird und die folgenden Schritte umfaßt: Anweisen des Client, eine erste Speicherregion für eine Zuteilung zu der Außerschirm-Oberfläche zu wählen, wobei die erste Speicherregion einem an den Client angekoppelten Speicher entspricht; Senden von Indicia der graphischen Daten zu dem Client; und Anweisen des Client, die den Indicia zugeordneten graphischen Daten zu einer bestimmten Speicherstelle in der ersten Speicherregion zu kopieren.
  • Gemäß einem weiteren Aspekt der Erfindung wird auch folgendes bereitgestellt: ein System zum Fernsteuern durch einen Server, in einem über ein Kommunikationsnetz an den Server angekoppelten Client eine Außerschirm-Oberfläche zu bilden, wobei das System folgendes umfaßt: einen auf dem Client ausgeführten Client-Agent; eine an den Client-Agent angekoppelte erste Speicherregion; eine in der ersten Speicherregion gespeicherte Außerschirm-Oberfläche; einen auf dem Server ausgeführten und an den Client-Agent angekoppelten Server-Agent; und graphische Daten, wobei die graphischen Daten zugeordnete Indicia aufweisen und durch den Client gespeichert werden, und wobei der Server-Agent im Betrieb für folgendes ausgelegt ist: Senden von Indicia der graphischen Daten zu dem Client-Agent; und Anweisen des Client, die erste Speicherregion für eine Zuteilung zu der Außerschirm-Oberfläche zu wählen und die den Indicia zugeordneten graphischen Daten zu einer bestimmten Speicherstelle in der ersten Speicherregion zu kopieren.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die vorausgegangene Erörterung läßt sich anhand der folgenden ausführlichen Beschreibung der Erfindung in Verbindung mit den beiliegenden Zeichnungen besser verstehen. Es zeigen:
  • 1 schematisch einen Client-Knoten, der über ein Kommunikationsnetz an einen Server-Knoten angekoppelt ist, wobei der Client- und Server-Knoten jeweils Client- und Server-Agents aufweisen, die gemäß einer Ausführungsform der vorliegenden Erfindung arbeiten;
  • 2 auf hoher Ebene ein Flußdiagramm der von dem Server-Agent von 1 ausgeführten Schritte gemäß einer Ausführungsform der vorliegenden Erfindung;
  • 3 ein ausführlicheres Flußdiagramm für das Diagramm von 2 gemäß einer Ausführungsform der vorliegenden Erfindung;
  • 4 schematisch den Inhalt des flüchtigen und persistenten Speichers des Client und Servers, beeinflußt durch Operationen der Client- und Server-Agents von 1, gemäß einer Ausführungsform der vorliegenden Erfindung;
  • 5 ein Flußdiagramm der Schritte, die unternommen werden, um die von dem Client übertragene Datenmenge zu minimieren, indem Caching-Techniken verwendet werden mit einer Fuzzy-Datenbank und Fuzzy-Schlüsseln gemäß einer Ausführungsform der vorliegenden Erfindung;
  • 6 schematisch eine Menge von Prozeduren, die dazu verwendet werden, von einem Applikationsprogramm auf einem Server erzeugte Textinformationen zu einem Display eines verschobenen Client zu bewegen, gemäß einer Ausführungsform der vorliegenden Erfindung;
  • 7A ein Liniendiagramm, das mehrere einen bestimmten Weg bildende Segmente darstellt;
  • 7B auf Pixelebene eine Darstellung des Liniendiagramms von 7A, die darstellt, wie der Weg auf einem Computerdisplay tatsächlich approximiert wird;
  • 8 ein Flußdiagramm der Schritte, die unternommen werden, wenn Segment- und Streifendaten gemäß einer Ausführungsform der vorliegenden Erfindung verarbeitet und codiert werden;
  • 8B ein Koordinatensystem, das in eine Menge von 16 Regionen organisiert ist, das dazu verwendet wird, Winkelinformationen hinsichtlich Streifen zu quantisieren, und das die Kompressionseffizienz gemäß einer Ausführungsform der vorliegenden Erfindung verbessert.
  • 9 eine Überlagerung des Koordinatensystems von 8B auf die Darstellung von 7B auf Pixelebene, um eine Ausführungsform einer Streifenverarbeitungstechnik gemäß der vorliegenden Erfindung zu veranschaulichen;
  • 10 eine Tabelle, die darstellt, wie man den nächsten Streifen aus dem Endpunkt des vorausgegangenen Streifens erhält, und zwar für Streifen in jedem der quantisierten Segmente von 8B gemäß einer Ausführungsform der vorliegenden Erfindung; und
  • 11 ein Flußdiagramm der Schritte, die von dem Server-Agent als Reaktion auf eine Fehlerbedingung ausgeführt werden, was die Ausbildung einer Außerschirm-Oberfläche des Client beinhaltet.
  • AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG
  • Die vorliegende Erfindung reduziert die Menge graphischer Daten, die zwischen einem Applikationsserver, der ein Applikationsprogramm ausführt, und einem abonnierenden Client, der die Ausgabedaten des Applikationsprogramms örtlich anzeigt, übertragen werden, durch Codieren der Daten in relativ kleine Darstellungen, die sich innerhalb des zwischen dem Client und dem Server übertragenen Protokollstroms wiederholen. Auf diese Weise minimiert die Erfindung die Größe jedes diskreten Datenelements, das übertragen werden muß, und erhöht die Wiederholbarkeit der Daten innerhalb des Protokollstroms, so daß mit Kompressionsalgorithmen, die an wiederholten codierten Daten effizienter arbeiten, ein größerer Grad an Kompressionseffizienz realisiert werden kann. Die Erfindung verwendet eine Reihe von Techniken, um diese verbesserte Kompression zu realisieren, einschließlich der folgenden: Scannen einer Befehlsschlange für später ausgegebene Befehle, die an die Stelle von früher ausgegebenen Befehlen treten; Disc-Caching-Techniken, die die Kompression von Daten verbessern, die zuvor während einer Client-Server-Sitzung angetroffen wurden; Übertragung relativer Koordinaten unter Verwendung quantisierter Regionen, um zu vermeiden, daß beide Endpunkte und/oder der Winkel eines zugeordneten Streifens gesendet werden; und Manipulation von Außerschirm-Oberflächen, um die Leistung während der Client-Server-Sitzung zu verbessern. Die Erfindung reduziert auch die Häufigkeit von Overscroll-Problemen, die angetroffen werden, wenn eine Leistungsfehlanpassung zwischen einem schnellen Server und einem relativ langsamen Netz oder Client vorliegt.
  • Unter Bezugnahme auf 1 stehen ein oder mehrere Client-Knoten 110', 110'' (im folgenden wird jeder Client-Knoten oder mehrere Client-Knoten allgemein als 110 bezeichnet) über ein Kommunikationsnetz 140 mit einem oder mehreren Server-Knoten 150', 150'' (im folgenden wird jeder Server-Knoten oder werden mehrere Server-Knoten allgemein als 150 bezeichnet) in Kommunikation. Bei dem Netz 140 kann es sich um ein lokales Netz (LAN), ein Mittelnetz (MAN – medium-area network), oder ein Fernnetz (WAN) wie etwa das Internet oder das World Wide Web handeln. Benutzer des Client-Knoten 110 können über eine Vielzahl von Verbindungen mit dem Netz 140 verbunden sein, einschließlich standardmäßiger Telefonleitungen, LAN- oder WAN-Strecken (z.B. T1, T3, 56kb, X.25), Breitbandverbindungen (ISDN, Frame Relay, ATM) und Funkverbindungen. Die Verbindungen können unter Verwendung einer Vielzahl von Kommunikationsprotokollen hergestellt werden (z.B. TCP/IP, IPX, SPX, NetBIOS und direkte asynchrone Verbindungen). Bei einigen besonders vorteilhaften Ausführungsformen kann das verwendete Protokoll das Independent Computing Architecture-Protokoll sein, das von der Firma Citrix Systems, Inc., in Fort Lauderdale, Florida, USA hergestellt wird, oder das Remote Display Protocol, das von der Firma Microsoft Corporation in Redmond, Washington, USA, hergestellt wird.
  • Bei dem Client-Knoten 110 kann sich um einen beliebigen PC (z.B. 286, 386, 486, Pentium, Pentium II, Macintosh-Computer), ein Terminal auf Windows-Basis, ein Network-Computer, eine Funkeinrichtung, ein Informationsgerät, ein RISC Power-PC, eine X-Einrichtung, eine Workstation, einen Minicomputer, einen Mainframe-Computer oder irgendeine andere Recheneinrichtung handeln, die einen Desktop auf Windows-Basis und ausreichend Speicher zum Ausführen eines kleinen Displaypräsentationsprogramms aufweist. Das Displaypräsentationsprogramm verwendet Befehle und Daten, die über das Netz 140 von dem Applikationsserver 150 gesendet wurden, um ein graphisches Display wiederzugeben. Bei einem Systemmodell mit verteilten Computern tritt die Ausführung von Applikationsprogrammen in erster Linie in dem Applikationsserver 150 und der Benutzerschnittstelle auf, Tastenanschläge und Mausbewegungen, die von Eingaben auf der Client-Seite erzeugt werden, werden über das Netz 140 zu und von dem Client-Knoten 110 übertragen.
  • Der Client-Knoten 110 enthält in der Regel einen Prozessor 112, einen flüchtigen Speicher 114 (z.B. RAM-Cache), ein Betriebssystem 116, einen Client-Agent 118, einen persistenten Speicherungsspeicher 120, eine Netzschnittstelle 122 (z.B. eine Netzschnittstellenkarte), eine Tastatur 124, eine Maus 126 und ein Display 128. Zu den von dem Client-Knoten 110 unterstützten Windows-orientierten Plattformen können unter anderem zählen: WINDOWS 3.x, WINDOWS 95, WINDOWS 98, WINDOWS NT 3.51, WINDOWS NT 4.0, WINDOWS 2000, WINDOWS CE, MAC/OS Java und Unix. Der Client-Agent 118 entspricht einem Softwareprogramm, das Befehle und Daten von dem Server-Knoten 150 und von einem nicht gezeigten Benutzer des Client-Knoten 110 empfängt. Der Client-Agent 118 verwendet die empfangenen Informationen, wenn er mit anderen Komponenten des Client-Knoten 110 interagiert (z.B. wenn das Betriebssystem 116 angewiesen wird, Daten auf dem Display 128 auszugeben). Der Client-Agent 118 überträgt auch Anforderungen und Daten an den Server-Knoten 150 als Reaktion auf vom Server erteilte Befehle oder Benutzeraktionen am Client-Knoten 110.
  • Analog enthält der Server-Knoten 150 einen Prozessor 152, einen flüchtigen Speicher 154, ein Betriebssystem 156, ein Applikationsprogramm 158, einen Server-Agent 160, einen persistenten Speicherungsspeicher 162 und eine Netzschnittstelle 164. Der Server-Agent 160 entspricht einem Softwareprogramm, das mit dem Client-Agent 118 und anderen Komponenten des Server-Knotens 150 gekoppelt ist, um das entfernte Display und die Betätigbarkeit des Applikationsprogramms 158 zu unterstützen. Auf jedem Applikationsserver 150 befinden sich ein oder mehrere Applikationsprogramme 158, auf die durch die Client-Knoten 110 zugegriffen werden kann. Zu Beispielen für solche Applikationen zählen Textverarbeitungsprogramme wie etwa MICROSOFT WORD und Tabellenkalkulationsprogramme wie etwa MICROSOFT EXCEL, beide von Microsoft Corporation in Redmond, Washington, USA hergestellt, Finanzberichtserstellungsprogramme, Kundenregistrierprogramme, Programme, die technische Support-Informationen liefern, Kundendatenbankapplikationen oder Applikationssetmanager. Während der Ausführung des Applikationsprogramms 158 kommuniziert ein Server 150 mit dem Client-Knoten 110 über einen Transportmechanismus (Teil des Server-Agent 160). Bei einer Ausführungsform liefert der Transportmechanismus mehrere virtuelle Kanäle, und einer der virtuellen Kanäle liefert ein Protokoll für die Übertragung von graphischen Schirmdaten von dem Server-Knoten 150 zum Client-Knoten 110. Der Server 150 führt einen Protokolltreiber aus (Teil des Server-Agent 160), der Graphikdisplayschnittstellenbefehle (von dem Applikationsprogramm 158 erzeugt und auf das Betriebssystem 156 des Servers abzielend) abfängt und sie in ein Protokollpaket übersetzt, das sich zur Übertragung über den Transportmechanismus eignet.
  • Bei einer Ausführungsform und unter Bezugnahme auf 2 fängt der Server-Agent 160 einen von dem Applikationsprogramm 158 erteilten und auf das Betriebssystem 156 abzielenden Graphikdisplayschnittstellenbefehl ab (Schritt 202), codiert den Befehl und dem Applikationsprogramm 158 zugeordnete Graphikdaten (Schritt 204), komprimiert die codierten Graphikdaten (Schritt 206) erzeugt ein Transportprotokollpaket, das den abgefangenen Befehl und komprimierte codierte Daten enthält (Schritt 208) und überträgt das Transportprotokollpaket an den Client-Zielknoten 110 (Schritt 210). Graphische Daten beziehen sich auf eine beliebige Art von Daten, die auf dem Display 128 angezeigt werden können, wie etwa mit Bitmaps, Glyphen, Koordinaten, Liste von Linien, Streifen usw. Im folgenden können Beschreibungen von Techniken, die auf bestimmte Arten graphischer Daten oder graphischer Objekte angewendet werden, so ausgelegt werden, daß sie für alle Arten graphischer Daten gelten.
  • Insbesondere fängt ein Protokolltreiber des Server-Agent 160 die Graphikdisplayschnittstellenbefehle ab (Schritt 202). Bei einer Ausführungsform fängt der Protokolltreiber von dem Applikationsprogramm 158 gemachte High-Level-Applikationsprogrammierungsschnittstellenanrufe ab. Bei einer Ausführungsform fängt der Protokolltreiber von WINDOWS-basierten Betriebssystemen gelieferte GDI-Befehle ab. Bei einer weiteren Ausführungsform fängt der Protokolltreiber von MAC/OS-basierten Betriebssystemen gelieferte QUICKDRAW-Befehle ab. Bei noch weiteren Ausführungsformen fängt der Protokolltreiber Befehle auf niedrigerer Ebene ab, wie etwa Schnittstellenanrufe an den Gerätetreiber, der dem Graphikdisplay des Server-Knotens 150 zugeordnet ist. Bei noch weiteren Ausführungsformen kann der Graphikdisplayschnittstellenbefehl dupliziert werden anstatt abgefangen zu werden. Bei diesen Ausführungsformen ist das Display der Applikationsprogrammausgabedaten auf dem Server 150 und dem Client 110 im wesentlichen ähnlich, wenn nicht identisch. Der Protokolltreiber erzeugt ein Transportprotokollpaket auf der Basis des abgefangenen Graphikdisplaybefehls (Schritt 208). Der Protokolltreiber kann einen Protokollbefehlsatz verwenden, der einen analogen Befehl für jeden möglichen abgefangenen Displayschnittstellenbefehl enthält. Alternativ kann der Protokolltreiber einen Befehlssatz verwenden, der ein Teilsatz der abgefangenen Displayschnittstellenbefehle ist. Bei anderen Ausführungsformen kann der Protokollbefehlssatz eine Obermenge der möglichen abgefangenen Displayschnittstellenbefehle sein.
  • Für jeden abgefangenen GDI-Befehl und betroffene Graphikdaten, die zu dem Client-Agent 118 übertragen werden müssen, um die Ausgabe des Applikationsprogramms 158 auf dem Client-Display 128 anzuzeigen, stellt der Server-Agent 160 den verwandten Protokollbefehl zusammen mit einem eindeutigen Schlüssel 412 (4), der den betroffenen Graphikdaten zugeordnet ist, in eine Schlange. Der eindeutige Schlüssel 412 beschreibt und identifiziert eindeutig die Graphikdaten. Bei einer Ausführungsform wird der eindeutige Schlüssel erzeugt durch Ausführen einer zyklischen 64 Bit-Blockprüfung (CRC) an den Graphikdaten. Bei einer weiteren Ausführungsform wird die 64-Bit-CRC als zwei 32-Bit-CRCs erzeugt und sequentiell und in entgegengesetzten Richtungen an den Graphikdaten vorgenommen. Weitere Verfahren zum Erzeugen eines Graphikdaten zugeordneten eindeutigen Schlüssels, wie einem Fachmann bekannt, können ebenfalls verwendet werden. Der Protokollbefehl und der eindeutige Schlüssel 412 werden am Server 150 zusammen mit anderen Mengen aus Befehlen oder eindeutigen Schlüsseln in eine Schlange gestellt. Die aufgereihten Befehle werden dann gescannt, um festzustellen, ob die später erteilten Befehle (d.h. jene näher am hinteren Ende der Schlange) an die Stelle von früher erteilten Befehlen treten (d.h. jenen näher an der Vorderseite der Schlange). Wenn die früher erteilten Befehle ersetzt werden, dann entfernt sie der Server-Agent 160 aus der Schlange und vermeidet dadurch, daß unnötige Daten zu dem Client-Agent 118 übertragen werden müssen.
  • Beispielsweise muß eine Reihe von Befehlen zum Anzeigen der nächsten Datenseite, die in schneller Reihenfolge erteilt werden, nicht am Client 110 individuell angezeigt werden. Alles was angezeigt werden muß, ist die zuletzt ausgegebene Displayseite, da diese letzte Seite von Daten alle vorausgegangenen Seiten von Daten überschreibt. Indem die unnötigen Befehle und eindeutigen Schlüssel entsprechend den früheren Seiten aus der Schlange des Servers entfernt werden, reduziert der Server-Agent 160 im wesentlichen die Datenmenge, die verarbeitet und übertragen werden muß.
  • Bei einer veranschaulichenden Ausführungsform werden aus der Schlange des Servers nur unnötige Befehle und verwandte Daten hinsichtlich undurchsichtiger Operationen entfernt. Wenn beispielsweise ein zuvor in die Schlange gestellter Befehl, der die Erzeugung einer rechteckigen Region mit Koordinaten 10,10,50,50 beinhaltet, von einem zu einem jüngeren Zeitpunkt in die Schlange gestellten Befehl gefolgt wird, der die Erzeugung einer größeren/abdeckenden rechteckigen Region mit Koordinaten 0,0,100,100 beinhaltet, dann wird der zuvor in die Schlange gestellte Befehl und die verwandten Daten als unnötig erachtet und aus der Schlange entfernt.
  • Die nachfolgende Tabelle 1 führt eine beispielhafte Menge von in einer Ausführungsform der Erfindung bereitgestellten Protokollbefehlen auf.
  • TABELLE 1
    Figure 00120001
  • Figure 00130001
  • Figure 00140001
  • Figure 00150001
  • Figure 00160001
  • Figure 00170001
  • Bei einer Ausführungsform werden die Protokollbefehle und assoziierte Graphikdaten so konfiguriert, daß die Wiederholung von Informationen in dem von dem Protokolltreiber erzeugten Protokollpaketstrom maximiert wird. Bei einem Aspekt der Erfindung werden die Graphikdaten zuerst codiert (Schritt 204), bevor die Graphikdaten und/oder Protokollbefehle einen Kompressionsalgorithmus unterzogen werden (Schritt 206), die die wiederholende Art des Protokollstroms nutzt (z.B. kann ein Lempel-Ziv-Kompressionsprotokoll verwendet werden). Bei einer Ausführungsform und bei dem ersten Auftreten der Graphikdaten in der Client-Server-Sitzung wird eine Indicia der Graphikdaten zusammen mit den entsprechenden codierten Daten in dem Protokollstrom übertragen, um die über das Netz 140 übertragene Datenmenge für zukünftige Fälle, daß die Graphikdaten während der gleichen Client-Server-Sitzung auftreten, zu reduzieren. Die komprimierten Daten werden danach in das Transportprotokollpaket gebündelt und zur Dekompression und Interpretation an den Client-Knoten 110 übertragen (Schritt 208). Bei einer veranschaulichenden Ausführungsform führt das Applikationsprogramm 158 einen GDI-Befehl aus, der das Server-Betriebssystem 156 anweist, eine Bitmap zu zeichnen. Der Server-Agent 160 fängt diesen GDI-Befehl ab (Schritt 202) und erteilt dem Client-Agent 118 einen BITBLT-Befehl, der den Client-Agent 118 anweist, die Ausgangsdaten des Applikationsprogramms auf dem Client-Display 128 anzuzeigen. Vor der Erteilung des BITBLT-Befehls codiert der Server-Agent 160 die ausgegebenen Daten (Schritt 204) und nimmt die codierten Daten zusammen mit dem BITBLT-Befehl in den dem Client-Agent 118 übertragenen komprimierten Protokollpaketstrom auf. Bei einer Ausführungsform werden die die Bitmap 410 beschreibenden Daten (4) codiert und komprimiert (Schritte 204 und 206), um einige der in der Bitmap 410 vorliegenden Redundanzen auszunutzen. Beispielsweise kann die Bitmap 410 derart sein, daß aufeinanderfolgende Rasterlinien oder benachbarte Pixel redundant sind.
  • Zusätzlich zu der Codierung von Bitmaps oder anderen diskreten Graphikdatenelementen auf der Basis ihrer internen Datenredundanzen enthält die Erfindung auch Caching-Techniken, die die Codierung und Kompression von Graphikdaten, die zuvor während einer bestimmten Client-Server-Sitzung angetroffen wurden, weiter verbessert. Wenn beispielsweise eine bestimmte Bitmap zuerst während einer Client-Server-Sitzung angetroffen wird, wird sie wie oben beschrieben codiert. Für nachfolgende Übertragungen der Bitmap während der gleichen Client-Server-Sitzung können Indicia der Bitmap anstelle der relativ größeren codierten Bitmap übertragen werden. Bei einer Ausführungsform entsprechen die Indicia einer Speicherstelle innerhalb des flüchtigen Speichers des Client, der die zuvor übertragene Bitmap enthält.
  • Insbesondere und unter Bezugnahme auf 3 und 4 erzeugt der Server-Agent den eindeutigen Schlüssel 412 (Schritt 330) wie oben beschrieben und assoziiert den eindeutigen Schlüssel 412 mit den Graphikdaten (z.B. Bitmap 410). Diese Assoziation definiert im wesentlichen die Bitmap 410 und ihre verwandten Daten als ein Graphikobjekt, das danach zusammen mit seinem eindeutigen Schlüssel 412 und codierten Daten 414 in einer Datenstruktur 411 (z.B. einer Tabelle) registriert wird (Schritt 340), die in dem flüchtigen Speicher 154 des Servers gespeichert ist (z.B. dem Server-Cache-Teilsystem). Bei anderen Ausführungsformen können die die Bitmap betreffenden Daten in die persistente Speicherung 162 des Servers geschrieben werden.
  • Unter der Annahme, daß der Protokollbefehl (z.B. BITBLT) und assoziierte Graphikdaten nicht durch später erteilte Befehle ersetzt werden (wie zuvor beschrieben), entfernt der Server-Agent 160 (Schritt 360) den BITBLT-Befehl und den eindeutigen Schlüssel 412 aus der Warteschlange und durchsucht die im flüchtigen Speicher 154 des Servers gespeicherte Tabelle 411, um zu bestimmen, ob der eindeutige Schlüssel 412 zuvor darin gespeichert wurde. Falls sich der eindeutige Schlüssel 412 innerhalb der Tabelle 411 befindet, dann bestimmt der Server-Agent 160, daß die codierten Daten 414 zuvor von dem Server 150 verarbeitet wurden. Der Server-Agent 160 durchsucht die Tabelle 411 dann nach einem Index oder einem Handle 416, der bzw. das mit der codierten Bitmap 414 assoziiert ist. Falls der Index 416 gefunden wird, dann bestimmt der Server-Agent 160, daß die codierte Bitmap 414 nicht nur von dem Server 150 verarbeitet worden ist, sondern daß sie auch zuvor zu dem Client-Agent 118 übertragen worden ist. Wenn sich der Index 416 nicht in der Tabelle 411 befindet, dann bestimmt der Server-Agent 160, daß die codierte Bitmap 414 nicht zuvor übertragen worden ist.
  • Bei einer Ausführungsform identifiziert der Index 416 eine bestimmte Speicherstelle innerhalb des flüchtigen Speichers 114 des Client, die die zuvor übertragene codierte Bitmap 414 speichert. Bei einer Ausführungsform liefert der Client-Agent 118 einen Schnappschuß seines verfügbaren flüchtigen Speichers 114 an den Server-Agent 160 bei Initiierung einer Client-Server-Sitzung mit dem Server-Agent 160. Nachdem die Sitzung hergestellt worden ist, steuert der Server-Agent 160 danach die Zuweisung des verfügbaren flüchtigen Speichers 114 des Client. Auf diese Weise kann der Server-Agent 160 den flüchtigen Speicher 114 des Client der codierten Bitmap 114 zuweisen und den Index 416 als einen Zeiger oder eine Referenz auf den zugewiesenen Speicher und als einen Identifizierer der zuvor übertragenen codierten Bitmap 414 beibehalten.
  • Falls sich der Index 416 in der Tabelle 411 des Servers befindet, erhält der Server-Agent 160 den Index 416 (Schritt 370), komprimiert den Index 416 zusammen mit dem verwandten Protokollbefehl (Schritt 380) und überträgt die komprimierten Daten über das Netz 140 in einem an den Client-Agent 118 adressierten Paket. Bei einer Ausführungsform weist der Index 416 eine geringere Länge (z.B. 16 Bits) als der eindeutige Schlüssel 412 (z.B. 64 Bits) auf und verbraucht deshalb bei der Übertragung weniger Bandbreite. Bei Empfang und Dekompression des komprimierten Pakets greift der Client-Agent 118 auf die jeweilige Speicherstelle in dem flüchtigen Speicher 114 des Client zu, die von dem Index 416 spezifiziert wird, um die entsprechenden Graphikdaten 410 zu erhalten. Der Client-Agent 118 verarbeitet danach die erhaltenen Graphikdaten 410 gemäß dem Befehl, der den Index 416 in dem komprimierten Paket begleitet. Auf diese Weise wird mit der Erfindung vermieden, daß eine relativ große Bitmap oder andere Graphikdaten wieder übertragen werden müssen, die während einer bestimmten Client-Server-Sitzung bereits schon einmal angetroffen worden sind.
  • Falls sich der Index 416 nicht innerhalb der Tabelle 411 des Servers befindet (und somit nicht zuvor zu dem Client-Agent 118 übertragen worden ist), weist der Server-Agent 160 einen Teil des flüchtigen Speichers 114 des Client für die Bitmap 410 zu und bildet den die Speicherstelle identifizierenden Index 416. Der Server-Agent 160 speichert dann die codierte Bitmap 414 (entsprechend der Bitmap 410), den neu gebildeten Index 416 und den mit der codierten Bitmap 414 assoziierten eindeutigen Schlüssel 412 in der Tabelle 411 des Servers. Der Server-Agent 160 komprimiert danach die codierte Bitmap 414, den Index 416 und den verwandten Befehl und überträgt die komprimierten Daten in einem an den Client-Agent 118 adressierten Paket. Nach Empfang und Dekompression decodiert der Client-Agent 118 die codierten Daten 414 und speichert die resultierende Bitmap 410 in der durch den Index 416 identifizierten Speicherstelle und verarbeitet die resultierende Bitmap 410 gemäß dem begleitenden Befehl. Alternativ speichert der Client-Agent 118 die codierten Daten 414 in der durch den Index 416 identifizierten Speicherstelle und decodiert die codierten Daten 414 nur, wenn dies erforderlich ist, um die resultierende Bitmap 410 weiter zu bearbeiten. Auf diese Weise wird Client-Speicher effizienter verwendet.
  • Obwohl die Erfindung bisher so beschrieben worden ist, daß der Server-Agent 160 die Speicherzuweisung und die Indexbildung des Client steuert, ist es auch möglich, daß der Client-Agent 118 diese Funktionen ausführt. Wenn beispielsweise während einer Client-Server-Sitzung zuerst eine Bitmap angetroffen und codiert, komprimiert und zu dem Client-Agent 118 (mit dem begleitenden Befehl, aber ohne den Index 416) übertragen wird, kann der Client-Agent 118 die bestimmte Speicherstelle innerhalb seines flüchtigen Speichers 114 zum Speichern der Bitmap 410 bestimmen. Bei dieser Ausführungsform bildet der Client-Agent 118 einen nicht gezeigten Index, der die codierte Bitmap und ihre entsprechende Speicherstelle eindeutig identifiziert und den Index an den Server-Agent 160 überträgt, der den Index in der entsprechenden Speicherstelle in der Tabelle 411 des Servers speichert.
  • Mit der Ausführungsform fortfahrend, bei der der Server-Agent 160 die Zuweisung des flüchtigen Speichers 114 des Client steuert, pflegt der Client-Agent 118 eine kreisförmige Warteschlange 421 aller von dem Server-Agent 160 spezifizierten Indizes gemäß Warteschlangenpflegeanweisungen, die ebenfalls von dort erhalten wurden. Beispielsweise kann der Server-Agent 160 den Client-Agent 118 anweisen, einen vorbestimmten Block von Indizes 417 (z.B. entsprechend 128 K an Speicher) von ihren jeweiligen Graphikdaten zu disassoziieren, um neu angetroffene Graphikobjekte zu berücksichtigen, wenn der flüchtige Speicher 114 des Client ansonsten vollständig belegt ist. Folglich eignet sich ein nachfolgendes neues Graphikobjekt einen zuvor verwendeten Index an.
  • Der Server-Agent 160 bestimmt außerdem gemäß vorbestimmter Kriterien, ob jedes von der Neuzuordnung der Indizes beeinflußte Graphikobjekt gelöscht oder gesichert werden soll. Der Server-Agent 160 übermittelt diese Entscheidung an den Client-Agent 118. Wenn beispielsweise der Server-Agent 160 die Indizes 0, 1, 2 und 3 neu zuordnet und bestimmt, daß die mit den Handles 0 und 2 assoziierten Graphikobjekte gelöscht oder in die persistente Speicherung 120 des Client bewegt und die mit den Handles 1 und 3 assoziierten Objekte gesichert werden sollen, weist der Server-Agent 160 somit den Client-Agent 118 an, 0 und 2 zu löschen (oder zu bewegen) und 1 und 3 zu sichern. Der Client- Agent 118 bewegt dann den Index jedes gesicherten Objekts zum Ende der kreisförmigen Warteschlange. Mindestens ein Index bleibt an dem Warteschlangenende zur Zuordnung zu dem bewegten Objekt verfügbar; d.h., bei einer Ausführungsform zeigen der Kopf und das Ende der Warteschlange nicht auf den gleichen Index in der kreisförmigen Warteschlange. Folglich wird ein bewegtes Objekt sowohl an einer anderen physischen Speicherstelle gespeichert als auch mit einem anderen Index assoziiert.
  • Die in der kreisförmigen Warteschlange 421 des Client ausgeführten Pflegeaktionen werden in der Regel bei Fortsetzung der Client-Server-Sitzung häufiger, und der begrenzte flüchtige Speicher 114 des Client 110 wird mit zuvor übertragenen Bitmaps 410 oder anderen Graphikobjekten gefüllt. Dementsprechend steigt die Anzahl zuvor übertragener Graphikobjekte 422, die von dem flüchtigen Speicher 114 in die persistente Speicherung 120 des Client bewegt werden. Die vorliegende Erfindung verbessert weiterhin die oben beschriebene Caching-Technik zur Suche nach Indicia (siehe „Fuzzy-Schlüssel" unten) von zuvor übertragenen Graphikobjekten 422, die in der persistenten Speicherung 120 des Client gespeichert werden können, wenn sich in der Tabelle 411 des Servers kein Index zu diesem Graphikobjekt 422 findet. Wenn solche Indicia gefunden wird, dann besteht eine starke Wahrscheinlichkeit, daß das zuvor übertragene Graphikobjekt 422 immer noch örtlich resident und für den Client-Agent 118 zugänglich ist und daß das Graphikobjekt 422 deshalb möglicherweise nicht wieder von dem Server-Agent 150 zum Client-Agent 110 übertragen werden muß. Es ist wichtig, anzumerken, daß man durch das Finden solcher Indicia eine starke Wahrscheinlichkeit, aber keine Gewißheit, darüber erhält, daß das Graphikobjekt 420 örtlich resident ist, weil möglicherweise andere Programme oder Client-Agents, die sich möglicherweise die gleiche persistente Speicherung 120 teilen, das Graphikobjekt 422 aus der persistenten Speicherung 120 gelöscht haben können (um z.B. in der persistenten Speicherung für ein neues Objekt Platz zu machen).
  • Insbesondere und unter Bezugnahme auf 4 und 5: Wenn der Server-Agent 160 nicht in der Lage ist, einen Index für eine bestimmte Bitmap 422 in der Indextabelle 411 des Servers zu finden, durchsucht der Server-Agent 118 eine zweite Tabelle 418 (im weiteren „Fuzzy-Datenbank") nach einem Eintrag 419 (im weiteren „Fuzzy-Schlüssel"), der mit der Bitmap 422 assoziiert ist (Schritt 520). Bei einer Ausführungsform ist jeder Fuzzy-Schlüssel 419 eine Kombination aus dem eindeutigen Schlüssel 412 in der Tabelle 411 des Servers und der Länge/Größe der assoziierten Bitmap 422. Der Fuzzy-Schlüssel kann beispielsweise über eine XOR-Verknüpfung (exclusive OR) beider 32-Bit-CRCs, die zum Berechnen des eindeutigen 64-Bit-Schlüssels 412 in der Tabelle 411 des Servers verwendet werden, und der Länge der mit dem eindeutigen Schlüssel 412 assoziierten Bitmap 422 gebildet werden. Die Fuzzy-Datenbank 418 liefert im wesentlichen eine anfängliche Vorhersage darüber, ob in der persistenten Speicherung 120 des Client 110 eine Kopie der Bitmap 422 gespeichert ist. Wenn die Fuzzy-Datenbank 418 nicht den mit der Bitmap 422 assoziierten Fuzzy-Schlüssel 419 enthält, dann weist die persistente Speicherung 120 des Client wahrscheinlich keine gespeichert Kopie der Bitmap 422 auf, weshalb der Server-Agent 160 deshalb eine codierte Version der Bitmap 422 wie bereits beschrieben an den Client-Agent 118 übertragen muß. Wenn andererseits die Fuzzy-Datenbank 418 den Fuzzy-Schlüssel 419 für die Bitmap 422 enthält, dann besteht eine starke Wahrscheinlichkeit dafür, daß die Bitmap 422 in der persistenten Speicherung 120 des Client gespeichert ist.
  • Wenn genauer gesagt der Server-Agent 160 in der Fuzzy-Datenbank 418 keinen Fuzzy-Schlüssel 419 findet, der mit der Bitmap 422 assoziiert ist, sendet der Server-Agent 160 eine (der Bitmap 422 entsprechende) codierte Bitmap an den Client-Agent 118 mit einem Befehl, der anfordert, daß der Client-Agent 118 die Bitmap 422 (oder die entsprechende codierte Bitmap) in dem flüchtigen Speicher 114 speichern soll (Schritt 530). Außerdem, und wie oben beschrieben, fügt der Server-Agent 160 den mit der Bitmap 422 assoziierten Fuzzy-Schlüssel zu der Fuzzy-Datenbank 418 hinzu (Schritt 540). Man beachte, daß die Reihenfolge der Schritte 530 und 540 umgekehrt werden kann, so daß die Fuzzy-Datenbank 418 vor der Übertragung des Befehls und der codierten Version der Bitmap 422 aktualisiert wird. Der Client-Agent 118 kopiert danach die Bitmap 422 an eine bestimmte Speicherstelle innerhalb des flüchtigen Speichers 114 des Client, wie durch den Server-Agent 160 spezifiziert (Schritt 560).
  • Bei einer Ausführungsform wartet der Server-Agent 160 nicht auf eine Quittung von dem Client-Agent 118, daß die mit der Bitmap 422 assoziierte codierte Bitmap erfolgreich empfangen und verarbeitet worden ist. Vielmehr nimmt der Server-Agent 160 an, daß die codierte Bitmap ordnungsgemäß verarbeitet worden ist, und schickt weiterhin einen Strom von Protokollbefehlen, ohne auf die Rückkehr einer Quittungsmeldung von dem Client-Agent 118 zu warten. Der Server-Agent 160 verfolgt jedoch die seit der letzten gelesenen Quittung ausgegebenen Protokollbefehle. Der Server-Agent 160 blockiert die weitere Übertragung von Protokollbefehlen, wenn die Anzahl einen vorbestimmten Schwellwert erreicht. Der Schwellwert ermöglicht dem Client-Agent 118, eine Obergrenze hinsichtlich der Speichermenge festzulegen, die benötigt wird, um ankommende Protokollbefehle während einer Wiederherstellungsmodusoperation in eine Warteschlange aufzunehmen, wie unten ausführlicher beschrieben.
  • Wenn sich in der Fuzzy-Datenbank 420 ein Fuzzy-Schlüssel 419 findet, sendet der Server-Agent 160 einen Befehl an den Client 110, der den Client-Agent 118 anweist, die mit dem Fuzzy-Schlüssel 419 assoziierte Bitmap 422 aus der persistenten Speicherung des Client in den flüchtigen Speicher 114 des Client zu kopieren (Schritt 550). Dieser Befehl wird nicht nur von dem Fuzzy-Schlüssel 419 begleitet, der die relevante Bitmap 422 eindeutig identifiziert, sondern auch von dem von dem Server-Agent 160 (wie oben beschrieben) erzeugten assoziierten Index zum Identifizieren der spezifischen Speicherstelle innerhalb des flüchtigen Speichers 114 des Client, die die kopierte Bitmap 422 erhalten und speichern wird. Durch Kopieren der Bitmap 422 in den flüchtigen Speicher 114 anstatt einfach ihre Speicherstelle in der persistenten Speicherung 120 beizubehalten, kann die Erfindung schnell auf mehrere Anforderungen zum Zeichnen der Bitmap 422 reagieren, die in schneller Reihenfolge erhalten werden, oder ohne viel eingreifende Cache-Aktivität durch Kopieren der Bitmap 422 bei dem Eintreten der ersten Anforderung.
  • Falls die Bitmap 422 trotz des Vorliegens des entsprechenden Fuzzy-Schlüssels 419 in der Fuzzy-Datenbank 418 nicht gegenwärtig in der persistenten Speicherung 120 gespeichert wird, dann gibt der Client-Agent 118 (als Reaktion auf den zuvor von dem Server-Agent 160 erteilten „CACHE_READ_DISK_OBJECT"-Befehl) eine Nachricht an den Server-Agent 160 zurück, die anzeigt, daß die Bitmap 422 fehlt. Bei Empfang dieser Nachricht überträgt der Server-Agent 160 wieder die mit der Bitmap 422 assoziierten codierten Bitmapdaten zu dem Client-Agent 118 (Schritt 530). Man beachte, daß der Server-Agent 160 eine sequentielle Liste aller derartigen, zu dem Client-Agent 118 gesendeten CACHE_READ_DISK_OBJECT-Befehle pflegt, für die der Server-Agent 160 noch keine Quittung erhalten hat, so daß der Server-Agent 160 eine empfangene Quittung ordnungsgemäß mit einer bestimmten Bitmap 422 assozi ieren kann (um die codierte Bitmap, die übertragen werden muß, ordnungsgemäß zu identifizieren).
  • In der Zwischenzeit tritt der Client-Agent 118 in einen Wiederherstellungsmodus ein, in dem der Client-Agent 118 weiterhin den ankommenden Protokollstrom liest, ihn aber nicht verarbeitet. Statt dessen baut der Client-Agent 118 eine Warteschlange für den Empfang des Stroms von Befehlen auf, die weiterhin von dem Server 150 zu dem Befehl strömen, der die Bitmap 420 nicht in der persistenten Speicherung 120 gefunden hat. Der Client-Agent 118 speichert weiterhin diese Befehle in dieser Warteschlange auf FIFO-Weise (first in, first out), bis die codierte Bitmap erhalten und erfolgreich decodiert wird, um die Bitmap 422 herzustellen. Um in dem ankommenden Strom von Befehlen die fehlende Bitmap 422 zu erkennen, hält der Client-Agent 118 Ausschau nach Daten, die in dem Protokollstrom einen Wiederherstellungsmarker begleiten. Bei einer Ausführungsform ist der Wiederherstellungsmarker eine bestimmte Pseudozufallszahl, die über XOR mit dem eindeutigen Schlüssel der Bitmap 422 (d.h. der 64-Bit-CRC und 32 Bit Länge) verknüpft wird. Der Server-Agent 160 erzeugt den Wiederherstellungsmarker bei Erhalt einer nicht-Quittung-Nachricht von dem Client-Agent 118. Wenn die Bitmap 422 ankommt, speichert der Client-Agent 118 sie in seinen flüchtigen Speicher 114 (Schritt 560) (d.h., wo die Bitmap 422 gespeichert worden wäre, wenn das Objekt anfänglich in der persistenten Speicherung 120 vorgelegen hätte) und beginnt mit der Verarbeitung der Befehle in der Warteschlange. Nach der Verarbeitung aller Befehle in der Warteschlange nimmt der Client-Agent 118 die Verarbeitung des ankommenden Stroms von Protokollbefehlen auf, die über das Netz 140 vom Server 150 kommen.
  • Ein Vorteil des oben beschriebenen Wiederherstellungsprozesses besteht darin, daß durch ihn die Zeitverzögerungseinbuße vermieden wird, die sich solche Cache-Systeme aufladen, die bei Auftreten eines Cache-Miss die Befehle in der Pipeline löschen. Außerdem bewirkt der Wiederherstellungsprozeß keine Unterbrechung beim Strom von Protokollbefehlen und auch keine Zunahme bei dem Verkehr auf dem Kanal um mehr als einige wenige Byte über das hinaus, was der Server 150 an den Client 110 gesendet hätte, hätte der Server-Agent 160 zu Anfang gewußt, daß die Bitmap 422 nicht in der persistenten Speicherung 120 vorlag.
  • Bei einer Ausführungsform erleichtert die vorliegende Erfindung das Finden der Bitmap 422 in der persistenten Speicherung 120 des Client durch Speichern der Bitmap 422 in einer Datei, deren Dateiname durch Codieren des Fuzzy-Schlüssels 419 zusammen mit den mit der Bitmap 422 assoziierten, am wenigsten jüngst verwendeten und/oder am wenigsten häufig verwendeten Informationen gebildet wird. Auf diese Weise liefert der Dateiname selbst die gewünschten Informationen, und so wird vermieden, daß die Datei geöffnet und gelesen werden muß. Das Codieren des Fuzzy-Schlüssels 419 als Teil des Dateinamens der Bitmap ermöglicht auch dem Client-Agent 118, die Fuzzy-Schlüssel-Informationen schnell aus dem Dateinamen zu extrahieren und sie während eines anfänglichen Bootvorgangs des Client 110 oder bei Start der Client-Server-Sitzung an den Server-Agent 160 zu senden. Die extrahierten Fuzzy-Schlüssel können an den Server 150 in einer Reihenfolge übertragen werden, die beispielsweise auf den am wenigsten jüngst verwendeten und/oder am wenigsten häufig verwendeten Informationen basiert, die ebenfalls Teil des Dateinamens bilden.
  • Bei einer Ausführungsform werden Fuzzy-Schlüssel 419 auf eine von drei Weisen zu der Fuzzy-Datenbank 418 hinzugefügt oder aus dieser gelöscht. Zuerst sendet beim Hochfahren des Client-Agent 118 oder bei der Herstellung einer Client-Server-Sitzung mit dem Server-Agent 160 der Client-Agent 118 Befehle an den Server-Agent 160, zu der Fuzzy-Datenbank 418 für jede entsprechende Bitmap 422 in der persistenten Speicherung 120 des Client einen Fuzzy-Schlüssel 419 hinzuzufügen (die Fuzzy-Schlüssel begleiten die Befehle des Client-Agent). Der Client-Agent 118 kann eine Sendeliste pflegen, die (z.B. auf der Basis der anhand von vorausgegangenen Client-Server-Sitzungen bestimmten, zu allerletzt verwendeten oder am häufigsten verwendeten Informationen) eine Reihenfolge spezifiziert, um beim Hochfahren Fuzzy-Schlüssel an den Server 150 zu senden. Die Sendeliste kann von dem Client-Agent 118 bei Lesen des Verzeichnisses seiner persistenten Speicherung 120 und Aufheben einer Darstellung des Verzeichnisses im flüchtigen Speicher 114 gebildet werden. Bei einem Aspekt der Erfindung extrahiert der Client-Agent 118 Fuzzy-Schlüssel-Informationen aus dem Dateinamen der Datei, die die Bitmap 422 enthält, wenn die Darstellung des Verzeichnisses hergestellt wird. Zweitens fragt der Client-Agent 118 in vorbestimmten Abfrageintervallen seine persistente Speicherung 120 ab, um jene Bitmaps zu bestimmen, die sich gegenwärtig in seiner persistenten Speicherung 120 befinden (z.B. durch Suche nach Dateinamen, die eine Struktur wie ein Fuzzy-Schlüssel enthalten), und sendet dann Hinzufüge- und/oder Lösch-Befehle an den Server-Agent 160, wie dies erforderlich ist, um die Fuzzy-Datenbank 418 des Servers zu aktualisieren. Wenn drittens der Server-Agent 160 einen Befehl an den Client-Agent 118 sendet, eine Bitmap in die persistente Speicherung 120 des Client zu schreiben, erzeugt der Server-Agent 160 einen entsprechenden Fuzzy-Schlüssel 419 und speichert ihn in der Fuzzy-Datenbank 418.
  • Die Übertragung von Bitmapdaten vom Server 150 zum Client 110 kann insbesondere dann einen relativ langen Zeitraum erfordern, wenn die Netzverbindung zwischen Client und Server relativ langsam ist. Bei einer Ausführungsform adaptiert die Erfindung den Serverbetrieb an sich ändernde Netzbedingungen durch Bestimmen der relativen Geschwindigkeit des Netzes 140.
  • Beispielsweise kann der Server-Agent 160 durch dynamisches Beurteilen der Bandbreite des Netzes 140 die zum Verarbeiten von Bitmapdaten verwendeten Codier- und Kompressionstechniken modifizieren, um die Bandbreitenanforderungen zu reduzieren, wenn über ein langsames Netz übertragen wird. Die Erfindung verarbeitet Spalten von Bitmapdaten von links nach rechts und bereitet den Client-Cache 114 entsprechend vor. Während die codierte Bitmap 414 übertragen wird, kann die Übertragungszeit überwacht werden, um die Leistung des Netzes 140 zu bestimmen. Wenn die Übertragungszeit einen Schwellwert übersteigt, kann der Client-Agent 118 alle Bitmapdaten zeichnen, die bereits in seinem Cache 114 gespeichert worden sind, und die verbleibenden Teile der Bitmapdaten entweder in Echtzeit, während sie im Cache 114 empfangen werden, oder zu vorbestimmten Intervallen anzeigen. Auf diese Weise erkennt ein Benutzer des Client, daß der Client 110 immer noch an den Bitmapdaten arbeitet, und kann erkennen, daß sich der Client 110 nicht in einem aufgehängten oder abgestürzten bzw. Fehlerzustand befindet. Durch Approximieren der effektiven Netzbandbreite an den Client 110 und entsprechendes Adaptieren des Verhaltens des Servers 150 kann der Server-Agent 160 beispielsweise den Client-Agent 118 anweisen, eine ganze Bitmap zu verwenden, gegenüber der Verwendung eines Ganzspaltenmodus der Anzeige für eine bestimmte Bitmap.
  • Insbesondere sendet der Server-Agent 160 einen Start_StopWatch-Befehl, gefolgt von codierten Bitmapdaten 414, und einen Stop_StopWatch-Befehl an den Client-Agent 118. Der Client-Agent 118 reagiert auf den Start_Stopwatch-Befehl, indem er das aktuelle Uhrsignal liest und es in ein erstes Arrayelement schreibt. Nach dem Empfang der codierten Bitmap 414 reagiert der Client-Agent 118 auf den Stop_StopWatch-Befehl, indem er das aktuelle Uhrsignal liest und es in ein zweites Arrayelement schreibt. Durch Vergleich der Differenz bei den Uhrsignalen zwischen den Befehlen Start_StopWatch und Stop_StopWatch erhält man einen Schätzwert der Zeit, die zum Empfangen der codierten Bitmapdaten aufgewendet wurde. Die resultierende Zeitdifferenz wird dann zurück zum Server-Agent 160 übertragen. Dieser Vorgang kann wiederholt werden, um einen geglätteten beweglichen Mittelwert zu berechnen, aus dem ein sinnvoller Schätzwert für den effektiven Durchsatz codierter Bitmapdaten bestimmt werden kann. Die Erfindung verwendet den Durchsatzschätzwert angesichts der Größe der codierten Daten für eine bestimmte Bitmap, um zu entscheiden, ob der ganze Bitmapmodus (z.B. wenn es wahrscheinlich ist, daß es weniger als 5 Sekunden benötigt) oder zunehmend ganze Spalten (wenn es wahrscheinlich ist, daß es mehr als 5 Sekunden benötigt) verwendet werden sollen. Man beachte, daß dieser Vorgang zwar nicht zu einem 100%ig genauen Durchsatzschätzwert führt, der aber ausreichend Granularität liefert, um schnelle oder langsame Netzverbindungen zu detektieren, anhand derer verschiedene Displaymodi bestimmt werden können. Eine ähnliche Technik kann dazu verwendet werden, große Schirm-zu-Schirm-Kopien am Clientende zeitlich zu planen und einen ähnlich beweglichen mittleren Schätzwert der Client-Leistung während dieser Operationen aufzubauen, mit denen dann ein Producer-Thread am Server 150 verlangsamt und ein Überlauf an der Quelle verhindert werden kann, wenn der Server 150 Daten schneller erzeugt, als der Client 110 sie verarbeiten kann.
  • Bei einer Ausführungsform bildet die Erfindung Objekte, die ausreichend groß sind, um die Daten einer ganzen Cache-Spalte zu enthalten. Beispielsweise können die maximale Objektgröße und die Größe des Cache von dem Server-Agent 160 bei Beginn der Client-Server-Sitzung als Funktion der Größe des Verbindungsfensters und seiner Farbtiefe ausgewählt werden, wobei größere Größen für größere Schirme und Tiefen zugeordnet werden. Zudem können gegenwärtige Techniken zum Aufbrechen einer Bitmap in Spalten an einem oder beiden Enden der Bitmap zu Spalten führen, die geringer sind als die Standardbreite. Wenn diese vom Standard abweichenden Spalten zu schmal sind, dann sind sie möglicherweise nicht groß genug, um in der persistenten Speicherung 120 des Client zurückbehalten zu werden, und sie werden deshalb während nachfolgender Client-Server-Sitzungen nicht beim Client 110 vorliegen. Durch die Erfindung wird dieses Problem vermieden, indem die schmalen Spalten mit benachbarten Spalten vereinigt werden, so daß nur breite Spalten verwendet werden, und somit sind alle Teile eines Splash-Schirms beispielsweise in der persistenten Speicherung 120 enthalten. Bei einer Ausführungsform werden dann ganze Spalten in zwei Phasen angezeigt. Die erste Phase bereitet den Cache 114 mit etwaigen fehlenden Daten vor, und die zweite Phase zieht die Spalte aus dem Cache 114, was die Verwendung von mehr als einem Cache-gespeicherten Objekt beinhalten kann. Die Spalte wird deshalb auf dem Displayschirm 128 in atomarer Weise angezeigt. Wie zuvor erörtert können die Spalten, wenn die Netzverbinung langsam ist, auf atomare Weise jeweils einzeln angezeigt werden, um den Benutzer beim Client 110 zu beruhigen, daß das System weiterhin arbeitet. Alternativ kann die ganze Bitmap unter Verwendung einer ähnlichen Technik atomar angezeigt werden, wenn eine schnelle Netzverbindung detektiert wird.
  • Die oben erörterte Technik des beweglichen mittleren Schätzwerts kann auch dazu verwendet werden, seit langem bestehende Overscroll-Probleme bei einer Applikation zu mildern, die auf einem schnellen Server ausgeführt und auf einem relativ langsamen Client angezeigt wird. Das Overscroll-Problem tritt beispielsweise dann auf, wenn ein Benutzer des Client 110 etwa durch mehrfaches Anklicken des Scroll-Balkens (oder Ziehen des Scroll-Balkens) mit einer Maus 126 mehrere Scroll-Befehle initiiert. Wenn die Scroll-Befehle zu dem schnellen Server gesendet werden, führt der Server 150 die Scroll-Operationen aus und schickt die assoziierten Daten schneller zurück, als der langsame Client 110 (oder das langsame Netz 140) die Ergebnisse auf seinem Anzeigeschirm 128 anzeigt. Wenn der Benutzer beim Client 110 schließlich die gewünschte Schirmposition sieht und das Scrollen stoppen möchte (durch Stoppen der Mausklicks und/oder das Ziehen des Scroll-Balkens), läuft die Anzeige folglich über die gewünschte Schirmposition weiter. Dieser Overscroll-Zustand tritt auf, weil der schnelle Server 150 die Scroll-Befehle bereits verarbeitet und die entsprechenden Daten zurück zum Client 110 übertragen hat, aber die Daten bei dem langsamen Client in die Warteschlange eingereiht und noch nicht ganz verarbeitet worden sind.
  • Durch die Erfindung wird dieses Overscroll-Problem gemildert, indem die Häufigkeit seines Auftretens reduziert wird. Insbesondere taktet die Erfindung periodisch ausgewählte Scroll-Ereignisse beim Server 150 (durch Scrollen des Rahmenpuffers) und beim Client 110 (über die oben erörterten Stopwatch-Befehle), um einen sich bewegenden mittleren Schätzwert ihre jeweiligen Geschwindigkeiten zu berechnen. Auf diese Weise schätzt der Server-Agent 160, wie lang ein bestimmtes Scroll-Ereignis zur Verarbeitung am Server 150 benötigt (Geschwindigkeit mal die Anzahl der involvierten Pixel) und was erwartet wird, wie lange der Client 110 benötigt, und wenn die erwartete Verarbeitungszeit beim Client 110 größer ist als die des Servers 150, dann wird die Serververarbeitung um das entsprechende Zeitdifferential unterbrochen, um den Client 110 und den Server 150 im wesentlichen synchron zu halten. Dieser Ansatz führt zu viel weniger Overscrolls aufgrund der Zeitverzögerung zwischen dem Client 110 und dem Server 150 im Vergleich zu der Anzahl der Overscrolls, die auftreten, wenn dieser Ansatz nicht implementiert wird.
  • Zusätzlich zu der Verarbeitung von Bitdaten kann die vorliegende Erfindung auch eine Textkette, die auf dem Server 150 erzeugt wird, zu dem Display 128 des entfernten Client 110 verschieben. Unter Bezugnahme auf 6 führt der Server 150 das Applikationsprogramm 158 aus, das eine Textfolge erzeugt, die zu dem Client 110 verschoben werden muß. Der Server-Agent 160 fängt die von dem Applikationsprogramm 158 zu dem Server-Betriebssystem 156 gesendeten Befehle ab, die sich auf die Textfolge beziehen, und bewirkt, daß ein Displaytreiber 612 des Server-Agent 160 textbezogene Informationen verarbeitet und eine Reihe von Protokollbefehlen 614 zu dem Client-Agent 118 überträgt zur Anzeige einer Textfolge 416 auf dem Client-Display 128. Beispielsweise führt die Applikation 158 Prozeduraufrufe aus, die die Textfarbe und die Hintergrundfarbe einstellen (hier „Hello!"). Die Ausführung der TextOut-Prozedur 618 durch die Applikation 158 löst eine Ausführung der DrvTextOut-Prozedur 620 auf dem Displaytreiber 612 aus. Wie gezeigt definiert die DrvTextOut-Prozedur 620 die Beschneidungsregion, das begrenzende Rechteck und den Textmodus (einschließlich Hintergrund und Textfarbe) durch Ausführen einer Sequenz entsprechender Prozeduren.
  • Das Ausführen solcher Prozeduren bewirkt, daß der Displaytreiber 612 die entsprechenden Daten- und Protokollbefehle (wie etwa eine Teilmenge jener in Tabelle 1 bereitgestellten) zu dem Client-Agent 118 sendet. Die Protokollbefehle werden von dem Client-Agent 118 empfangen und verarbeitet, der Prozeduren 614 ausführt, die die Beschneidungsregion, das begrenzende Rechteck, den Textmodus und die mit jedem anzuzeigenden Textzeichen assoziierte Glyphe spezifizieren. Man beachte, daß das mit einem Glyphenobjekt assoziierte Protokoll nicht nur die Glyphenbitmap selbst codiert, sondern auch ihre relativen Positionierungsinformationen. Der Server 150 kann auch andere Protokollbefehle an den Client-Agent 118 senden, die den Client-Agent 118 anweisen, die assoziierten Glyphen im flüchtigen Speicher 114 und/oder in der persistenten Speicherung 120 zu speichern, wie oben beschrieben. Der Client-Agent 118 erzeugt eine Bitmap, die der Größe des begrenzenden Rechtecks entspricht, das die Textfolge umgibt, und setzt die relativen Positionen jeder Glyphe an ihre ordnungsgemäße Position innerhalb des begrenzenden Rechtecks. Nachdem die letzte Glyphe empfangen und ihre Position gesetzt worden ist, weist der Client-Agent 118 das Client-Betriebssystem 116 an, die Bitmap auf dem Displayschirm 128 des Client 110 zu zeichnen bzw. wiederzugeben.
  • Die vorliegende Erfindung unterstützt außerdem mehrere verschiedene Beschreibungen von Wegen (eine Menge von Linien oder Kurven, die als Teil der Beschreibung eine Linienzeichenoperation oder im Fall eines geschlossenen Wegs zum Beschreiben einer Region verwendet werden) einschließlich Ellipsen, Bezier-Kurven, Segmente, Streifen und Stile. Segmente beziehen sich auf Liniensegmente, die bei Kombinierung einen Weg bilden. Analog können Segmente weiterhin in Streifen zerlegt werden, die Teile des Linien-Segments sind (entsprechend einer Reihe von aufeinanderfolgenden Pixeln), die die gleichen Winkelcharakteristiken aufweisen. Die zum Darstellen von beispielsweise Streifen verwendete Codiertechnik verwendet relative Ortsinformationen und quantisierte Winkel, um aufeinanderfolgende Streifen zu charakterisieren, insbesondere Liniensegmente, was nicht nur die Menge graphischer Liniendaten minimiert, die codiert werden muß, sondern auch zu einer wiederholbareren Sequenz von Daten führt, die effizienter komprimiert werden kann. Die Zunahme bei der Wiederholbarkeit wird insbesondere dann verbessert, wenn Streifen dargestellt werden, die eine Gestalt wie etwa ein Rechteck oder einen Kreis bilden. Das für Streifen verwendete Protokoll ermöglicht es dem Client-Agent 118 auch, einen Weg unabhängig und ohne Kenntnis des Algorithmus präzise zu reproduzieren, der von dem Server-Agent 160 zum Konvertieren des Wegs in eine Sequenz von Pixeln verwendet wird.
  • Unter Bezugnahme auf das nichteinschränkende Beispiel in 7A umfaßt ein Weg 700 zwei Liniensegmente 710, 720, die perfekt linear erscheinen. Der Fachmann erkennt jedoch, daß Liniensegmente, die nicht perfekt horizontal, vertikal oder unter einer 45°-Diagonalen verlaufen, durch eine entsprechende Serie von Streifen approximiert werden müssen, wenn der Weg 700 auf einem Displayschirm 128 angezeigt wird (1). Diese Approximierung ist notwendig, weil die individuellen Pixel auf dem Displayschirm 128 von höchstens 8 anderen Pixeln umgeben sind, die entweder perfekt horizontal, vertikal oder unter einer 45°-Diagonalen relativ zueinander verlaufen, und deshalb müssen alle Liniensegmente 710, 720, die in einem anderen Gesamtwinkel liegen, durch eine Reihe von Streifen approximiert werden. Dementsprechend und unter Bezugnahme auf den beispielhaften Weg 700 von 7B umfaßt das Segment 710 vier Streifen 712, 714, 716, 718, wobei die (durch quadratische Blöcke dargestellten) individuellen Pixel jedes Streifens 712, 714, 716, 718 unter 45°-Diagonalen relativ zueinander organisiert sind, und Segment 720 besteht aus fünf Streifen 722, 724, 726, 728, 730, wobei die individuellen Pixel jedes Streifens 722, 724, 726, 728, 730 relativ zueinander horizontal organisiert sind.
  • Bei einer Ausführungsform und unter Bezugnahme auf 7B und 8A zerlegt der Server-Agent 160 den Weg 700 in Liniensegmente 710, 720 mit jeweils einer bestimmten Länge und einem bestimmten Winkel (Schritt 810). Dann wird ein Array von Liniensegmenten gebildet, um quantisierte Segmentinformationen (hier im weiteren als ein quantisierter Winkel oder „QA" bezeichnet) für jedes Liniensegment 710, 720 zu speichern (Schritt 820). Unter Bezugnahme auch auf 8B bestimmt der Server-Agent 160, anstatt den mit einem bestimmten Segment 710, 720 assoziierten absoluten Winkel zu berechnen, statt dessen, in welchem der 16 quantisierten Winkel 880 der absolute Winkel liegt. Diese Quantisierungstechnik bestimmt, in welchem 16tel des Umfangs der Endpunkt für ein Liniensegment liegt, das in der Mitte eines Kreises beginnt (ein Radius). Diese Informationen können als der ohne mit einem Vorzeichen versehene Deltawert von dem letzten in diesem Kontext spezifizierten Segment ausgedrückt werden (mod 16, initialisiert auf 0). Diese Technik führt zu einer wiederholbareren Sequenz (als wenn der absolute Winkel verwendet wurde), insbesondere wenn die Segmente eine Gestalt wie etwa ein Rechteck oder einen Kreis bilden.
  • Der Server-Agent 160 zerlegt dann jedes Liniensegment 710, 720 in Streifen (712, 714, 716, 718; 722, 724, 726, 728 bzw. 730) (Schritt 830). Die Länge jedes Streifens eines bestimmten Segments 710, 720 wird danach in einem Streifenlängenarray zur weiteren Verarbeitung gespeichert (Schritt 840). Bei einer Ausführungsform wird zum Aufbrechen des Wegs 700 in ein Array von Streifen der Windows-NT-Algorithmus bLine verwendet. Der NT-Algorithmus bestimmt den quantisierten Winkel jedes Streifens und Segments, so daß hinsichtlich Segmenten oder Streifen, die auf einer Grenze zwischen quantisierten Winkelregionen liegen, keine Doppeldeutigkeit besteht. Der NT-Algorithmus dreht eine nach oben verlaufende Linie, so daß die Linie immer nach unten verläuft (der y-Wert nimmt immer zu) und setzt das Flag_FL_FLIP_V. Analog wird eine nach links verlaufende Linie horizontal gedreht, so daß sie immer nach rechts verläuft (der x-Wert nimmt immer zu), und setzt das Flag FL_FLIP_H. Dadurch fällt das von diesem Algorithmus ausgegebene Array von Streifen in einen einzigen Quadranten. Bei dieser besonderen Ausführungsform hebt der Server-Agent 160 die Drehoperation des NT-Algorithmus auf, so daß das Array von Streifen in ihre vorherigen/ursprünglichen quantisierten Winkel zurückgedreht werden, um sicherzustellen, daß der Endpunkt eines vorhergehenden Streifens und der Startpunkt des nächsten nachfolgenden Streifens zusammenfallen, um zu vermeiden, daß die Startkoordinate des nächsten nachfolgenden Streifens gesendet werden muß.
  • Der Server-Agent 160 codiert dann die Beginnkoordinate des Wegs 700 zusammen mit den quantisierten Winkeldaten in dem Liniensegmentarray und Pixellängendaten in dem Streifenlängenarray, um einen Protokollstrom zu bilden (Schritt 850). Die codierten Daten werden dann einem Kompressionsalgorithmus unterzogen, um die Datenredundanzen in dem Protokollstrom auszunutzen (Schritt 860), und danach werden die komprimierten Graphikliniendaten zur Codierung und weiteren Verarbeitung zum Client-Agent 118 übertragen (Schritt 870).
  • Unter Bezugnahme auf die veranschaulichende Darstellung in 9 und die quantisierten Winkelinformationen von 10 umfaßt das Liniensegment 710 vier innerhalb eines quantisierten Winkels 1 positionierte Streifen 712, 714, 716, 718. Die Beginnkoordinate des Wegs 700, die als Teil der komprimierten Graphikliniendaten vom Server-Agent 160 zum Client-Agent 118 übertragen wird, entspricht dem ersten Pixel im Streifen 712 (am Ursprung von 880 positioniert). Die Graphikliniendaten enthalten weiterhin die Pixellänge jedes Streifens 712, 714, 716, 718 im Segment 710. Da das Segment 710 keiner perfekten Horizontalen, Vertikalen oder 45°-Diagonalen entspricht, wird jeder nachfolgende Streifen 714, 716 und 718 im Segment 710 um einen bestimmten Deltawert justiert, wie in 10 angedeutet, um den Gesamtwinkel des Segments 710 ordnungsgemäß zu approximieren. Bei dem vorliegenden Beispiel zeigt der Client-Agent 118 den Streifen 714 mit im wesentlichen dem gleichen x-Wert und einem zunehmenden y-Wert an, um von dem letzten Punkt in dem vorausgegangenen Streifen 712 zu dem Beginnpunkt in dem nächsten nachfolgenden Streifen 714 zu kommen. Dieser Prozeß wird für jeden Streifen im Segment 710 sowie für die Streifen in Segment 720, die innerhalb von QA 15 positioniert sind, wiederholt.
  • Dementsprechend und bei einer Ausführungsform umfaßt der von der vorliegenden Erfindung erzeugte Protokollstrom bei der Verarbeitung von Streifen die Startposition des Wegs, (gegebenenfalls) einen Index entsprechend einer Speicherstelle im flüchtigen Speicher 114 des Client (1), der möglicherweise bereits einen zu einem gewissen früheren Zeitpunkt in der Client-Server-Sitzung übertragenen bestimmten Streifen speichert, die Anzahl der Segmente in dem Weg, den quantisierten Winkel jedes Segments (anhand dessen die in 10 reflektierten Deltawerte bestimmt werden), die Länge jedes Streifens zusammen mit bestimmten Steuerinformationen und quantisierte Winkel-Delta-Informationen, die zu dem quantisierten Winkel eines ersten oder vorausgegangenen Segments addiert werden, um den Client-Agent 118 über den quantisierten Winkel der nachfolgenden Segmente zu informieren. Auf diese Weise wird durch die Erfindung vermieden, daß Koordinaten und Absolutwinkelinformationen für jeden Streifen in dem Weg gesendet werden müssen. Weiterhin erleichtert die oben erörterte Streifenverarbeitungstechnik die effiziente Kompression von Graphikliniendaten durch wirksames Einsetzen der Wiederholungshäufigkeit der Daten in dem unkomprimierten Protokollstrom.
  • Die vorliegende Erfindung kann auch auf Bitmaps angewendet werden, die in einer Auf-Schirm-Oberfläche angezeigt werden, sowie auf Bitmaps in einer Außerschirm-Oberfläche (z.B., die im Speicher eines Videodisplayadapters und/oder in einem zuvor zugewiesenen Abschnitt des flüchtigen Speichers 114 des Client gespeichert sind, die von einer Graphikkonvertierungssammlung bearbeitet werden). Außerschirm-Oberflächen werden häufig durch Applikationen wie etwa Microsoft Word gebildet, die Bitmaps auf die Außerschirm-Oberfläche schreiben, bis die Oberfläche vollständig ist, wobei dann die Außerschirm-Oberfläche auf dem Displayschirm 128 des Client 110 in endgültiger Form als eine Auf-Schirm-Oberfläche angezeigt wird. Deshalb bilden oftmals die Außerschirm-Oberflächen die Quelle für Auf-Schirm-Oberflächen.
  • Bei einer Ausführungsform und unter Bezugnahme auf Außerschirm-Oberflächen informiert der Client-Agent 118 den Server-Agent 160 über die für Außerschirm-Oberflächen verfügbare Menge an lokalem flüchtigem Speicher 114, so daß der Server-Agent 160 keine Außerschirm-Oberfläche bildet, die größer ist als der verfügbare Speicher des Client. Der Server-Agent 160 bildet danach eine Außerschirm-Oberfläche und überträgt sie an den Client-Agent 118 mit Anweisungen, die Oberfläche in seinem flüchtigen Speicher 114 zu speichern. Der Client-Agent 118 wählt einen bestimmten Abschnitt seines flüchtigen Speichers 114 aus und weist ihn der Oberfläche zu und speichert die Oberfläche darin. Jede Außerschirm-Oberfläche weist eine Menge assoziierte Attribute auf, wie etwa einen Identifizierer, der die Oberfläche, das Pixelformat, die Abmessungen, die Zeichenattribute, den Protokollzustand usw. eindeutig identifiziert.
  • Bei einer Ausführungsform kann der Server-Agent 160, damit der flüchtige Speicher 114 des Client effizienter genutzt wird, Befehle an den Client-Agent 118 ausgeben, die anweisen, daß bestimmte Operationen nur auf die Außerschirm-Oberfläche ausgeführt werden, wenn die Außerschirm-Oberfläche mit der Auf-Schirm-Oberfläche interagiert (wenn z.B. die Auf-Schirm-Oberfläche mit Bitmapdaten von der Außerschirm-Oberfläche aktualisiert wird). Wenn die einzige Interaktion zwischen der Auf-Schirm-Oberfläche und der Außerschirm-Oberfläche eine letzte Kopie auf dem Schirm ist, dann können die Operationen auf die Auf-Schirm-Oberfläche ausgerichtet werden und somit die Menge an Bitmapdaten reduzieren, die über das Netz 140 übertragen werden müssen. Alternativ kann die Quelle der Auf-Schirm-Oberfläche eingeschränkt werden, so daß sie entweder einer entfernt beim Server 150 gespeicherten Außerschirm-Oberfläche oder einer lokal beim Client 110 gespeicherten Außerschirm-Oberfläche entspricht. Zu typischen Operationen auf die Außerschirm-Oberfläche, die von dem Server-Agent 160 angefordert werden, zählen das Aktualisieren der Bitmap in der Außerschirm-Oberfläche mit aktualisiertem Text, einer aktualisierten Linie oder anderen aktualisierten Daten.
  • Bei einer Ausführungsform und unter Bezugnahme auf 11 fängt der Server-Agent 160 alle zu dem Server-Betriebssystem 156 hergestellten Anrufe ab, die die Erzeugung einer Außerschirm-Oberfläche betreffen, und der Server-Agent 160 bildet eine Duplikatkopie der Oberfläche und speichert sie zusammen mit ihren Attributen in dem lokalen Speicher des Servers. Der Server-Agent 160 gibt dann einen Befehl an den Client-Agent 118 aus, die Außerschirm-Oberfläche im flüchtigen Speicher 114 des Client zu bilden (Schritt 1102). Der Befehl wird von einer codierten Darstellung der Außerschirm-Oberfläche begleitet, wenn dies der erste Fall der Außerschirm-Oberfläche ist, oder von einem Index oder einem Fuzzy-Schlüssel, wenn die Außerschirm-Oberfläche zuvor während der Client-Server-Sitzung übertragen worden ist (Schritt 1104). Der Server-Agent 160 weist den Client-Agent 118 an, die von den Index-/Fuzzy-Schlüssel-Indicia oder codierten Oberfläche identifizierten Graphikdaten in die Außerschirm-Oberfläche des Client zu integrieren (Schritt 1106). Der Client-Agent 118 reagiert auf die Anweisungen des Server-Agent durch Kopieren der identifizierten Oberfläche/Bitmap auf die Außerschirm-Oberfläche des Client (Schritt 1108). Wenn ein von dem Server-Agent 160 ausgegebener BITBLT-Befehl beispielsweise keine Bitmap in der Außerschirm-Oberfläche des Client bildet, wie etwa wenn ein Speicherzuweisungsfehler auftritt, sendet der Client-Agent 118 einen C2S_OSS_Error-Befehl an den Server-Agent 160, der den Fehlerzustand anzeigt (Schritt 1110). Als Reaktion auf den Fehlerzustand verwendet der Server-Agent 160 seine lokale Kopie der Außerschirm-Oberfläche als die Quelle zum Aktualisieren der Außerschirm-Oberfläche des Client. Der Client-Agent 118 aktualisiert mit den von der lokalen Kopie des Servers empfangenen Informationen die Außerschirm-Oberfläche auf dem Client 110 und korrigiert etwaige korrumpierte/schmutzige Regionen der Außerschirm-Oberfläche. Wenn ein Fehlerzustand angetroffen wird, überträgt alternativ der Server-Agent 160 seine lokale/Duplikatkopie der Außerschirm-Oberfläche (Schritt 1112) zum Client-Agent 118 und weist den Client-Agent 118 an, die Duplikatoberfläche als die Quelle zum Aktualisieren der Auf-Schirm-Oberfläche zu verwenden und die korrumpierte Außerschirm-Oberfläche beim Client zu verwerfen (Schritt 1114).
  • Wenngleich die vorliegende Erfindung unter Bezugnahme auf spezifische Details beschrieben worden ist, ist nicht beabsichtigt, daß solche Details als Beschränkungen hinsichtlich des Schutzbereichs der Erfindung angesehen werden sollten, mit Ausnahme dessen und in dem Ausmaß, daß sie in den beiliegenden Ansprüchen enthalten sind.

Claims (20)

  1. Verfahren zum Fernsteuern durch einen Server (150), in einem über ein Kommunikationsnetz (140) an den Server angekoppelten Client (110) eine Außerschirm-Oberfläche zu bilden, wobei das Verfahren im Server (150) durchgeführt wird und die folgenden Schritte umfaßt: Anweisen (1102) des Client, eine erste Speicherregion für eine Zuteilung zu der Außerschirm-Oberfläche zu wählen, wobei die erste Speicherregion einem an den Client (110) angekoppelten Speicher (114) entspricht; Senden (1104) von Indicia der graphischen Daten zu dem Client; und Anweisen (1106) des Client, die den Indicia zugeordneten graphischen Daten zu einer bestimmten Speicherstelle in der ersten Speicherregion zu kopieren.
  2. Verfahren nach Anspruch 1, weiterhin mit dem folgenden Schritt: Spezifizieren mehrerer, der Außerschirm-Oberfläche zugeordneter Attribute.
  3. Verfahren nach Anspruch 1 oder Anspruch 2, wobei die Indicia der graphischen Daten einem Fuzzy-Schlüssel (419) entsprechen, wobei der Fuzzy-Schlüssel (419) eine Speicherstelle der graphischen Daten in einem an den Client (1100) angekoppelten persistenten Speicher (120) identifiziert.
  4. Verfahren nach Anspruch 1 oder Anspruch 2, wobei die Indicia der graphischen Daten einem Index (416) entsprechen, wobei der Index (416) eine Speicherstelle der graphischen Daten in einem an den Client (1100) angekoppelten Cache-Speicher identifiziert.
  5. Verfahren nach einem der vorhergehenden Ansprüche, weiterhin mit dem folgenden Schritt: Anweisen (1108) des Client (110), eine dem Client zugeordnete Auf-Schirm-Oberfläche unter Verwendung der kopierten graphischen Daten in der Außerschirm-Oberfläche zu aktualisieren.
  6. Verfahren nach einem der vorhergehenden Ansprüche, weiterhin mit dem folgenden Schritt: Speichern eines Duplikats der Außerschirm-Oberfläche in einem an den Server angekoppelten Speicher.
  7. Verfahren nach Anspruch 6, weiterhin mit den folgenden Schritten: nach Empfang einer Anzeige einer Fehlerbedingung, Senden (1112) mindestens eines Teils der Duplikat-Außerschirm-Oberfläche zu dem Client; und Anweisen des Client, den mindestens einen Teil der Duplikat-Außerschirm-Oberfläche zu einer dem Client zugeordneten Auf-Schirm-Oberfläche zu kopieren.
  8. Verfahren nach einem der vorhergehenden Ansprüche, weiterhin mit den folgenden Schritten: a) Anweisen des Client, eine zweite Speicherregion zu wählen; und b) Anweisen des Client, die graphischen Daten zu einer bestimmten Speicherstelle in der zweiten Speicherregion zu kopieren, wobei Schritt a) als Reaktion auf den Empfang einer Anzeige einer Fehlerbedingung durchgeführt wird.
  9. Verfahren nach einem der vorhergehenden Ansprüche, wobei die graphischen Daten einer Bitmap entsprechen.
  10. Verfahren nach einem der Ansprüche 1 bis 8, wobei die graphischen Daten einer Glyphe entsprechen.
  11. Verfahren nach einem der Ansprüche 1 bis 8, wobei die graphischen Daten einem Streifen entsprechen.
  12. System zum Fernsteuern durch einen Server (150), in einem über ein Kommunikationsnetz (140) an den Server angekoppelten Client (110) eine Außerschirm-Oberfläche zu bilden, wobei das System folgendes umfaßt: einen auf dem Client ausgeführten Client-Agent (118); eine an den Client-Agent angekoppelte erste Speicherregion; eine in der ersten Speicherregion gespeicherte Außerschirm-Oberfläche; einen auf dem Server (150) ausgeführten und an den Client-Agent (118) angekoppelten Server-Agent (160); und graphische Daten, wobei die graphischen Daten zugeordnete Indicia aufweisen und durch den Client gespeichert werden, und wobei der Server-Agent im Betrieb für folgendes ausgelegt ist: Senden von Indicia der graphischen Daten zu dem Client-Agent; und Anweisen des Client, die erste Speicherregion für eine Zuteilung zu der Außerschirm-Oberfläche zu wählen und die den Indicia zugeordneten graphischen Daten zu einer bestimmten Speicherstelle in der ersten Speicherregion zu kopieren.
  13. System nach Anspruch 12, wobei die Indicia der graphischen Daten einem Fuzzy-Schlüssel (419) entsprechen, wobei der Fuzzy-Schlüssel (419) eine Speicherstelle der graphischen Daten in einem an den Client angekoppelten persistenten Speicher (120) identifiziert.
  14. System nach Anspruch 12, wobei die Indicia der graphischen Daten einem Index (416) entsprechen, wobei der Index (416) eine Speicherstelle der graphischen Daten in einem an den Client angekoppelten Cache-Speicher identifiziert.
  15. System nach Anspruch 12, 13 oder 14, wobei der Server-Agent im Betrieb dafür ausgelegt ist, Attribute der Außerschirm-Oberfläche zu spezifizieren.
  16. System nach einem der Ansprüche 12 bis 15, weiterhin mit einem in einem an den Server-Agent angekoppelten Speicher gespeicherten Duplikat der Außerschirm-Oberfläche.
  17. System nach Anspruch 16, weiterhin umfassend: eine an den Client-Agent angekoppelte Auf-Schirm-Oberfläche, wobei der Client-Agent im Betrieb für folgendes ausgelegt ist: Aktualisieren der Auf-Schirm-Oberfläche unter Verwendung der Außerschirm-Oberfläche und Verwerfen der in der ersten Speicherregion gespeicherten Außerschirm-Oberfläche bei Auftreten einer Fehlerbedingung.
  18. System nach einem der Ansprüche 12 bis 17, wobei die graphischen Daten einer Bitmap entsprechen.
  19. System nach einem der Ansprüche 12 bis 17, wobei die graphischen Daten einer Glyphe entsprechen.
  20. System nach einem der Ansprüche 12 bis 17, wobei die graphischen Daten einem Streifen entsprechen.
DE60109631T 2000-05-26 2001-05-29 Verfahren und Vorrichtung zur effizienten Verringerung von graphischen Anzeigedaten für ihre Übertragung mittels eines Übertragungsprotokolls für niedrige Bandbreiten Expired - Lifetime DE60109631T2 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US20753200P 2000-05-26 2000-05-26
US207532P 2000-05-26
US22521700P 2000-08-14 2000-08-14
US225217P 2000-08-14

Publications (2)

Publication Number Publication Date
DE60109631D1 DE60109631D1 (de) 2005-04-28
DE60109631T2 true DE60109631T2 (de) 2006-01-19

Family

ID=26902328

Family Applications (4)

Application Number Title Priority Date Filing Date
DE60109631T Expired - Lifetime DE60109631T2 (de) 2000-05-26 2001-05-29 Verfahren und Vorrichtung zur effizienten Verringerung von graphischen Anzeigedaten für ihre Übertragung mittels eines Übertragungsprotokolls für niedrige Bandbreiten
DE60112103T Expired - Lifetime DE60112103T2 (de) 2000-05-26 2001-05-29 Verfahren und Vorrichtung zur effizientes Verringerung von graphischen Anzeigedaten für ihre Übertragung mittels eines Übertragungsprotokolls für niedrige Bandbreiten
DE60112107T Expired - Lifetime DE60112107T2 (de) 2000-05-26 2001-05-29 Verfahren und Vorrichtung zur effizientes Verringerung von graphischen Anzeigedaten für ihre Übertragung mittels eines Übertragungsprotokolls für niedrige Bandbreiten
DE60109602T Expired - Lifetime DE60109602T2 (de) 2000-05-26 2001-05-29 Verfahren und vorrichtung zur effizienten verringerung von graphischen anzeigedaten für ihre übertragung mittels eines übertragungsprotokolls für niedrige bandbreiten

Family Applications After (3)

Application Number Title Priority Date Filing Date
DE60112103T Expired - Lifetime DE60112103T2 (de) 2000-05-26 2001-05-29 Verfahren und Vorrichtung zur effizientes Verringerung von graphischen Anzeigedaten für ihre Übertragung mittels eines Übertragungsprotokolls für niedrige Bandbreiten
DE60112107T Expired - Lifetime DE60112107T2 (de) 2000-05-26 2001-05-29 Verfahren und Vorrichtung zur effizientes Verringerung von graphischen Anzeigedaten für ihre Übertragung mittels eines Übertragungsprotokolls für niedrige Bandbreiten
DE60109602T Expired - Lifetime DE60109602T2 (de) 2000-05-26 2001-05-29 Verfahren und vorrichtung zur effizienten verringerung von graphischen anzeigedaten für ihre übertragung mittels eines übertragungsprotokolls für niedrige bandbreiten

Country Status (11)

Country Link
US (7) US20020029285A1 (de)
EP (1) EP1285517B1 (de)
JP (1) JP2004501445A (de)
KR (4) KR100783217B1 (de)
AU (3) AU2001274972A1 (de)
CA (1) CA2408924A1 (de)
DE (4) DE60109631T2 (de)
ES (4) ES2246433T3 (de)
HK (1) HK1049415B (de)
IL (3) IL152797A0 (de)
WO (2) WO2001093525A2 (de)

Families Citing this family (204)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8352400B2 (en) 1991-12-23 2013-01-08 Hoffberg Steven M Adaptive pattern recognition based controller apparatus and method and human-factored interface therefore
US7555529B2 (en) 1995-11-13 2009-06-30 Citrix Systems, Inc. Interacting with software applications displayed in a web page
US6928469B1 (en) * 1998-12-29 2005-08-09 Citrix Systems, Inc. Apparatus and method for determining a program neighborhood for a client node in a client-server network using markup language techniques
US7966078B2 (en) 1999-02-01 2011-06-21 Steven Hoffberg Network media appliance system and method
US7127425B1 (en) * 2000-01-14 2006-10-24 H & R Block Tax Services, Inc. System and method for providing a loan to a taxpayer based on a pre year-end tax refund
US20020029285A1 (en) * 2000-05-26 2002-03-07 Henry Collins Adapting graphical data, processing activity to changing network conditions
US7117239B1 (en) 2000-07-28 2006-10-03 Axeda Corporation Reporting the state of an apparatus to a remote computer
US7603407B2 (en) * 2000-08-17 2009-10-13 Sun Microsystems, Inc. Method and system for registering binary data
US8108543B2 (en) 2000-09-22 2012-01-31 Axeda Corporation Retrieving data from a server
US7185014B1 (en) 2000-09-22 2007-02-27 Axeda Corporation Retrieving data from a server
US20030017846A1 (en) * 2001-06-12 2003-01-23 Estevez Leonardo W. Wireless display
JP2005501355A (ja) * 2001-08-27 2005-01-13 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ キャッシュ方法
US7589737B2 (en) * 2001-10-31 2009-09-15 Hewlett-Packard Development Company, L.P. System and method for communicating graphics image data over a communication network
US7171444B2 (en) * 2001-11-14 2007-01-30 Sharp Laboratories Of America, Inc. Remote desktop protocol compression system
US7499030B2 (en) * 2001-11-30 2009-03-03 Texas Instruments Incorporated Graphics initialization for wireless display devices
US7254601B2 (en) 2001-12-20 2007-08-07 Questra Corporation Method and apparatus for managing intelligent assets in a distributed environment
FR2834104B1 (fr) * 2001-12-20 2004-10-15 France Telecom Procede de transmission d'objets entre un serveur et un terminal client mettant en oeuvre une gestion de cache, systeme de transmission, serveur et terminal correspondants
KR20030060713A (ko) * 2002-01-11 2003-07-16 (주) 씨네티아 정보통신 씬 클라이언트/서버시스템의 폰트캐쉬 제어방법
US7035091B2 (en) * 2002-02-28 2006-04-25 Accenture Global Services Gmbh Wearable computer system and modes of operating the system
WO2003075116A2 (en) 2002-03-01 2003-09-12 T5 Labs Ltd Centralised interactive graphical application server
US8671213B2 (en) 2002-03-14 2014-03-11 Citrix Systems, Inc. Methods and apparatus for generating graphical and media displays at a client
US7376695B2 (en) * 2002-03-14 2008-05-20 Citrix Systems, Inc. Method and system for generating a graphical display for a remote terminal session
US8135843B2 (en) * 2002-03-22 2012-03-13 Citrix Systems, Inc. Methods and systems for providing access to an application
KR100490401B1 (ko) * 2002-03-26 2005-05-17 삼성전자주식회사 TC(Thin-Client)환경에서 영상 처리 장치 및 방법
US20030195922A1 (en) * 2002-04-10 2003-10-16 Alcatel SNMP trap and inform shaping mechanism
US7178149B2 (en) 2002-04-17 2007-02-13 Axeda Corporation XML scripting of soap commands
EP1540957A4 (de) * 2002-04-30 2009-07-08 Gen Dynamics Advanced Inf Sys Verfahren und vorrichtung zur seriellen inline-datenverschlüsselung
US7245665B2 (en) * 2002-05-30 2007-07-17 Matsushita Electric Industrial Co., Ltd. Wireless remote operation system
US20040006633A1 (en) * 2002-07-03 2004-01-08 Intel Corporation High-speed multi-processor, multi-thread queue implementation
US20040008205A1 (en) * 2002-07-11 2004-01-15 Sun Microsystems, Inc., A Delaware Corporation Tagging single-color images for improved compression
US8370420B1 (en) * 2002-07-11 2013-02-05 Citrix Systems, Inc. Web-integrated display of locally stored content objects
US7046250B1 (en) 2002-07-11 2006-05-16 Sun Microsystems, Inc. Caching fonts for improved bandwidth of transmitted text
US20040008213A1 (en) * 2002-07-11 2004-01-15 Sun Microsystems, Inc., A Delaware Corporation Tagging multicolor images for improved compression
US20040008214A1 (en) 2002-07-11 2004-01-15 Sun Microsystems, Inc., A Delaware Corporation Tagging repeating images for improved compression
US20050102352A1 (en) * 2002-09-24 2005-05-12 Junbiao Zhang Constrained user interface in a communications network
US7966418B2 (en) 2003-02-21 2011-06-21 Axeda Corporation Establishing a virtual tunnel between two computer programs
CN1765101B (zh) * 2003-04-23 2010-09-01 意大利电信股份公司 用于为移动终端提供多媒体和交互业务的客户机-服务器系统及其方法
US7760729B2 (en) * 2003-05-28 2010-07-20 Citrix Systems, Inc. Policy based network address translation
EP1665798A1 (de) * 2003-09-12 2006-06-07 Citrix Systems, Inc. Verfahen und vorrichtung zur erzeugung graphischer und media-displays in einem thin-client
US7877390B2 (en) * 2003-10-20 2011-01-25 International Business Machines Corporation Systems and methods for providing autonomous persistent storage systems
US7978716B2 (en) 2003-11-24 2011-07-12 Citrix Systems, Inc. Systems and methods for providing a VPN solution
US8868716B2 (en) * 2003-11-26 2014-10-21 General Electric Company Method and apparatus for dynamically adapting image updates based on network performance
JP2005184165A (ja) * 2003-12-17 2005-07-07 Hitachi Ltd トラフィック制御装置およびそれを用いたサービスシステム
US7631071B2 (en) * 2004-01-23 2009-12-08 Microsoft Corporation Mechanism for ensuring processing of messages received while in recovery mode
KR100574502B1 (ko) * 2004-02-06 2006-04-27 삼성전자주식회사 클라이언트에 실행된 윈도우의 상태에 따라데이터전송률을 조정하는 홈네트워크 시스템 및데이터전송률 조정방법
US7757074B2 (en) 2004-06-30 2010-07-13 Citrix Application Networking, Llc 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
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
US20060028479A1 (en) * 2004-07-08 2006-02-09 Won-Suk Chun Architecture for rendering graphics on output devices over diverse connections
US7287139B2 (en) * 2004-07-23 2007-10-23 International Business Machines Corporation Maintenance of persistent data using bitmaps
US8914522B2 (en) * 2004-07-23 2014-12-16 Citrix Systems, Inc. Systems and methods for facilitating a peer to peer route via a gateway
KR20070037650A (ko) * 2004-07-23 2007-04-05 사이트릭스 시스템스, 인크. 종단에서 게이트웨이로 패킷을 라우팅하기 위한 방법 및시스템
WO2006020823A1 (en) * 2004-08-13 2006-02-23 Citrix Systems, Inc. A method for maintaining transaction integrity across multiple remote access servers
US7483963B2 (en) * 2004-08-20 2009-01-27 Research In Motion Limited Method and system for configuring a client on host devices by utilizing an interface between a configuration application and host device drivers on a configuring device
US7774789B1 (en) 2004-10-28 2010-08-10 Wheeler Thomas T Creating a proxy object and providing information related to a proxy object
US7823169B1 (en) 2004-10-28 2010-10-26 Wheeler Thomas T Performing operations by a first functionality within a second functionality in a same or in a different programming language
US8266631B1 (en) 2004-10-28 2012-09-11 Curen Software Enterprises, L.L.C. Calling a second functionality by a first functionality
US20070055386A1 (en) * 2004-11-03 2007-03-08 Rockwell Automation Technologies, Inc. Abstracted display building method and system
US7589731B2 (en) * 2004-11-15 2009-09-15 Hewlett-Packard Development Company, L.P. Graphics systems and methods
US8706877B2 (en) 2004-12-30 2014-04-22 Citrix Systems, Inc. Systems and methods for providing client-side dynamic redirection to bypass an intermediary
US7810089B2 (en) 2004-12-30 2010-10-05 Citrix Systems, Inc. Systems and methods for automatic installation and execution of a client-side acceleration program
US7716683B2 (en) * 2004-12-30 2010-05-11 Graphics Properties Holdings, Inc. Distributed graphics processing apparatus and method
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
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
US8145777B2 (en) 2005-01-14 2012-03-27 Citrix Systems, Inc. Method and system for real-time seeking during playback of remote presentation protocols
US8340130B2 (en) * 2005-01-14 2012-12-25 Citrix Systems, Inc. Methods and systems for generating playback instructions for rendering of a recorded computer session
US8230096B2 (en) * 2005-01-14 2012-07-24 Citrix Systems, Inc. Methods and systems for generating playback instructions for playback of a recorded computer session
US8200828B2 (en) * 2005-01-14 2012-06-12 Citrix Systems, Inc. Systems and methods for single stack shadowing
US8296441B2 (en) 2005-01-14 2012-10-23 Citrix Systems, Inc. Methods and systems for joining a real-time session of presentation layer protocol data
US8935316B2 (en) 2005-01-14 2015-01-13 Citrix Systems, Inc. Methods and systems for in-session playback on a local machine of remotely-stored and real time presentation layer protocol data
US7831728B2 (en) * 2005-01-14 2010-11-09 Citrix Systems, Inc. Methods and systems for real-time seeking during real-time playback of a presentation layer protocol data stream
US20060159432A1 (en) * 2005-01-14 2006-07-20 Citrix Systems, Inc. System and methods for automatic time-warped playback in rendering a recorded computer session
US7711695B2 (en) * 2005-01-18 2010-05-04 Oracle International Corporation Reducing memory used by metadata for duplicate user defined types
EP2739014B1 (de) 2005-01-24 2018-08-01 Citrix Systems, Inc. Systeme und Verfahren zur Ausführung von Zwischenspeicherung von dynamisch erzeugten Objekten in einem Netzwerk
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
US8423673B2 (en) * 2005-03-14 2013-04-16 Citrix Systems, Inc. Method and apparatus for updating a graphical display in a distributed processing environment using compression
US8171169B2 (en) 2005-03-14 2012-05-01 Citrix Systems, Inc. Method and apparatus for updating a graphical display in a distributed processing environment
US7861212B1 (en) 2005-03-22 2010-12-28 Dubagunta Saikumar V System, method, and computer readable medium for integrating an original application with a remote application
US8578349B1 (en) 2005-03-23 2013-11-05 Curen Software Enterprises, L.L.C. System, method, and computer readable medium for integrating an original language application with a target language application
US8019883B1 (en) 2005-05-05 2011-09-13 Digital Display Innovations, Llc WiFi peripheral mode display system
US11733958B2 (en) 2005-05-05 2023-08-22 Iii Holdings 1, Llc Wireless mesh-enabled system, host device, and method for use therewith
US8200796B1 (en) 2005-05-05 2012-06-12 Digital Display Innovations, Llc Graphics display system for multiple remote terminals
US7847755B1 (en) 2005-05-23 2010-12-07 Glance Networks Method and apparatus for the identification and selective encoding of changed host display information
US8074248B2 (en) 2005-07-26 2011-12-06 Activevideo Networks, Inc. System and method for providing video content associated with a source image to a television in a communication network
US7844442B2 (en) * 2005-08-16 2010-11-30 Exent Technologies, Ltd. System and method for providing a remote user interface for an application executing on a computing device
US20110157196A1 (en) * 2005-08-16 2011-06-30 Exent Technologies, Ltd. Remote gaming features
US8527563B2 (en) * 2005-09-12 2013-09-03 Microsoft Corporation Remoting redirection layer for graphics device interface
US8191008B2 (en) 2005-10-03 2012-05-29 Citrix Systems, Inc. Simulating multi-monitor functionality in a single monitor environment
US7924884B2 (en) * 2005-12-20 2011-04-12 Citrix Systems, Inc. Performance logging using relative differentials and skip recording
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
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
US7783985B2 (en) 2006-01-04 2010-08-24 Citrix Systems, Inc. Systems and methods for transferring data between computing devices
JP4742888B2 (ja) * 2006-01-27 2011-08-10 カシオ計算機株式会社 サーバー装置、クライアント装置およびプログラム
US8284759B2 (en) * 2006-01-31 2012-10-09 Alcatel Lucent System and method for compressing voice over IP headers
WO2007101967A1 (fr) * 2006-03-07 2007-09-13 Thomson Licensing Dispositif de communication et base pour un affichage evolue
US7958501B2 (en) * 2006-03-31 2011-06-07 Sap Ag System to disclose the internal structure of persistent database objects
US8677252B2 (en) * 2006-04-14 2014-03-18 Citrix Online Llc Systems and methods for displaying to a presenter visual feedback corresponding to visual changes received by viewers
JP4577267B2 (ja) * 2006-05-17 2010-11-10 株式会社日立製作所 シンクライアントシステム
US7810140B1 (en) 2006-05-23 2010-10-05 Lipari Paul A System, method, and computer readable medium for processing a message in a transport
JP4916227B2 (ja) * 2006-06-14 2012-04-11 キヤノン株式会社 デバイスの管理装置及びその管理装置の制御方法
US7747953B2 (en) 2006-06-15 2010-06-29 Citrix Online, Llc Methods and systems for receiving feedback from a scalable number of participants of an on-line presentation
US7844759B1 (en) 2006-07-28 2010-11-30 Cowin Gregory L System, method, and computer readable medium for processing a message queue
US8484718B2 (en) * 2006-08-03 2013-07-09 Citrix System, Inc. Systems and methods for enabling assured records using fine grained auditing of virtual private network traffic
US8312120B2 (en) * 2006-08-22 2012-11-13 Citrix Systems, Inc. Systems and methods for providing dynamic spillover of virtual servers based on bandwidth
US8493858B2 (en) 2006-08-22 2013-07-23 Citrix Systems, Inc Systems and methods for providing dynamic connection spillover among virtual servers
US7885988B2 (en) * 2006-08-24 2011-02-08 Dell Products L.P. Methods and apparatus for reducing storage size
US7974478B2 (en) * 2006-08-24 2011-07-05 Dell Products L.P. Methods and apparatus for reducing storage size
US8054241B2 (en) 2006-09-14 2011-11-08 Citrix Systems, Inc. Systems and methods for multiple display support in remote access software
US7791559B2 (en) 2006-09-14 2010-09-07 Citrix Systems, Inc. System and method for multiple display support in remote access software
EP2105019A2 (de) * 2006-09-29 2009-09-30 Avinity Systems B.V. Verfahren zum streaming paralleler benutzersitzungen, system und computersoftware
US8370479B2 (en) 2006-10-03 2013-02-05 Axeda Acquisition Corporation System and method for dynamically grouping devices based on present device conditions
US7702604B1 (en) * 2006-12-22 2010-04-20 Hauser Robert R Constructing an agent that utilizes supplied rules and rules resident in an execution environment
US8200603B1 (en) 2006-12-22 2012-06-12 Curen Software Enterprises, L.L.C. Construction of an agent that utilizes as-needed canonical rules
US7664721B1 (en) * 2006-12-22 2010-02-16 Hauser Robert R Moving an agent from a first execution environment to a second execution environment using supplied and resident rules
US7660777B1 (en) * 2006-12-22 2010-02-09 Hauser Robert R Using data narrowing rule for data packaging requirement of an agent
US8132179B1 (en) 2006-12-22 2012-03-06 Curen Software Enterprises, L.L.C. Web service interface for mobile agents
US7949626B1 (en) * 2006-12-22 2011-05-24 Curen Software Enterprises, L.L.C. Movement of an agent that utilizes a compiled set of canonical rules
US7698243B1 (en) * 2006-12-22 2010-04-13 Hauser Robert R Constructing an agent in a first execution environment using canonical rules
US7660780B1 (en) 2006-12-22 2010-02-09 Patoskie John P Moving an agent from a first execution environment to a second execution environment
US8423496B1 (en) 2006-12-22 2013-04-16 Curen Software Enterprises, L.L.C. Dynamic determination of needed agent rules
US7702602B1 (en) 2006-12-22 2010-04-20 Hauser Robert R Moving and agent with a canonical rule from one device to a second device
US7860517B1 (en) 2006-12-22 2010-12-28 Patoskie John P Mobile device tracking using mobile agent location breadcrumbs
US9311141B2 (en) 2006-12-22 2016-04-12 Callahan Cellular L.L.C. Survival rule usage by software agents
US7970724B1 (en) 2006-12-22 2011-06-28 Curen Software Enterprises, L.L.C. Execution of a canonical rules based agent
US7702603B1 (en) * 2006-12-22 2010-04-20 Hauser Robert R Constructing an agent that utilizes a compiled set of canonical rules
US8065397B2 (en) 2006-12-26 2011-11-22 Axeda Acquisition Corporation Managing configurations of distributed devices
US9826197B2 (en) 2007-01-12 2017-11-21 Activevideo Networks, Inc. Providing television broadcasts over a managed network and interactive content over an unmanaged network to a client device
WO2008088741A2 (en) 2007-01-12 2008-07-24 Ictv, Inc. Interactive encoded content system including object models for viewing on a remote device
US8701010B2 (en) 2007-03-12 2014-04-15 Citrix Systems, Inc. Systems and methods of using the refresh button to determine freshness policy
US7584294B2 (en) * 2007-03-12 2009-09-01 Citrix Systems, Inc. Systems and methods for prefetching objects for caching using QOS
US8504775B2 (en) 2007-03-12 2013-08-06 Citrix Systems, Inc Systems and methods of prefreshening cached objects based on user's current web page
US8103783B2 (en) 2007-03-12 2012-01-24 Citrix Systems, Inc. Systems and methods of providing security and reliability to proxy caches
US7809818B2 (en) * 2007-03-12 2010-10-05 Citrix Systems, Inc. Systems and method of using HTTP head command for prefetching
US7720936B2 (en) 2007-03-12 2010-05-18 Citrix Systems, Inc. Systems and methods of freshening and prefreshening a DNS cache
US7783757B2 (en) * 2007-03-12 2010-08-24 Citrix Systems, Inc. Systems and methods of revalidating cached objects in parallel with request for object
US8074028B2 (en) 2007-03-12 2011-12-06 Citrix Systems, Inc. Systems and methods of providing a multi-tier cache
US20080228715A1 (en) * 2007-03-12 2008-09-18 Terabyte Media, Llc Apparatus and method for distributed information retrieval and processing
US8037126B2 (en) * 2007-03-12 2011-10-11 Citrix Systems, Inc. Systems and methods of dynamically checking freshness of cached objects based on link status
US9264483B2 (en) 2007-07-18 2016-02-16 Hammond Development International, Inc. Method and system for enabling a communication device to remotely execute an application
US7952580B1 (en) 2007-08-31 2011-05-31 Adobe Systems Incorporated Classification of exterior and interior triangles for artwork rendering
US8044955B1 (en) 2007-08-31 2011-10-25 Adobe Systems Incorporated Dynamic tessellation spreading for resolution-independent GPU anti-aliasing and rendering
US8068106B1 (en) 2007-08-31 2011-11-29 Adobe Systems Incorporated Rendering cubic Bézier curves as quadratic curves using a GPU
US7928984B1 (en) 2007-08-31 2011-04-19 Adobe Systems Incorporated Efficient data packaging for rendering bézier curves on a GPU
US20090067629A1 (en) * 2007-09-06 2009-03-12 Paltronics, Inc. Table-based encryption/decryption techniques for gaming networks, and gaming networks incorporating the same
US8819288B2 (en) * 2007-09-14 2014-08-26 Microsoft Corporation Optimized data stream compression using data-dependent chunking
US8904044B2 (en) * 2007-09-28 2014-12-02 International Business Machines Corporation Adapting compression techniques over data based on context
US20090094263A1 (en) * 2007-10-04 2009-04-09 Microsoft Corporation Enhanced utilization of network bandwidth for transmission of structured data
US7868887B1 (en) 2007-10-18 2011-01-11 Adobe Systems Incorporated Rendering rational quadratic Bézier curves on a GPU
US8190707B2 (en) * 2007-10-20 2012-05-29 Citrix Systems, Inc. System and method for transferring data among computing environments
CN101464785B (zh) * 2007-12-17 2010-12-08 联想(北京)有限公司 基于wddm的屏幕获取方法及带多显示器的计算机系统
WO2009094673A2 (en) * 2008-01-27 2009-07-30 Citrix Systems, Inc. Methods and systems for remoting three dimensional graphics
CN102007487A (zh) 2008-02-27 2011-04-06 N处理有限公司 用于低带宽显示信息传输的系统和方法
US8484291B1 (en) 2008-04-02 2013-07-09 Glance Networks, Inc. Method and apparatus for selecting commands for transmission from an updated queue
US8295617B2 (en) * 2008-05-19 2012-10-23 Citrix Systems, Inc. Systems and methods for enhanced image encoding
JP5315862B2 (ja) * 2008-08-29 2013-10-16 カシオ計算機株式会社 サーバ装置、クライアント装置、およびプログラム
US8386443B2 (en) * 2008-10-06 2013-02-26 Dell Products L.P. Representing and storing an optimized file system using a system of symlinks, hardlinks and file archives
WO2010042578A1 (en) * 2008-10-08 2010-04-15 Citrix Systems, Inc. Systems and methods for real-time endpoint application flow control with network structure component
US8260926B2 (en) 2008-11-25 2012-09-04 Citrix Systems, Inc. Systems and methods for GSLB site persistence
US8352561B1 (en) 2009-07-24 2013-01-08 Google Inc. Electronic communication reminder technology
US8751844B2 (en) * 2009-09-24 2014-06-10 Citrix Systems, Inc. Systems and methods for attributing an amount of power consumption to a workload
US8171154B2 (en) * 2009-09-29 2012-05-01 Net Power And Light, Inc. Method and system for low-latency transfer protocol
US8489725B2 (en) * 2010-07-16 2013-07-16 Research In Motion Limited Persisting file system information on mobile devices
GB2483166B (en) * 2010-08-27 2013-10-23 Fxi Technologies As Electronic devices
EP2616954B1 (de) 2010-09-18 2021-03-31 Google LLC Ein verfahren und einen mechanismus zum ferngesteuerten rendern von grafiken
WO2012051528A2 (en) 2010-10-14 2012-04-19 Activevideo Networks, Inc. Streaming digital video between video devices using a cable television system
US8907987B2 (en) 2010-10-20 2014-12-09 Ncomputing Inc. System and method for downsizing video data for memory bandwidth optimization
KR101401380B1 (ko) * 2010-11-04 2014-05-30 한국전자통신연구원 원격 렌더링 기반의 3d 응용프로그램 실행 장치 및 그 방법
EP2695388B1 (de) 2011-04-07 2017-06-07 ActiveVideo Networks, Inc. Latenzreduktion in videoverteilungsnetzwerken mit adaptiver bitrate
US8863136B2 (en) * 2011-05-19 2014-10-14 International Business Machines Corporation Lock control in multiple processor systems
US9351028B2 (en) * 2011-07-14 2016-05-24 Qualcomm Incorporated Wireless 3D streaming server
US9032467B2 (en) 2011-08-02 2015-05-12 Google Inc. Method and mechanism for efficiently delivering visual data across a network
US8615159B2 (en) 2011-09-20 2013-12-24 Citrix Systems, Inc. Methods and systems for cataloging text in a recorded session
US10042674B2 (en) * 2011-09-30 2018-08-07 Teradata Us, Inc. Regulating capacity and managing services of computing environments and systems that include a database
US9747334B2 (en) * 2011-09-30 2017-08-29 Teradata Us, Inc. Managing excess capacity of database systems in a capacity controlled computing environment
US8681813B2 (en) 2011-11-29 2014-03-25 Wyse Technology L.L.C. Bandwidth optimization for remote desktop protocol
EP2815582B1 (de) 2012-01-09 2019-09-04 ActiveVideo Networks, Inc. Wiedergabe einer interaktiven vereinfachten benutzerschnittstelle auf einem fernsehgerät
US9123084B2 (en) 2012-04-12 2015-09-01 Activevideo Networks, Inc. Graphical application integration with MPEG objects
US20130298199A1 (en) * 2012-05-02 2013-11-07 Elwha Llc Control of Transmission to a Target Device with a Cloud-Based Architecture
US9148331B2 (en) * 2012-05-02 2015-09-29 Elwha Llc Control of transmission to a target device with a cloud-based architecture
US20130297725A1 (en) * 2012-05-02 2013-11-07 Elwha Llc Control of Transmission to a Target Device with a Cloud-Based Architecture
US10275128B2 (en) 2013-03-15 2019-04-30 Activevideo Networks, Inc. Multiple-mode system and method for providing user selectable video content
US9294785B2 (en) 2013-06-06 2016-03-22 Activevideo Networks, Inc. System and method for exploiting scene graph information in construction of an encoded video sequence
US9326047B2 (en) 2013-06-06 2016-04-26 Activevideo Networks, Inc. Overlay rendering of user interface onto source video
US9219922B2 (en) 2013-06-06 2015-12-22 Activevideo Networks, Inc. System and method for exploiting scene graph information in construction of an encoded video sequence
US10075630B2 (en) 2013-07-03 2018-09-11 HJ Laboratories, LLC Providing real-time, personal services by accessing components on a mobile device
WO2015094366A1 (en) * 2013-12-20 2015-06-25 Intel Corporation Execution offloading
WO2015110804A1 (en) * 2014-01-21 2015-07-30 Elektraglide Ltd A method and system for interactive graphics streaming
US10915984B2 (en) * 2014-01-21 2021-02-09 Elektraglide Ltd Method and system for interactive graphics streaming
US20150207742A1 (en) * 2014-01-22 2015-07-23 Wipro Limited Methods for optimizing data for transmission and devices thereof
CN104135452B (zh) * 2014-08-08 2018-05-01 福建三元达网络技术有限公司 一种iq数据同步压缩还原算法及装置
JP6293627B2 (ja) * 2014-09-19 2018-03-14 アンリツ株式会社 画像表示装置及び画像表示方法
US9785332B1 (en) * 2014-12-05 2017-10-10 Amazon Technologies, Inc. Conserving processing resources by controlling updates to damaged tiles of a content page
US10546038B2 (en) 2014-12-08 2020-01-28 Amazon Technologies, Inc. Intelligent browser-based display tiling
KR102287948B1 (ko) * 2015-02-09 2021-08-09 삼성전자주식회사 애니메이션 처리 장치 및 방법
US10083096B1 (en) * 2015-12-15 2018-09-25 Workday, Inc. Managing data with restoring from purging
CN106383705B (zh) * 2016-08-31 2020-05-08 华为技术有限公司 在应用瘦客户端中设置鼠标显示状态的方法及装置
US10701176B1 (en) * 2016-09-23 2020-06-30 Amazon Technologies, Inc. Messaging using a hash ring with host groups
US10657599B2 (en) 2016-10-14 2020-05-19 Allstate Insurance Company Virtual collaboration
US11463654B1 (en) * 2016-10-14 2022-10-04 Allstate Insurance Company Bilateral communication in a login-free environment
US10742812B1 (en) 2016-10-14 2020-08-11 Allstate Insurance Company Bilateral communication in a login-free environment
US11271828B2 (en) 2018-11-15 2022-03-08 Citrix Systems, Inc. Real-time scalable virtual session and network analytics
US11627091B2 (en) * 2019-05-20 2023-04-11 Citrix Systems Inc. Systems and methods for managing streams of packets via intermediary devices
CN111031007A (zh) * 2019-11-22 2020-04-17 珠海豹趣科技有限公司 电子白板间的通信控制方法、装置及服务器

Family Cites Families (169)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US73061A (en) * 1868-01-07 Improvement in harrows
US32632A (en) * 1861-06-25 Water-elevator
US29285A (en) * 1860-07-24 A M Karr Improvement in mole-plows
US35596A (en) * 1862-06-17 Improvement in envelopes for sewing-needles
US3596257A (en) 1969-09-17 1971-07-27 Burroughs Corp Method and apparatus for allocating small memory spaces to a computer program
US4013828A (en) * 1976-02-20 1977-03-22 Bell Telephone Laboratories, Incorporated Method and arrangement for reducing the bandwidth and/or time required to transmit a dithered image
US4410916A (en) 1979-08-24 1983-10-18 Compression Labs, Inc. Dual mode facsimile coding system and method
DE2939411C2 (de) * 1979-09-28 1982-09-02 Siemens AG, 1000 Berlin und 8000 München Datenverarbeitungsanlage mit virtueller Speicheradressierung
US4322795A (en) * 1980-01-24 1982-03-30 Honeywell Information Systems Inc. Cache memory utilizing selective clearing and least recently used updating
US4394732A (en) * 1980-11-14 1983-07-19 Sperry Corporation Cache/disk subsystem trickle
US4463424A (en) * 1981-02-19 1984-07-31 International Business Machines Corporation Method for dynamically allocating LRU/MRU managed memory among concurrent sequential processes
US4562423A (en) 1981-10-15 1985-12-31 Codex Corporation Data compression
US4503501A (en) 1981-11-27 1985-03-05 Storage Technology Corporation Adaptive domain partitioning of cache memory space
US4430712A (en) 1981-11-27 1984-02-07 Storage Technology Corporation Adaptive domain partitioning of cache memory space
USRE32632E (en) 1982-07-19 1988-03-29 Apple Computer, Inc. Display system
JPS5949071A (ja) * 1982-09-13 1984-03-21 Dainippon Screen Mfg Co Ltd 図形輪郭デ−タ圧縮方法
US4499499A (en) * 1982-12-29 1985-02-12 International Business Machines Corporation Method for identification and compression of facsimile symbols in text processing systems
US4545016A (en) 1983-01-07 1985-10-01 Tandy Corporation Memory management system
DE3483489D1 (de) * 1983-04-13 1990-12-06 Nec Corp Speicherzugriffseinrichtung in einem datenverarbeitungssystem.
JP2785821B2 (ja) 1983-10-07 1998-08-13 ソニー株式会社 デイジタル信号発生回路
US4796003A (en) 1984-06-28 1989-01-03 American Telephone And Telegraph Company Data compaction
GB2172127B (en) 1985-03-06 1988-10-12 Ferranti Plc Data compression system
JPS62282328A (ja) 1986-02-21 1987-12-08 Hitachi Ltd 多重画面制御方式
US4899149A (en) 1986-02-28 1990-02-06 Gary Kahan Method of and apparatus for decoding Huffman or variable-length coees
US4862392A (en) 1986-03-07 1989-08-29 Star Technologies, Inc. Geometry processor for graphics display system
US4937036A (en) * 1986-04-28 1990-06-26 Xerox Corporation Concurrent display of data from two different display processors and user interface therefore
JP2608400B2 (ja) 1986-06-16 1997-05-07 富士写真フイルム株式会社 圧縮処理を経た画像データからの画像再構成方法
US4862167A (en) 1987-02-24 1989-08-29 Hayes Microcomputer Products, Inc. Adaptive data compression method and apparatus
US5072412A (en) 1987-03-25 1991-12-10 Xerox Corporation User interface with multiple workspaces for sharing display system objects
US4949281A (en) 1987-04-23 1990-08-14 H. Berthold Ag Method and apparatus for generating and producing two-dimensional graphic object by polynominal parametric curves
US4992954A (en) * 1987-08-05 1991-02-12 Hitachi, Ltd. Method of storing character patterns and character pattern utilization system
US4903218A (en) 1987-08-13 1990-02-20 Digital Equipment Corporation Console emulation for a graphics workstation
US4928247A (en) * 1987-08-13 1990-05-22 Digital Equipment Corporation Method and apparatus for the continuous and asynchronous traversal and processing of graphics data structures
US4870662A (en) * 1987-12-01 1989-09-26 Concord Data Systems, Inc. System and method for compressing transmitted or stored data
JPH01246656A (ja) * 1988-03-29 1989-10-02 Nec Corp プロセッサ間共有メモリ管理方式
US5103303A (en) * 1988-04-19 1992-04-07 Konica Corporation Multicolor imaging forming apparatus
US4958303A (en) * 1988-05-12 1990-09-18 Digital Equipment Corporation Apparatus for exchanging pixel data among pixel processors
CA1341310C (en) 1988-07-15 2001-10-23 Robert Filepp Interactive computer network and method of operation
JP2790815B2 (ja) * 1988-08-10 1998-08-27 株式会社リコー 画像データ圧縮方法
US4905141A (en) 1988-10-25 1990-02-27 International Business Machines Corporation Partitioned cache memory with partition look-aside table (PLAT) for early partition assignment identification
US5126739A (en) 1989-01-13 1992-06-30 Stac Electronics Data compression apparatus and method
US5016009A (en) * 1989-01-13 1991-05-14 Stac, Inc. Data compression apparatus and method
EP0389151A3 (de) 1989-03-22 1992-06-03 International Business Machines Corporation System und Verfahren für die Verwaltung eines verteilten Cache-Speichers
US5394531A (en) 1989-04-03 1995-02-28 International Business Machines Corporation Dynamic storage allocation system for a prioritized cache
KR930003126B1 (ko) * 1989-04-20 1993-04-19 가부시기가이샤 도시바 곡선정합에 있어서 형상을 표시하는 직선쇼트벡터의 접속상태를 판정하는 방법 및 시스템
US5305440A (en) * 1989-05-15 1994-04-19 International Business Machines Corporation File extension by clients in a distributed data processing system
JP2858795B2 (ja) 1989-07-14 1999-02-17 株式会社日立製作所 実記憶割り当て方法
EP0416768B1 (de) 1989-09-08 1998-06-17 Digital Equipment Corporation Privatspeicher für Fäden in einem multifaden digitalen Datenverarbeitungssystem
JP2805096B2 (ja) 1989-10-31 1998-09-30 ソニー株式会社 ディジタル変調方法及び復調方法
US5119319A (en) 1989-12-14 1992-06-02 Options Unlimited Research Corp. Full-duplex video communication system
US5077669A (en) 1989-12-27 1991-12-31 International Business Machines Corporation Method for quasi-key search within a national language support (nls) data processing system
US5001478A (en) 1989-12-28 1991-03-19 International Business Machines Corporation Method of encoding compressed data
US5309555A (en) 1990-05-15 1994-05-03 International Business Machines Corporation Realtime communication of hand drawn images in a multiprogramming window environment
US5269003A (en) 1990-05-24 1993-12-07 Apple Computer, Inc. Memory architecture for storing twisted pixels
US5049881A (en) * 1990-06-18 1991-09-17 Intersecting Concepts, Inc. Apparatus and method for very high data rate-compression incorporating lossless data compression and expansion utilizing a hashing technique
CA2045788A1 (en) * 1990-06-29 1991-12-30 Kadangode K. Ramakrishnan Cache arrangement for file system in digital data processing system
US5051745A (en) * 1990-08-21 1991-09-24 Pkware, Inc. String searcher, and compressor using same
JP3189276B2 (ja) * 1990-09-12 2001-07-16 ブラザー工業株式会社 データ変換装置
JPH0799508B2 (ja) 1990-10-15 1995-10-25 インターナショナル・ビジネス・マシーンズ・コーポレイション キャッシュ記憶機構を動的に区分する方法およびキャッシュ記憶機構システム
US5544317A (en) * 1990-11-20 1996-08-06 Berg; David A. Method for continuing transmission of commands for interactive graphics presentation in a computer network
US5241625A (en) * 1990-11-27 1993-08-31 Farallon Computing, Inc. Screen image sharing among heterogeneous computers
US5339411A (en) 1990-12-21 1994-08-16 Pitney Bowes Inc. Method for managing allocation of memory space
DE69133032T2 (de) 1990-12-26 2003-01-30 Canon Kk Multimedia-Kommunikationsvorrichtung
US5161015A (en) 1990-12-31 1992-11-03 Zenith Electronics Corporation System for peaking a video signal with a control signal representative of the perceptual nature of blocks of video pixels
US5164727A (en) 1991-04-30 1992-11-17 Regents Of The Unversity Of California Optimal decoding method and apparatus for data acquisition applications of sigma delta modulators
CA2069355C (en) 1991-06-07 1998-10-06 Robert C. Pike Global user interface
US6643656B2 (en) * 1991-07-31 2003-11-04 Richard Esty Peterson Computerized information retrieval system
US5315698A (en) 1991-08-21 1994-05-24 Digital Equipment Corporation Method and apparatus for varying command length in a computer graphics system
US5321806A (en) 1991-08-21 1994-06-14 Digital Equipment Corporation Method and apparatus for transmitting graphics command in a computer graphics system
US5140321A (en) * 1991-09-04 1992-08-18 Prime Computer, Inc. Data compression/decompression method and apparatus
CA2083634C (en) 1991-12-30 1999-01-19 Hung Ping Wong Method and apparatus for mapping page table trees into virtual address space for address translation
GB9205774D0 (en) 1992-03-17 1992-04-29 Int Computers Ltd Computer security system
US5351129A (en) 1992-03-24 1994-09-27 Rgb Technology D/B/A Rgb Spectrum Video multiplexor-encoder and decoder-converter
WO1994002898A1 (en) 1992-07-24 1994-02-03 Microsoft Corporation Computer method and system for allocating and freeing memory
JPH0659982A (ja) 1992-08-10 1994-03-04 Hitachi Ltd 仮想記憶制御方法および装置
US5406279A (en) 1992-09-02 1995-04-11 Cirrus Logic, Inc. General purpose, hash-based technique for single-pass lossless data compression
US5434992A (en) * 1992-09-04 1995-07-18 International Business Machines Corporation Method and means for dynamically partitioning cache into a global and data type subcache hierarchy from a real time reference trace
US5491808A (en) 1992-09-30 1996-02-13 Conner Peripherals, Inc. Method for tracking memory allocation in network file server
DE69324204T2 (de) * 1992-10-22 1999-12-23 Cabletron Systems Inc Aufsuchen von Adressen bei Paketübertragung mittels Hashing und eines inhaltsadressierten Speichers
US5537551A (en) 1992-11-18 1996-07-16 Denenberg; Jeffrey N. Data compression method for use in a computerized informational and transactional network
US5455576A (en) * 1992-12-23 1995-10-03 Hewlett Packard Corporation Apparatus and methods for Lempel Ziv data compression with improved management of multiple dictionaries in content addressable memory
US5469540A (en) 1993-01-27 1995-11-21 Apple Computer, Inc. Method and apparatus for generating and displaying multiple simultaneously-active windows
IL104568A (en) 1993-01-31 1995-12-31 Age Computational Graphics Ltd Method and system for generating amplified output signals
CA2127053C (en) 1993-07-02 2005-01-04 Makoto Furuhashi Method and apparatus for time-sharing cpu system bus in image generation system
US5521597A (en) 1993-08-02 1996-05-28 Mircosoft Corporation Data compression for network transport
WO1995012165A1 (en) 1993-10-22 1995-05-04 Gestalt Technologies, Incorporated Distributed management in a partitioned memory system
US5384568A (en) * 1993-12-02 1995-01-24 Bell Communications Research, Inc. Data compression
US5515508A (en) * 1993-12-17 1996-05-07 Taligent, Inc. Client server system and method of operation including a dynamically configurable protocol stack
US5473742A (en) 1994-02-22 1995-12-05 Paragraph International Method and apparatus for representing image data using polynomial approximation method and iterative transformation-reparametrization technique
US5537635A (en) 1994-04-04 1996-07-16 International Business Machines Corporation Method and system for assignment of reclaim vectors in a partitioned cache with a virtual minimum partition size
US5734388A (en) 1994-05-16 1998-03-31 Agfa Division, Bayer Corporation Method and apparatus for data compression of digital data to produce a scaleable font database
US5754187A (en) 1994-05-16 1998-05-19 Agfa Division, Bayer Corporation Method for data compression of digital data to produce a scaleable font database
US5729710A (en) * 1994-06-22 1998-03-17 International Business Machines Corporation Method and apparatus for management of mapped and unmapped regions of memory in a microkernel data processing system
US5572206A (en) 1994-07-06 1996-11-05 Microsoft Corporation Data compression method and system
EP0770246A4 (de) * 1994-07-14 1998-01-14 Johnson Grace Company Verfahren und gerät zur bildkompression
US5485460A (en) 1994-08-19 1996-01-16 Microsoft Corporation System and method for running multiple incompatible network protocol stacks
US5566288A (en) 1994-09-02 1996-10-15 Caterpillar Inc. System and method for automatically fitting a B-spline curve to a set of data points
US5802281A (en) * 1994-09-07 1998-09-01 Rsi Systems, Inc. Peripheral audio/video communication system that interfaces with a host computer and determines format of coded audio/video signals
US5771383A (en) * 1994-12-27 1998-06-23 International Business Machines Corp. Shared memory support method and apparatus for a microkernel data processing system
US5771034A (en) * 1995-01-23 1998-06-23 Microsoft Corporation Font format
US5682486A (en) 1995-03-14 1997-10-28 International Business Machines Corporation Video display and control of multiple graphical interfaces
EP0734144A3 (de) 1995-03-20 1999-08-18 Siemens Aktiengesellschaft Verfahren und Anordnung zum Ermitteln der Benutzergebühr in einer Teilnehmereinrichtung
US5682488A (en) 1995-04-03 1997-10-28 International Business Machine Corp. Variable computer icon for single control of complex software functions executed on a data processing system
US5621660A (en) 1995-04-18 1997-04-15 Sun Microsystems, Inc. Software-based encoder for a software-implemented end-to-end scalable video delivery system
US5651136A (en) 1995-06-06 1997-07-22 International Business Machines Corporation System and method for increasing cache efficiency through optimized data allocation
US5501478A (en) * 1995-06-07 1996-03-26 Robert L. Doan Occupant propelled three wheeled vehicle
US5930493A (en) * 1995-06-07 1999-07-27 International Business Machines Corporation Multimedia server system and method for communicating multimedia information
US5874960A (en) * 1995-07-05 1999-02-23 Microsoft Corporation Method and system for sharing applications between computer systems
US5864711A (en) * 1995-07-05 1999-01-26 Microsoft Corporation System for determining more accurate translation between first and second translator, and providing translated data to second computer if first translator is more accurate
US5793371A (en) * 1995-08-04 1998-08-11 Sun Microsystems, Inc. Method and apparatus for geometric compression of three-dimensional graphics data
US5742797A (en) * 1995-08-11 1998-04-21 International Business Machines Corporation Dynamic off-screen display memory manager
US5767849A (en) * 1995-08-18 1998-06-16 International Business Machines Corporation Personality neutral window management subsystem
US5835959A (en) 1995-12-01 1998-11-10 Sand Technology Systems International, Inc. Memory management system and method using dual indexing structures
US5850632A (en) 1995-09-08 1998-12-15 Texas Instruments Incorporated Memory access controller utilizing cache memory to store configuration information
US6016535A (en) * 1995-10-11 2000-01-18 Citrix Systems, Inc. Method for dynamically and efficiently caching objects by subdividing cache memory blocks into equally-sized sub-blocks
US5826027A (en) 1995-10-11 1998-10-20 Citrix Systems, Inc. Method for supporting an extensible and dynamically bindable protocol stack in a distrubited process system
US6081623A (en) * 1995-10-11 2000-06-27 Citrix Systems, Inc. Method for lossless bandwidth compression of a series of glyphs
US6161126A (en) 1995-12-13 2000-12-12 Immersion Corporation Implementing force feedback over the World Wide Web and other computer networks
JPH09233467A (ja) 1996-02-21 1997-09-05 Fujitsu Ltd 画像データ通信装置及び画像データ通信システムにおける通信データ量調整方法
US5961588A (en) * 1996-02-22 1999-10-05 Alcatel Usa Sourcing, L.P. Handling of commands passed between the server and client stations of a telecommunications system
US6553410B2 (en) * 1996-02-27 2003-04-22 Inpro Licensing Sarl Tailoring data and transmission protocol for efficient interactive data transactions over wide-area networks
US5740171A (en) 1996-03-28 1998-04-14 Cisco Systems, Inc. Address translation mechanism for a high-performance network switch
US5923654A (en) * 1996-04-25 1999-07-13 Compaq Computer Corp. Network switch that includes a plurality of shared packet buffers
US5864678A (en) 1996-05-08 1999-01-26 Apple Computer, Inc. System for detecting and reporting data flow imbalance between computers using grab rate outflow rate arrival rate and play rate
US6034689A (en) * 1996-06-03 2000-03-07 Webtv Networks, Inc. Web browser allowing navigation between hypertext objects using remote control
US6057857A (en) * 1996-06-12 2000-05-02 Citrix Systems, Inc. Method for the lossless compression of lines in a distributed computer system
US6014133A (en) * 1996-06-14 2000-01-11 Seiko Epson Corporation Data transmitter/receiver apparatus, data transmitter, data receiver, and data compression method
KR100203266B1 (ko) * 1996-07-09 1999-06-15 윤종용 윤곽선복호화장치
US5757925A (en) 1996-07-23 1998-05-26 Faybishenko; Yaroslav Secure platform independent cross-platform remote execution computer system and method
US5918019A (en) * 1996-07-29 1999-06-29 Cisco Technology, Inc. Virtual dial-up protocol for network communication
JP3853877B2 (ja) * 1996-08-06 2006-12-06 紀伊産業株式会社 コンパクト容器
US5761734A (en) * 1996-08-13 1998-06-02 International Business Machines Corporation Token-based serialisation of instructions in a multiprocessor system
US5883640A (en) 1996-08-15 1999-03-16 Hsieh; Paul Computing apparatus and operating method using string caching to improve graphics performance
US5936940A (en) 1996-08-22 1999-08-10 International Business Machines Corporation Adaptive rate-based congestion control in packet networks
US6052120A (en) 1996-10-01 2000-04-18 Diamond Multimedia Systems, Inc. Method of operating a portable interactive graphics display tablet and communications systems
US5944791A (en) * 1996-10-04 1999-08-31 Contigo Software Llc Collaborative web browser
US5931904A (en) 1996-10-11 1999-08-03 At&T Corp. Method for reducing the delay between the time a data page is requested and the time the data page is displayed
US5864811A (en) * 1996-11-13 1999-01-26 Compaq Computer Corporation Audio circuit for use with synthesized audio signals and signals from a modem
US5913230A (en) * 1997-01-07 1999-06-15 Richardson; John J. Object and method for providing efficient multi-user access to shared operating system kernal code using instancing
US5949975A (en) * 1997-03-12 1999-09-07 Microsoft Corp. Method and system for negotiating capabilities when sharing an application program with multiple computer systems
GB2323946B (en) * 1997-04-04 2002-04-17 Sony Uk Ltd Database accessing method and apparatus
US6061714A (en) * 1997-05-07 2000-05-09 International Business Machines Corporation Persistent cache synchronization and start up system
US5907678A (en) * 1997-05-07 1999-05-25 International Business Machines Corporation Client/server system in which protocol caches for multiple sessions are selectively copied into a common checkpoint cache upon receiving a checkpoint request
US5983190A (en) 1997-05-19 1999-11-09 Microsoft Corporation Client server animation system for managing interactive user interface characters
US5877757A (en) 1997-05-23 1999-03-02 International Business Machines Corporation Method and system for providing user help information in network applications
US6181711B1 (en) * 1997-06-26 2001-01-30 Cisco Systems, Inc. System and method for transporting a compressed video and data bit stream over a communication channel
US5999950A (en) 1997-08-11 1999-12-07 Webtv Networks, Inc. Japanese text input method using a keyboard with only base kana characters
US5999179A (en) 1997-11-17 1999-12-07 Fujitsu Limited Platform independent computer network management client
US6489956B1 (en) * 1998-02-17 2002-12-03 Sun Microsystems, Inc. Graphics system having a super-sampled sample buffer with generation of output pixels using selective adjustment of filtering for implementation of display effects
US7263127B1 (en) 1998-04-02 2007-08-28 Intel Corporation Method and apparatus for simplifying frame-based motion estimation
US6061715A (en) * 1998-04-30 2000-05-09 Xerox Corporation Apparatus and method for loading and reloading HTML pages having cacheable and non-cacheable portions
US6163773A (en) * 1998-05-05 2000-12-19 International Business Machines Corporation Data storage system with trained predictive cache management engine
KR20010043446A (ko) * 1998-05-08 2001-05-25 지오워크스 코포레이션 풍부한 콘텐츠와 직접 사용자 응답 메카니즘을 가진 무선통신 장치에 대한 통합된 광고
US6397259B1 (en) * 1998-05-29 2002-05-28 Palm, Inc. Method, system and apparatus for packet minimized communications
US6639593B1 (en) * 1998-07-31 2003-10-28 Adobe Systems, Incorporated Converting bitmap objects to polygons
US6563517B1 (en) * 1998-10-02 2003-05-13 International Business Machines Corp. Automatic data quality adjustment to reduce response time in browsing
US6233606B1 (en) * 1998-12-01 2001-05-15 Microsoft Corporation Automatic cache synchronization
US6449639B1 (en) * 1998-12-23 2002-09-10 Doxio, Inc. Method and system for client-less viewing of scalable documents displayed using internet imaging protocol commands
US6731600B1 (en) * 1999-02-08 2004-05-04 Realnetworks, Inc. System and method for determining network conditions
US6657954B1 (en) 1999-03-31 2003-12-02 International Business Machines Corporation Adapting receiver thresholds to improve rate-based flow control
US6483515B1 (en) * 1999-04-09 2002-11-19 Sun Microsystems, Inc. Method and apparatus for displaying data patterns in information systems
US6801499B1 (en) 1999-08-10 2004-10-05 Texas Instruments Incorporated Diversity schemes for packet communications
US6314452B1 (en) * 1999-08-31 2001-11-06 Rtimage, Ltd. System and method for transmitting a digital image over a communication network
WO2001080561A1 (en) 2000-04-18 2001-10-25 Rtimage Inc. System and method for the lossless progressive streaming of images over a communication network
US20020029285A1 (en) * 2000-05-26 2002-03-07 Henry Collins Adapting graphical data, processing activity to changing network conditions
US7092740B1 (en) 2001-04-20 2006-08-15 Trilogy Development Group, Inc. High density information presentation using space-constrained display device
JP2007099007A (ja) * 2005-09-30 2007-04-19 Auto Network Gijutsu Kenkyusho:Kk ワイヤハーネスの配索構造
JP2008002007A (ja) * 2006-06-21 2008-01-10 Daiwabo Co Ltd ナノ粒子担持材料およびその製造方法
JP4873139B2 (ja) * 2006-06-23 2012-02-08 Nok株式会社 ガスケットの製造方法

Also Published As

Publication number Publication date
WO2001092973A3 (en) 2002-05-23
JP2004501445A (ja) 2004-01-15
KR20030031903A (ko) 2003-04-23
ES2246432T3 (es) 2006-02-16
US20020073061A1 (en) 2002-06-13
HK1049415A1 (en) 2003-05-09
EP1285517A2 (de) 2003-02-26
US20030046432A1 (en) 2003-03-06
KR100824120B1 (ko) 2008-04-22
US8099389B2 (en) 2012-01-17
US7127525B2 (en) 2006-10-24
CA2408924A1 (en) 2001-12-06
KR20070086443A (ko) 2007-08-27
EP1285517B1 (de) 2005-03-23
US20100205246A1 (en) 2010-08-12
US7490166B2 (en) 2009-02-10
US20090144292A1 (en) 2009-06-04
ES2246433T3 (es) 2006-02-16
HK1049415B (zh) 2005-06-24
DE60112107T2 (de) 2006-04-20
DE60109602T2 (de) 2006-04-27
IL152797A (en) 2008-03-20
AU2001274972A1 (en) 2001-12-11
DE60112103T2 (de) 2006-06-01
DE60109602D1 (de) 2005-04-28
KR100783216B1 (ko) 2007-12-06
US8290907B2 (en) 2012-10-16
US7028025B2 (en) 2006-04-11
US20020029285A1 (en) 2002-03-07
KR20070086442A (ko) 2007-08-27
US20060153423A1 (en) 2006-07-13
IL152797A0 (en) 2003-06-24
US20020035596A1 (en) 2002-03-21
WO2001093525A2 (en) 2001-12-06
IL184891A (en) 2008-12-29
DE60109631D1 (de) 2005-04-28
ES2240872T3 (es) 2005-10-16
KR20070086444A (ko) 2007-08-27
DE60112107D1 (de) 2005-08-25
US7502784B2 (en) 2009-03-10
WO2001093525A3 (en) 2002-03-21
ES2240461T3 (es) 2005-10-16
KR100783217B1 (ko) 2007-12-06
WO2001092973A2 (en) 2001-12-06
KR100824121B1 (ko) 2008-04-22
DE60112103D1 (de) 2005-08-25
AU6349001A (en) 2001-12-11
AU2001263490B2 (en) 2006-06-08

Similar Documents

Publication Publication Date Title
DE60109631T2 (de) Verfahren und Vorrichtung zur effizienten Verringerung von graphischen Anzeigedaten für ihre Übertragung mittels eines Übertragungsprotokolls für niedrige Bandbreiten
DE60038703T2 (de) Asynchrone Datenübertragung
EP1326406B1 (de) Verfahren und Vorrichtung zur effizientes Verringerung von graphischen Anzeigedaten für ihre Übertragung mittels eines Übertragungsprotokolls für niedrige Bandbreiten
AU2006202299B2 (en) Method and system for efficiently reducing graphical display data for transmission over a low bandwidth transport protocol mechanism
DE602004002104T2 (de) Ultraleicht browser
AU2006202292B2 (en) Method and system for efficiently reducing graphical display data for transmission over a low bandwidth transport protocol mechanism
DE102004048343B4 (de) Verfahren zur Reduzierung der Latenzzeit bei der interaktiven Datenkommunikation zwischen einem Terminal Server und einem Terminal-Server Client in einem Telekommunikationsnetzwerk, insbesondere einem GSM oder einem UMTS Netzwerk
EP1623342A2 (de) Verfahren zur reduzierung der latenzzeit bei der interaktiven datenkommunikation zwischen einem terminal server und einem terminal-server client in einem geostationären satelitennetzwerk

Legal Events

Date Code Title Description
8364 No opposition during term of opposition