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

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

Info

Publication number
DE60112107T2
DE60112107T2 DE60112107T DE60112107T DE60112107T2 DE 60112107 T2 DE60112107 T2 DE 60112107T2 DE 60112107 T DE60112107 T DE 60112107T DE 60112107 T DE60112107 T DE 60112107T DE 60112107 T2 DE60112107 T2 DE 60112107T2
Authority
DE
Germany
Prior art keywords
client
server
agent
coordinate
quantized
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
DE60112107T
Other languages
English (en)
Other versions
DE60112107D1 (de
Inventor
Henry High Wycombe Collins
Ruiguo Boca Raton Yang
Paul Coleman
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
Publication of DE60112107D1 publication Critical patent/DE60112107D1/de
Application granted granted Critical
Publication of DE60112107T2 publication Critical patent/DE60112107T2/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

  • TECHNISCHES GEBIET
  • Die vorliegende Erfindung betrifft allgemein die Kommunikation zwischen einem Anwendungsserver und einem Thin-Client in einem verteilten System und insbesondere die Verringerung der Menge an graphischen Anzeigedaten, die über einen Transportprotokollmechanismus mit niedriger Bandbreite übertragen werden.
  • ALLGEMEINER STAND DER TECHNIK
  • Verteilte Computersysteme verwenden die Technik der Verteilung der Anwendungsausführung. Genauer gesagt führt ein Anwendungsserver lokal ein Anwendungsprogramm aus und führt die Anwendungsausgangsdaten Clients bzw. Netzwerkbenutzern zu, die die Ergebnisse dann auf einem an ihren lokalen Computer angekoppelten Anzeigeschirm anzeigen. Durch Durchführen der Anwendungsverarbeitungsfunktionen im Server und Anzeigen der Anwendungsausgabe im Client nutzen diese verteilten Systeme Server- und Client-Betriebsmittel am besten aus, d.h. der leistungsstärkere Server führt die rechen- und speicherintensiven Anwendungsverarbeitungsfunktionen durch, während der Client mit potentiell größerer Videoleistungsfähigkeit die Ausgabe anzeigt. Während der Ausführung des Anwendungsprogramms betrachtet ein Benutzer des Client die Anwendungsausgangsdaten auf der Anzeige des Client und tritt über Tastatur oder Mauseingaben mit dem Anwendungsprogramm in Dialog. Die Eingaben des Clientbenutzers entsprechen Anforderungen für den Anwendungsserver, bestimmte Aktionen durchzuführen, die sich auf den Betrieb des Anwendungsprogramms auswirken.
  • Der Anwendungsserver leitet diese Anforderungen zur weiteren Verarbeitung zu der Anwendung weiter. Außerdem fängt der Anwendungsserver die Anwendungsausgangsdaten ab, die durch das Anwendungsprogramm erzeugt werden und in der Regel auf das Betriebssystem des Anwendungsserver abzielen, und sendet alle Daten oder einen Teil davon zur Anzeige zu dem Client. Vom Benutzer aus gesehen scheint das Anwendungsprogramm lokal ausgeführt zu werden, obwohl es tatsächlich auf einem abgesetzten Server ausgeführt und lediglich lokal angezeigt wird.
  • Die Leistungsfähigkeit verteilter Systeme hängt stark von der Fähigkeit des Netzwerks ab, das Client und Server koppelt, und deshalb von der Menge an graphischen Daten (entsprechend den Anwendungsausgangsdaten), die über das Netzwerk übertragen wird. Da der Anwendungsserver und die Client-Workstation im allgemeinen nur durch einen Transportmechanismus verbunden sind (wie zum Beispiel serielle Leitungen, Telefonleitungen, lokale Netzwerke und großflächige Netzwerke), der eine niedrigere Bandbreite besitzt, als ansonsten verfügbar wäre, wenn das Anwendungsprogramm lokal ausgeführt werden würde, kann die wahrgenommene Leistungsfähigkeit des verteilten Systems beeinträchtigt werden. Hersteller verteilter Systeme bzw. Software bemühen sich folglich kontinuierlich, die Leistungsfähigkeit solcher Systeme zu verbessern.
  • Aus „A scheme for the efficient encoding of graphical data for communications and information processing" – Proceedings of the electronics congress – advance in Electronics, Rassegna, IT, ist ein System und ein Verfahren zum effizienten Verringern der über ein Kommunikationsnetz von einem Server zu einem Client übertragenen Menge an graphischen Daten mit den Merkmalen des Oberbegriffs der unabhängigen Ansprüche bekannt.
  • KURZE DARSTELLUNG DER ERFINDUNG
  • Gemäß der Erfindung wird ein Verfahren zum effizienten Verringern der Menge an graphischen Daten, die von einem Server über ein Kommunikationsnetz zu einem Client gesendet werden, bereitgestellt, mit den folgenden Schritten:
    Auftrennen eines Weges in mehrere Streifen; Bestimmen eines mit dem Absolutwinkel assoziierten quantisierten Winkels für jeden der mehreren Streifen; Bilden eines Protokollstroms in dem Server, wobei der Protokollstrom eine Anfangskoordinate des Weges und die Streifenlänge und ein Indicia des quantisierten Winkels jedes der mehreren Streifen enthält; und Senden des Protokollstroms von dem Server zu dem Client über das Kommunikationsnetz; dadurch gekennzeichnet, daß mit jedem der mehreren Streifen eine in einem Koordinatensystem definierte Anfangs- und Endpunktkoordinate, eine Streifenlänge und ein Absolutwinkel assoziiert sind, wobei das Koordinatensystem einer Region einer mit dem Client assoziierten Anzeigeoberfläche entspricht.
  • Gemäß einem weiteren Aspekt der Erfindung wird außerdem ein System zum effizienten Verringern der Menge an graphischen Daten, die von einem Server über ein Kommunikationsnetz zu einem Client gesendet werden, bereitgestellt, wobei das System folgendes umfaßt:
    einen Server-Agent, der auf dem Server wirkt und über das Kommunikationsnetz an den Client angekoppelt ist, wobei der Server-Agent so angeordnet ist, daß er im Betrieb folgendes ausführt:
    • a) Auftrennen eines Weges in mehrere Streifen;
    • b) Bestimmen eines mit dem Absolutwinkel assoziierten quantisierten Winkels für jeden der mehreren Streifen;
    • c) Bilden eines Protokollstroms in dem Server, wobei der Protokollstrom eine Anfangskoordinate des Weges und die Streifenlänge und ein Indicia des quantisierten Winkels jedes der mehreren Streifen enthält; und
    • d) Senden des Protokollstroms von dem Server zu dem Client über das Kommunikationsnetz;
    dadurch gekennzeichnet, daß mit jedem der mehreren Streifen eine in einem Koordinatensystem definierte Anfangs- und Endpunktkoordinate, eine Streifenlänge und ein Absolutwinkel assoziiert sind, wobei das Koordinatensystem einer Region einer mit dem Client assoziierten Anzeigeoberfläche entspricht.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die obige Besprechung wird aus der folgenden ausführlichen Beschreibung der Erfindung in Verbindung mit den beigefügten Zeichnungen besser verständlich. Es zeigen:
  • 1 schematisch einen Client-Knoten, der über ein Kommunikationsnetz an einen Server-Knoten angekoppelt ist, wobei die Client- und Server-Knoten jeweils einen jeweiligen Client- und Server-Agenten aufweisen, der gemäß einer Ausführungsform der vorliegenden Erfindung arbeitet;
  • 2 ein Flußdiagramm auf hoher Ebene der von dem Server-Agent von 1 gemäß einer Ausführungsform der vorliegenden Erfindung durchgeführten Schritte;
  • 3 ein ausführlicheres Flußdiagramm des Diagramms von 2 gemäß einer Ausführungsform der vorliegenden Erfindung;
  • 4 schematisch den Inhalt des flüchtigen und persistenten Speichers von Client und Server, sowie er durch Operationen des Client- und Serveragenten von 1 beeinflußt wird, gemäß einer Ausführungsform der vorliegenden Erfindung;
  • 5 ein Flußdiagramm der unternommenen Schritte zur Minimierung der Menge an zu dem Client übertragenen Daten durch Verwendung von Cache-Techniken unter Beteiligung einer Fuzzy-Datenbank und von Fuzzy-Schlüsseln gemäß einer Ausführungsform der vorliegenden Erfindung;
  • 6 schematisch eine Menge von Prozeduren, mit der durch ein Anwendungsprogramm auf einem Server erzeugte Textinformationen zu einer Anzeige eines fernen Client remotet werden, gemäß einer Ausführungsform der vorliegenden Erfindung;
  • 7A ein Liniendiagramm mehrerer Segmente, die einen bestimmten Weg bilden;
  • 7B eine Repräsentation des Liniendiagramms von 7A auf Pixelebene, die darstellt, wie der Weg auf einer Computeranzeige tatsächlich approximiert wird;
  • 8 ein Flußdiagramm der unternommenen Schritte bei der Verarbeitung und Codierung von Segment- und Streifendaten gemäß einer Ausführungsform der vorliegenden Erfindung;
  • 8B ein Koordinatensystem, das zu einer Menge von 16 Regionen organisiert wird, mit dem Winkelinformationen in bezug auf Streifen quantisiert werden und das die Kompressionseffizienz verbessert, gemäß einer Ausführungsform der vorliegenden Erfindung;
  • 9 eine Überlagerung des Koordinatensystems von 8B auf die Pixelebenenrepräsentation von 7B, um eine Ausführungsform einer Streifenverarbeitungstechnik gemäß der vorliegenden Erfindung darzustellen;
  • 10 eine Tabelle, die darstellt, wie man für Streifen in jedem der quantisierten Segmente von 8B gemäß einer Ausführungsform der vorliegenden Erfindung von dem Endpunkt des vorherigen Streifens zu dem nächsten Streifen gelangt; und
  • 11 ein Flußdiagramm der von dem Server-Agent als Reaktion auf eine Fehlerbedingung, an der die Bildung einer Off-Screen-Oberfläche des Client beteiligt ist, durchgeführten Schritte.
  • AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG
  • Die vorliegende Erfindung verringert die Menge an zwischen einem Anwendungsserver, der ein Anwendungsprogramm ausführt, und einem teilnehmenden Client, der lokal die Ausgangsdaten des Anwendungsprogramms anzeigt, übertragenen graphischen Daten durch Codieren der Daten zu relativ kleinen Repräsentationen, die sich in dem zwischen Client und Server übertragenen Protokollstrom wiederholen. Auf diese Weise minimiert die Erfindung die Größe jedes diskreten Datenelements, das übertragen werden muß, und vergrößert die Wiederholbarkeit der Daten in dem Protokollstrom, so daß Kompressionsalgorithmen, die an sich wiederholenden codierten Daten effizienter arbeiten, einen höheren Grad an Kompressionseffizienz realisieren können. Die Erfindung verwendet mehrere Techniken zur Realisierung dieser verbesserten Komprimierung, darunter die folgenden: Scannen einer Befehlswarteschlange nach später ausgegebenen Befehlen, die früher ausgegebene Befehle ablösen; Platten-Cache-Techniken, die die Komprimierung von Daten, die zuvor während einer Client-Server-Sitzung angetroffen wurden, verbessern; Übertragung relativer Koordinaten unter Verwendung quantisierten Regionen zur Vermeidung des Sendens beider Endpunkte und/oder des Winkels eines assoziierten Streifens; und Manipulation von Off-Screen-Oberflächen zur Verbesserung der Leistungs fähigkeit während der Client-Server-Sitzung. Außerdem verringert die Erfindung die Häufigkeit von Überrollproblemen, die auftreten, wenn eine Leistungsfähigkeitnichtübereinstimmung zwischen einem schnellen Server und einem relativ langsamen Netzwerk oder Client besteht.
  • Mit Bezug auf 1 kommunizieren ein oder mehrere Client-Knoten 110', 110'' (im folgenden wird jeder Client-Knoten oder jede Vielzahl von Client-Knoten allgemein als 110 bezeichnet) mit einem oder mehreren Server-Knoten 150', 150'' (im folgenden wird jeder Server-Knoten oder jede Vielzahl von Server-Knoten allgemein als 150 bezeichnet) über ein Kommunikationsnetz 140. Das Netzwerk 140 kann ein lokales Netzwerk (LAN), ein mittelflächiges Netzwerk (MAN) oder ein großflächiges Netzwerk (WAN), wie zum Beispiel das Internet oder das World Wide Web, sein. Benutzer des Client-Knotens 110 können durch vielfältige Verbindungen mit dem Netzwerk 140 verbunden sein, wie zum Beispiel Standard-Telefonleitungen, LAN- oder WAN-Strecken (z.B. T1, T3, 56 kb, X.25), Breitbandverbindungen (ISDN, Frame Relay, ATM) und drahtlose Verbindungen. Die Verbindungen können mit vielfältigen Kommunikationsprotokollen (z.B. TCP/IP, IPX, SPX, NetBIOS und direkte asynchrone Verbindungen) hergestellt werden. Bei einigen besonders vorteilhaften Ausführungsformen kann das verwendete Protokoll das Protokoll der unabhängigen Datenverarbeitungsarchitektur sein, das von Citrix Systems, Inc. in Fort Lauderdale, Florida, hergestellt wird, oder das Remote Display Protokoll von Microsoft Corporation, Redmond, Washington.
  • Der Client-Knoten 110 kann ein beliebiger PC sein (z.B. 286, 386, 486, Pentium, Pentium II, Macintosh-Computer), ein Windows-gestütztes Terminal, ein Netzwerkcomputer, eine drahtlose Einrichtung, ein Informationsgerät, ein RISC-Power-PC, eine X- Einrichtung, eine Workstation, ein Minicomputer, ein Zentralcomputer oder eine andere Datenverarbeitungseinrichtung mit Desktop auf Fensterbasis und genug Speicher zum Ausführen eines kleinen Anzeigepräsentationsprogramms. Das Anzeigepräsentationsprogramm verwendet Befehle und Daten, die ihm durch den Anwendungs-Server 150 über das Netzwerk 140 gesendet werden, um eine graphische Anzeige wiederzugeben. In einem verteilten Computersystemmodell findet die Ausführung von Anwendungsprogrammen hauptsächlich auf dem Anwendungsserver 150 statt, und die Benutzerschnittstelle, Tastenbetätigungen und Mausbewegungen, die durch Eingaben auf Client-Seite produziert werden, werden über das Netzwerk 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 Dauerspeicher-Speicher 120, eine Netzwerkschnittstelle 122 (z.B. eine Netzwerkschnittstellenkarte), eine Tastatur 124, eine Maus 126 und ein Display 128. Durch den Client-Knoten 110 unterstützte fensterorientierte Plattformen sind zum Beispiel ohne Einschränkung 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 aus dem Server-Knoten 150 und von einem (nicht gezeigten) Benutzer des Client-Knotens 110 empfängt. Der Client-Agent 118 verwendet die empfangenen Informationen bei der Wechselwirkung mit anderen Komponenten des Client-Knotens 110 (z.B. beim Anleiten des Betriebssystems 116, Daten auf dem Display 128 auszugeben). Der Client-Agent 118 sendet außerdem Anforderungen und Daten als Reaktion auf vom Server ausgegebene Befehle oder Benutzeraktionen an dem Client-Knoten 110 zu dem Server-Knoten 150.
  • Ähnlich enthält der Server-Knoten 150 einen Prozessor 152, einen flüchtigen Speicher 154, ein Betriebssystem 156, ein Anwendungsprogramm 158, einen Server-Agent 160, Speicher 162 und eine Netzwerkschnittstelle 164. Der Server-Agent 160 entspricht einem Softwareprogramm, das mit dem Client-Agent 118 und anderen Komponenten des Server-Knotens 150 eine Schnittstelle aufweist, um die Fernanzeige und -operabilität des Anwendungsprogramms 158 zu unterstützen.
  • Jeder Anwendungsserver 150 ist Host für ein oder mehrere Anwendungsprogramme 158, auf die die Client-Knoten 110 zugreifen können. Solche Anwendungen sind zum Beispiel Textverarbeitungsprogramme wie etwa MICROSOFT WORD und Tabellenkalkulationsprogramme wie etwa MICROSOFT EXCEL, wobei beides von der Microsoft Corporation in Redmond, Washington, hergestellt wird, Finanzberichtsprogramme, Kundenregistrationsprogramme, Programme, die technische Support-Informationen liefern, Kundendatenbankanwendungen oder Anwendungssatzmanager.
  • Während der Ausführung des Anwendungsprogramms 158 kommuniziert ein Server 150 über einen Transportmechanismus (Teil des Server-Agenten 160) mit dem Client-Knoten 110. Bei einer Ausführungsform liefert der Transportmechanismus mehrere virtuelle Kanäle, und einer der virtuellen Kanäle liefert ein Protokoll zur Übertragung graphischer Schirmdaten von dem Server-Knoten 150 zu dem Client-Knoten 110. Der Server 150 führt einen Protokolltreiber (Teil des Server-Agenten 160) aus, der graphische Anzeigeschnittstellenbefehle (die durch das Anwendungsprogramm 158 erzeugt und auf das Betriebssystem 156 des Servers abgezielt sind) abfängt, und übersetzt diese in ein Protokollpaket, das für Übertragung über den Transportmechanismus geeignet ist.
  • Bei einer Ausführungsform und mit Bezug auf 2 fängt der Server-Agent 160 einen graphischen Anzeigeschnittstellenbefehl ab (Schritt 202), der durch das Anwendungsprogramm 158 ausgegeben wird und an das Betriebssystem 156 gerichtet ist, codiert mit dem Befehl und dem Anwendungsprogramm 158 assoziierte graphische Daten (Schritt 204), komprimiert die codierten graphischen Daten (Schritt 206), erzeugt ein Transportprotokollpaket, das den abgefangenen Befehl und komprimierte codierte Daten enthält (Schritt 208) und sendet das Transportprotokollpaket zu dem Ziel-Client-Knoten 110 (Schritt 210). Graphische Daten bedeutet eine beliebige Art von Daten, die auf dem Display 128 angezeigt werden kann, wie zum Beispiel Bitmaps, Glyphe, Koordinaten, Liste von Linien, Streifen usw.. Beschreibungen von Techniken, die auf bestimmte Arten graphischer Daten oder graphischer Objekte angewandt werden, können im folgenden als für alle Arten von graphischen Daten geltend betrachtet werden.
  • Genauer gesagt fängt ein Protokolltreiber des Server-Agenten 160 die graphischen Anzeigeschnittstellenbefehle ab (Schritt 202). Bei einer Ausführungsform fängt der Protokolltreiber Anwendungsprogrammierschnittstellenaufrufe hoher Ebene ab, die von dem Anwendungsprogramm 158 getätigt werden. Bei einer Ausführungsform fängt der Protokolltreiber GDI-Befehle ab, die durch Betriebssysteme auf WINDOWS-Basis bereitgestellt werden. Bei einer anderen Ausführungsform fängt der Protokolltreiber QUICKDRAW-Befehle ab, die von Betriebssystemen auf MAC/OS-Basis bereitgestellt werden. Bei weiteren Ausführungsformen fängt der Protokolltreiber Befehle auf niedrigerer Ebene, wie zum Beispiel Schnittstellenaufrufe für den mit dem graphischen Display des Server-Knotens 150 assoziierten Gerätetreiber, ab. Bei weiteren Ausführungsformen kann der graphische Anzeigeschnittstellenbefehl dupliziert statt abgefangen werden. Bei diesen Ausführungsformen ist die Anzeige von Anwendungsprogramm-Ausgangsdaten auf dem Server 150 und dem Client 110 im wesentlichen ähnlich oder sogar identisch. Der Protokolltreiber erzeugt ein Transportprotokollpaket auf der Basis des abgefangenen graphischen Anzeigebefehls (Schritt 208). Der Protokolltreiber kann einen Protokollbefehlssatz verwenden, der einen analogen Befehl für jeden möglichen abgefangenen Anzeigeschnittstellenbefehl enthält. Als Alternative kann der Protokolltreiber einen Befehlssatz verwenden, der eine Teilmenge der abgefangenen Anzeigeschnittstellenbefehle ist. Bei anderen Ausführungsformen kann der Protokollbefehlssatz eine Übermenge der möglichen abgefangenen Anzeigeschnittstellenbefehle sein.
  • Für jeden abgefangenen GDI-Befehl und betroffene graphische Daten, die zu dem Client-Agent 118 gesendet werden müssen, um die Ausgabe des Anwendungsprogramms 158 auf dem Display 128 des Client anzuzeigen, reiht der Server-Agent 160 den betreffenden Protokollbefehl zusammen mit einem eindeutigen Schlüssel 412 (4), der mit den betroffenen graphischen Daten assoziiert ist, in Warteschlangen ein. Der eindeutige Schlüssel 412 beschreibt die graphischen Daten und identifiziert sie eindeutig. Bei einer Ausführungsform wird der eindeutige Schlüssel durch Durchführen einer 64-Bit-CRC (cyclic redundancy check) an den graphischen Daten erzeugt. Bei einer anderen Ausführungsform wird die 64-Bit-CRC als zwei 32-Bit-CRCs erzeugt, die sequenziell und in entgegengesetzten Richtungen an den graphischen Daten durchgeführt werden. Außerdem können andere Verfahren zum Erzeugen eines mit graphischen Daten assoziierten eindeutigen Schlüssels, die Fachleuten bekannt sind, verwendet werden. Der Protokollbefehl und der eindeutige Schlüssel 412 werden zusammen mit anderen Befehls- bzw. eindeutigen Schlüsselsätzen im Server 150 in Warteschlangen eingereiht. Die in Warteschlangen eingereihten Befehle werden dann gescannt, um zu bestimmen, ob später ausgegebene Befehle (d.h. diejenigen in der Nähe des Endes der Warteschlange) früher ausgegebene Befehle (d.h. die näher am Vorderende der Warteschlange) ablösen. Wenn die früher ausgegebenen Befehle abgelöst werden, entfernt der Server-Agent 160 diese aus der Warteschlange und vermeidet somit, daß unnötige Daten zu dem Client-Agent 118 gesendet werden müssen.
  • Zum Beispiel muß eine Reihe von Befehlen zur Anzeige der nächsten Seite von in schneller Abfolge ausgegebenen Daten nicht einzeln am Client 110 angezeigt werden. Es muß lediglich die letzte ausgegebene Anzeigeseite angezeigt werden, da diese letzte Datenseite alle vorherigen Datenseiten überschreibt. Durch Entfernen unnötiger Befehle und eindeutiger Schlüssel, die den früheren Seiten entsprechen, aus der Warteschlange des Servers, verringert der Server-Agent 160 die Menge an Daten, die verarbeitet und übertragen werden muß, wesentlich.
  • Bei einem Ausführungsbeispiel werden nur unnötige Befehle und betreffende Daten in bezug auf opake Operationen aus der Warteschlange des Servers entfernt. Wenn zum Beispiel einem zuvor eingereihten Befehl, bei dem eine rechteckige Region mit Koordinaten 10, 10, 50, 50 erzeugt wird, ein später eingereihter Befehl folgt, bei dem eine größere/abdeckende rechteckige Region mit Koordinaten 0, 0, 100, 100 erzeugt wird, dann werden der zuvor eingereihte Befehl und betreffende Daten als unnötig angesehen und aus der Warteschlange entfernt.
  • Die nachfolgende Tabelle 1 führt einen beispielhaften Satz von Protokollbefehlen auf, die bei einer Ausführungsform der Erfindung bereitgestellt werden.
  • TABELLE 1 –
    Figure 00130001
  • TABELLE 1 – (Forts)
    Figure 00140001
  • TABELLE 1 – (Forts)
    Figure 00150001
  • TABELLE 1 – (Forts)
    Figure 00160001
  • TABELLE 1 – (Forts)
    Figure 00170001
  • Bei einer Ausführungsform werden Protokollbefehle und assoziierte graphische Daten so konfiguriert, daß die Wiederholung von Informationen in dem durch den Protokolltreiber erzeugten Protokollpaketstrom maximiert wird. In einem Aspekt der Erfindung werden die graphischen Daten zuerst codiert (Schritt 204), bevor die codierten graphischen Daten und/oder Protokollbefehle einem Komprimierungsalgorithmus unterzogen werden (Schritt 206), der die sich wiederholende Beschaffenheit des Protokollstroms ausnutzt (z.B. kann ein Lempel-Ziv-Kompressionsprotokoll verwendet werden). Bei einer Ausführungsform und bei dem ersten Fall des Auftretens der graphischen Daten in der Client-Server-Sitzung wird ein Indicia der graphischen Daten zusammen mit den entsprechenden codierten Daten in dem Protokollstrom gesendet, um so die Menge an über das Netzwerk 140 transferierten Daten für zukünftige Fälle des Auftretens der graphischen Daten, die während derselben Client-Server-Sitzung auftreten, zu verringern. Die komprimierten Daten werden danach zu dem Transportprotokollpaket gebündelt und zur Dekomprimierung und Interpretation zu dem Client-Knoten 110 gesendet (Schritt 208).
  • Bei einem Ausführungsbeispiel führt das Anwendungsprogramm 158 einen GDI-Befehl aus, der das Betriebssystem 156 des Servers anweist, eine Bitmap zu zeichnen. Der Server-Agent 160 fängt diesen GDI-Befehl ab (Schritt 202) und gibt einen BITBLT-Befehl an den Client-Agenten 118 aus, der den Client-Agenten 118 anweist, die Ausgangsdaten des Anwendungsprogramms auf dem Display 128 des Client anzuzeigen. Vor dem Ausgeben des BITBLT-Befehls codiert der Server-Agent 160 die Ausgangsdaten (Schritt 204) und fügt die codierten Daten zusammen mit dem BITBLT-Befehl in den zu dem Client-Agenten 118 übertragenen komprimierten Protokollpaketstrom ein. Bei einer Ausführungsform werden die die Bitmap 410 (4) beschreibenden Daten codiert und komprimiert (Schritte 204 und 206), um bestimmte der in der Bitmap 410 vorhandenen Redundanzen auszunutzen. Die Bitmap 410 kann zum Beispiel dergestalt sein, daß sukzessive Rasterzeilen redundant oder benachbarte Pixel redundant sind.
  • Zusätzlich zu der Codierung von Bitmaps oder anderer diskreter graphischer Datenelemente auf der Basis ihrer internen Datenredundanzen umfaßt die Erfindung auch Cache-Techniken, die die Codierung und Komprimierung graphischer Daten, die zuvor während einer bestimmten Client-Server-Sitzung angetroffen wurden, weiter verbessern. Wenn zum Beispiel eine bestimmte Bitmap zum ersten Mal während einer Client-Server-Sitzung angetroffen wird, wird sie wie oben beschrieben codiert. Für nachfolgende Übertragungen der Bitmap während derselben Client-Server-Sitzung können Indicia der Bitmap übertragen werden, anstatt der relativ größeren codierten Bitmap. Bei einer Ausführungsform entsprechen die Indicia einer Speicherstelle in dem flüchtigen Speicher des Client, die die zuvor übertragene Bitmap enthält.
  • Genauer gesagt und mit Bezug auf 3 und 4 erzeugt der Server-Agent 160 wie oben beschrieben den eindeutigen Schlüssel 412 (Schritt 330) und assoziiert den eindeutigen Schlüssel 412 mit den graphischen Daten (z.B. der Bitmap 410). Diese Assoziation definiert im wesentlichen die Bitmap 410 und ihre betreffenden Daten als ein graphisches Objekt, das danach zusammen mit seinem eindeutigen Schlüssel 412 und den codierten Daten 414 in einer Datenstruktur 411 (z.B. einer Tabelle), die in dem flüchtigen Speicher 154 des Servers (z.B. dem Cache-Subsystem des Servers) gespeichert ist, registriert wird (Schritt 340). Bei anderen Ausführungsformen können die bitmapbezogenen Daten in die persistente Speicherung 162 des Servers geschrieben werden.
  • Vorausgesetzt, daß der Protokollbefehl (z.B. BITBLT) und assoziierte graphische Daten nicht durch später ausgegebene Befehle (wie oben beschrieben) abgelöst werden, entfernt der Server-Agent 160 (Schritt 360) den BITBLT-Befehl und den eindeutigen Schlüssel 412 aus der Warteschlange und durchsucht die in dem flüchtigen Speicher 154 des Servers gespeicherte Tabelle 411, um zu bestimmen, ob der eindeutige Schlüssel 412 zuvor darin gespeichert wurde. Wenn der eindeutige Schlüssel 412 in der Tabelle 411 gefunden wird, bestimmt der Server-Agent 160, daß die codierten Daten 414 zuvor durch den Server 150 verarbeitet wurden. Der Server-Agent 160 durchsucht dann die Tabelle 411 nach einem mit der codierten Bitmap 414 assoziierten Index oder Handle 416. Wenn der Index 416 gefunden wird, bestimmt der Server-Agent 160, daß die codierte Bitmap 414 nicht nur durch den Server 150 verarbeitet wurde, sondern daß sie auch zuvor zu dem Client-Agenten 118 übertragen wurde. Wenn der Index 416 nicht in der Tabelle 411 gefunden wird, bestimmt der Server-Agent 160, daß die codierte Bitmap 414 noch nicht zuvor übertragen wurde.
  • Bei einer Ausführungsform identifiziert der Index 416 eine bestimmte Speicherstelle in dem flüchtigen Speicher 114 des Client, die die zuvor übertragene codierte Bitmap 414 speichert. Bei einer Ausführungsform führt der Client-Agent 118 einen Schnappschuß seines verfügbaren flüchtigen Speichers 114 bei Einleitung einer Client-Server-Sitzung mit dem Server-Agenten 160 dem Server-Agenten 160 zu. Nachdem die Sitzung hergestellt ist, steuert der Server-Agent 160 danach die Zuteilung 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 414 zuteilen und den Index 416 als Zeiger oder Referenz auf den zugeteilten Speicher und als Kennung der zuvor übertragenen codierten Bitmap 414 führen.
  • Wenn der Index 416 in der Tabelle 411 des Servers gefunden wird, erhält der Server-Agent 160 den Index 416 (Schritt 370), komprimiert den Index 416 zusammen mit dem betreffenden Protokollbefehl (Schritt 380) und sendet die komprimierten Daten über das Netzwerk 140 in einem an den Client-Agenten 118 gerichteten Paket. Bei einer Ausführungsform ist der Index 416 kürzer (z.B. 16 Bit) als der eindeutige Schlüssel 412 (z.B. 64 Bit) und verbraucht folglich weniger Bandbreite bei der Übertragung. Nach Empfang und Dekomprimierung des komprimierten Pakets greift der Client-Agent 118 auf die bestimmte Speicherstelle in dem flüchtigen Speicher 114 des Client zu, die durch den Index 416 spezifiziert wird, um die entsprechenden graphischen Daten 410 zu erhalten. Der Client-Agent 118 manipuliert danach die erhaltenen graphischen Daten 410 gemäß dem Befehl, der mit dem Index 416 in dem komprimierten Paket einherging. Auf diese Weise vermeidet die Erfindung, daß relativ große Bitmap- oder andere graphische Daten, die bereits zuvor während einer bestimmten Client-Server-Sitzung angetroffen wurden, neu übertragen werden müssen.
  • Wenn sich der Index nicht in der Tabelle 411 des Servers befindet (und somit nicht zuvor zu dem Client-Agenten 118 gesendet wurde), teilt der Server-Agent 160 einen Teil des flüchtigen Speichers 114 des Client für die Bitmap 410 zu und bildet den Index 416, der die Speicherstelle identifiziert. Der Server-Agent 160 speichert dann die codierte Bitmap 414 (die der Bitmap 410 entspricht), den neugebildeten Index 416 und den eindeutigen Schlüssel 412, der mit der codierten Bitmap 414 assoziiert ist, in der Tabelle 411 des Servers. Der Server-Agent 160 komprimiert danach die codierte Bitmap 414, den Index 416 und den betreffenden Befehl und sendet die komprimierten Daten in einem an den Client-Agenten 118 gerichteten Paket. Nach Empfang und Dekomprimierung decodiert der Client-Agent 118 die codierten Daten 414 und speichert die resultierende Bitmap 410 in der durch den Index 416 identifizierten Speicherstelle und manipuliert die resultierende Bitmap 410 gemäß dem einhergehenden Befehl. Als Alternative speichert der Client-Agent 118 die codierten Daten 414 in der durch den Index 416 identifizierten Speicherstelle und decodiert die codierten Daten 414 nur dann, wenn es notwendig ist, um die resultierende Bitmap 410 weiter zu manipulieren. Auf diese Weise wird der Client-Speicher effizienter genutzt.
  • Obwohl die Erfindung bisher so beschrieben wurde, daß der Server-Agent 160 die Speicherzuteilung und Indexbildung des Client steuert, ist es auch möglich, daß der Client-Agent 118 diese Funktionen durchführt. Wenn zum Beispiel eine Bitmap zum ersten Mal während einer Client-Server-Sitzung angetroffen und codiert, komprimiert und zu dem Client-Agenten 118 übertragen wird (mit dem einhergehenden Befehl, aber ohne den Index 416), kann der Client-Agent 118 die bestimmte Speicherstelle in seinem flüchtigen Speicher 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 sendet den Index zu dem Server-Agenten 160, der den Index in der entsprechenden Speicherstelle in der Tabelle 411 des Servers speichert.
  • Weiter mit Bezug auf die Ausführungsform, bei der der Server-Agent 160 die Zuteilung des flüchtigen Speichers 114 des Client steuert, führt der Client-Agent 118 eine kreisförmige Warteschlange 421 aller durch den Server-Agenten 160 spezifizierten Indizes gemäß Warteschlangenwartungsanweisungen, die ebenfalls von diesem empfangen werden. Zum Beispiel kann der Server-Agent 160 den Client-Agenten 118 anleiten, einen vorbestimmten Block Indizes 417 (z.B. entsprechend 128 K Speicher) von ihren jeweiligen graphischen Daten zu disassoziieren, um neuangetroffene graphische Objekte unterzubringen, wenn der flüchtige Speicher 114 des Client ansonsten voll belegt ist. Folglich erhält ein nachfolgendes neues graphisches Objekt einen zuvor benutzten Index.
  • Der Server-Agent 160 bestimmt außerdem gemäß vorbestimmten Kriterien, ob jedes durch die Umzuweisung der Indizes betroffene graphische Objekt ausgeräumt oder gesichert werden soll. Der Server-Agent 160 übermittelt diese Entscheidung zu dem Client-Agenten 118. Wenn zum Beispiel der Server-Agent 160 die Indizes 0, 1, 2 und 3 neu zuweist und bestimmt, daß die mit den Handles 0 und 2 assoziierten graphischen Objekte gelöscht oder in die persistente Speicherung 120 des Client verschoben werden sollen, und die mit den Handles 1 und 3 assoziierten Objekte gesichert werden sollen, weist der Server-Agent 160 somit den Client-Agenten 118 an, 0 und 2 zu löschen (oder zu verschieben) und 1 und 3 zu sichern. Der Client-Agent 118 verschiebt den Index jedes gesicherten Objekts dann zu dem Ende der kreisförmigen Warteschlange. Mindestens ein Index bleibt am Warteschlangenende für die Zuweisung zu dem verschobenen Objekt verfügbar; d.h., bei einer Ausführungsform zeigen Kopf und Ende der Warteschlangen nicht auf denselben Index in der kreisförmigen Warteschlange. Ein verschobenes Objekt wird folglich sowohl an einer anderen physischen Speicherstelle gespeichert als auch mit einem anderen Index assoziiert.
  • Die an der kreisförmigen Warteschlange 421 des Client ausgeführten Wartungsaktionen werden in der Regel häufiger mit andauernder Client-Server-Sitzung, und der begrenzte flüchtige Speicher 114 des Client 110 wird voll von zuvor übertragenen Bitmaps 410 oder anderen graphischen Objekten. Die Anzahl der zuvor übertragenen graphischen Objekte 422, die aus dem flüchtigen Speicher 114 in die persistente Speicherung 120 des Client verschoben werden, nimmt also zu. Die vorliegende Erfindung erweitert die oben beschriebene Cache-Technik weiter, um nach Indicia (siehe "Fuzzy-Schlüssel" unten) zuvor übertragener graphischer Objekte 422 zu suchen, die in der persistenten Speicherung 120 des Client gespeichert sein können, wenn kein Index auf dieses graphische Objekt 422 in der Tabelle 411 des Servers gefunden wird. Wenn ein solches Indicia gefunden wird, besteht eine große Wahrscheinlichkeit, daß das zuvor übertragene graphische Objekt 422 immer noch lokal verankert und dem Client-Agent 118 zugänglich ist und daß das graphische Objekt 422 deshalb möglicherweise nicht neu aus dem Server-Agenten 150 zu dem Client-Agenten 110 übertragen werden muß. Es ist wichtig, zu beachten, daß das Finden solcher Indicias eine große Wahrscheinlichkeit, aber keine Bestimmtheit, ergibt, daß das graphische Objekt 422 lokal verankert ist, weil möglicherweise andere Programme oder Client-Agenten, die gemeinsam dieselbe persistente Speicherung 120 benutzen können, das graphische Objekt 422 aus der persistenten Speicherung 120 gelöscht haben (z.B. um Platz in der persistenten Speicherung für ein neues Objekt zu schaffen).
  • Genauer gesagt und mit Bezug auf 4 und 5 durchsucht der Server-Agent 118, wenn der Server-Agent 160 keinen Index für eine bestimmte Bitmap 422 in der Indextabelle 411 des Servers finden kann, eine zweite Tabelle 418 (im folgenden "Fuzzy-Datenbank") nach einem Eintrag 419 (im folgenden "Fuzzy-Schlüssel"), der mit der Bitmap 422 assoziiert ist (Schritt 520). Bei einer Ausführungsform ist jeder Fuzzy-Schlüssel 419 eine Kombination des eindeutigen Schlüssels 412 in der Tabelle 411 des Servers und der Länge/Größe der assoziierten Bitmap 422. Der Fuzzy-Schlüssel kann zum Beispiel über ein XOR (exklusiv-OR) beider zur Berechnung des eindeutigen 64-Bit-Schlüssels 412 in der Tabelle 411 des Servers verwendeter 32-Bit-CRCs und der Länge der Bitmap 422, die mit dem eindeutigen Schlüssel 412 assoziiert ist, gebildet werden. Die Fuzzy-Datenbank 418 liefert im wesentlichen eine Anfangsvorhersage, ob in der persistenten Speicherung 120 des Client 110 eine Kopie der Bitmap 422 gespeichert ist. Wenn die Fuzzy-Datenbank 418 den mit der Bitmap 422 assoziierten Fuzzy-Schlüssel 419 nicht enthält, ist wahrscheinlich keine Kopie der Bitmap 422 in der persistenten Speicherung 120 des Client gespeichert und der Server-Agent 160 muß deshalb eine codierte Version der Bitmap 422 wie zuvor beschrieben zu dem Client-Agenten 118 senden. Wenn die Fuzzy-Datenbank 418 dagegen den Fuzzy-Schlüssel 419 für die Bitmap 422 enthält, besteht eine große Wahrscheinlichkeit, daß die Bitmap 422 in der persistenten Speicherung 120 des Client gespeichert ist.
  • Wenn der Server-Agent 160 keinen Fuzzy-Schlüssel 419 in der Fuzzy-Datenbank 418 findet, der mit der Bitmap 422 assoziiert ist, sendet der Server-Agent 160 genauer gesagt eine codierte Bitmap (entsprechend der Bitmap 422) zu dem Client-Agenten 118 mit einem Befehl, der von dem Client-Agenten 118 anfordert, die Bitmap 422 (oder die entsprechende codierte Bitmap) in dem flüchtigen Speicher 114 zu speichern (Schritt 530). Außerdem und wie oben beschrieben fügt der Server-Agent 160 den mit der Bitmap 422 assoziierten Fuzzy-Schlüssel 419 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 in eine bestimmte Speicherstelle in dem flüchtigen Speicher 114 des Client, wie durch den Server-Agenten 160 spezifiziert (Schritt 560).
  • Bei einer Ausführungsform wartet der Server-Agent 160 nicht auf eine Bestätigung von dem Client-Agenten 118, daß die mit der Bitmap 422 assoziierte codierte Bitmap erfolgreich empfangen und verarbeitet wurde. Stattdessen nimmt der Server-Agent 160 an, daß die codierte Bitmap ordnungsgemäß verarbeitet wurde, und streamt weiter Protokollbefehle, ohne auf die Rückkehr einer Bestätigungsnachricht von dem Client-Agenten 118 zu warten. Der Server-Agent 160 verfolgt jedoch die Anzahl der seit der letzten gelesenen Bestätigung ausgegebenen Protokollbefehle. Der Server-Agent 160 blockiert die weitere Übertragung von Protokollbefehlen, wenn die Anzahl eine vordefinierte Schwelle erreicht. Die Schwelle ermöglicht es dem Client-Agenten 118, eine obere Schranke für die Menge an Speicher festzulegen, die notwendig ist, um ankommende Protokollbefehle während des Betriebs im Recovery-Modus in Warteschlangen einzureihen, wie später ausführlicher beschrieben wird.
  • Wenn ein Fuzzy-Schlüssel 419 in der Fuzzy-Datenbank 420 gefunden wird, sendet der Server-Agent 160 einen Befehl zu dem Client 110, der den Client-Agenten 118 anweist, die mit dem Fuzzy-Schlüssel 419 assoziierte Bitmap 422 aus der persistenten Speicherung 120 des Client in den flüchtigen Speicher 114 des Client zu kopieren (Schritt 550). Mit diesem Befehl geht nicht nur der Fuzzy-Schlüssel 419 einher, der die interessierende Bitmap 422 eindeutig identifiziert, sondern auch der assoziierte Index, der durch den Server-Agenten 160 (wie zuvor beschrieben) erzeugt wird, um die spezifische Speicherstelle in dem flüchtigen Speicher 114 des Client zu identifizieren, die die kopierte Bitmap 422 empfangen und speichern wird. Durch Kopieren der Bitmap 422 in den flüchtigen Speicher 114, statt einfach nur ihre Speicherstelle in der persistenten Speicherung 120 zu behalten, kann die Erfindung schnell auf mehrere Anforderungen, die Bitmap 422 zu zeichnen, die in schneller Abfolge oder ohne viel dazwischentretende Cache-Aktivität empfangen werden, reagieren, indem die Bitmap 422 beim Auftreten der ersten Anforderung kopiert wird.
  • Wenn die Bitmap 422 trotz der Anwesenheit des entsprechenden Fuzzy-Schlüssels 419 in der Fuzzy-Datenbank 418 gerade nicht in der persistenten Speicherung 120 gespeichert ist, gibt der Client-Agent 118 (als Reaktion auf den zuvor von dem Server-Agenten 160 ausgegebenen "CACHE_READ_DISK_OBJEKT"-Befehl) eine Nachricht an den Server-Agenten 160 zurück, die anzeigt, daß die Bitmap 422 fehlt. Nach Empfang dieser Nachricht sendet der Server-Agent 160 die mit der Bitmap 422 assoziierten codierten Bitmapdaten neu zu dem Client-Agenten 118 (Schritt 530). Man beachte, daß der Server-Agent 160 eine sequenzielle Liste aller solchen CACHE_READ_DISK_OBJEKT-Befehle führt, die zu dem Client-Agenten 118 gesendet werden, für die der Server-Agent 160 noch keine Bestätigung empfangen hat, so daß der Server-Agent 160 eine empfangene Bestätigung ordnungsgemäß mit einer bestimmten Bitmap 422 assoziieren kann (um so die codierte Bitmap, die übertragen werden muß, ordnungsgemäß zu identifizieren).
  • In der Zwischenzeit tritt der Client-Agent 118 in einen Recovery-Modus ein, in dem der Client-Agent 118 weiter den ankommenden Protokollstrom liest, ihn aber nicht verarbeitet. Stattdessen konstruiert der Client-Agent 118 eine Warteschlange zum Empfangen des Stroms der Befehle, die nach dem Befehl, der die Bitmap 422 nicht in der persistenten Speicherung 120 finden konnte, weiter aus dem Server 150 fließen. Der Client-Agent 118 speichert diese Befehle weiter in dieser Warteschlange im FIFO-Verfahren (first in, first out), bis die codierte Bitmap empfangen und erfolgreich decodiert wurde, um die Bitmap 422 zu erzeugen. Um die fehlende Bitmap 422 in dem ankommenden Befehlsstrom zu erkennen, schaut der Client-Agent 118 nach graphischen Daten, die eine Recovery-Markierung in dem Protokollstrom begleiten. Bei einer Ausführungsform ist die Recovery-Markierung eine bestimmte Pseudozufallszahl, die mit dem eindeutigen Schlüssel der Bitmap 422 (d.h. der 64-Bit-CRC und 32-Bit-Länge) XOR-verknüpft wird. Der Server-Agent 160 erzeugt nach Empfang einer Nicht-Bestätigungs-Nachricht von dem Client-Agenten 118 die Recovery-Markierung. Wenn die Bitmap 422 ankommt, speichert der Client-Agent 118 sie in seinem flüchtigen Speicher 114 (Schritt 560) (d.h. worin die Bitmap 422 gespeichert worden wäre, wenn das Objekt anfänglich in der persistenten Speicherung 120 anwesend gewesen wäre) 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, der über das Netzwerk 140 von dem Server 150 ankommt, wieder auf.
  • Ein Vorteil des oben beschriebenen Recovery-Prozesses besteht darin, daß er die Zeitverzögerungskosten vermeidet, die in Cache-Systemen auftreten, die die Befehle in der Pipeline beim Auftreten einer Cache-Verfehlung flushen. Außerdem verursacht der Recovery-Prozeß keine Unterbrechung des Protokollbefehlsstroms und auch keine Zunahme des Verkehrs auf dem Kanal um mehr als einige wenige Byte mehr als der Server 150 zu dem Client 110 gesendet hätte, wenn der Server-Agent 160 zu Anfang gewußt hätte, daß die Bitmap 422 nicht in der persistenten Speicherung 120 vorlag.
  • Bei einer Ausführungsform ermöglicht 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 gebildet wird, indem der Fuzzy-Schlüssel 419 zusammen mit den mit der Bitmap 422 assoziierten vor längster Zeit benutzten und/oder am wenigsten häufig benutzten Informationen codiert wird. Auf diese Weise liefert der Dateiname selbst die gewünschten Informationen und vermeidet somit, die Datei öffnen und lesen zu müssen. Die Codierung des Fuzzy-Schlüssels 419 als Teil des Dateinamen der Bitmap ermöglicht es dem Client-Agent 118 außerdem, schnell die Fuzzy-Schlüssel-Informationen aus dem Dateinamen zu extrahieren und sie während eines anfänglichen Bootens des Client 110 oder am Anfang der Client/Server-Sitzung zu dem Server-Agenten 160 zu senden. Die extrahierten Fuzzy-Schlüssel können in einer Reihenfolge zu dem Server 150 übertragen werden, die zum Beispiel auf den vor längster Zeit benutzten und/oder am wenigsten häufig benutzten Informationen basiert, die auch 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. Erstens sendet beim Herauffahren des Client-Agenten 118 oder bei der Herstellung einer Client-Server-Sitzung mit dem Server-Agenten 160 der Client-Agent 118 Befehle zu dem Server-Agenten 160, um einen Fuzzy-Schlüssel 419 für jede entsprechende Bitmap 422 in der persistenten Speicherung 120 des Client zu der Fuzzy-Datenbank 418 hinzuzufügen (die Fuzzy-Schlüssel kommen zusammen mit den Befehlen des Client-Agenten). Der Client-Agent 118 kann eine Sendeliste führen, die eine Reihenfolge (z.B. auf der Basis der aus vorherigen Client-Server-Sitzungen bestimmten zuletzt benutzten oder am häufigsten benutzten Informationen) für das Senden von Fuzzy-Schlüsseln beim Herauffahren zu dem Server 150 spezifiziert. Die Sendeliste kann durch den Client-Agenten 118 beim Lesen des Verzeichnisses seiner persistenten Speicherung 120 und beim Führen einer Repräsentation des Verzeichnisses in dem flüchtigen Speicher 114 gebildet werden. In einem Aspekt der Erfindung extrahiert der Client-Agent 118 Fuzzy-Schlüsselinformationen aus dem Dateinamen der Datei, die die Bitmap 422 enthält, wenn die Repräsentation des Verzeichnisses erstellt wird. Zweitens fragt der Client-Agent 118 in vorbestimmten Abfrageintervallen seine persistente Speicherung 120 ab, um die Bitmaps zu bestimmen, die sich gerade in seiner persistenten Speicherung 120 befinden (z.B. durch Suchen nach Dateinamen, die eine Fuzzy-Schlüssel-artige Struktur enthalten) und sendet je nachdem, wie es notwendig ist, um die Fuzzy-Datenbank 418 des Servers zu aktualisieren, Hinzufüge- und/oder Löschbefehle zu dem Server-Agenten 160. Wenn der Server-Agent 160 einen Befehl zu dem Client-Agenten 118 zum Schreiben einer Bitmap in die persistente Speicherung 120 des Client sendet, erzeugt der Server-Agent 160 drittens einen entsprechenden Fuzzy-Schlüssel 419 und speichert ihn in der Fuzzy-Datenbank 418.
  • Die Übertragung von Bitmap-Daten aus dem Server 150 zu dem Client 110 kann einen relativ großen Zeitraum in Anspruch nehmen, insbesondere wenn die Netzwerkverbindung zwischen Client und Server relativ langsam ist. Bei einer Ausführungsform paßt die Erfindung die Funktionsweise des Servers an sich ändernde Netzwerkbedingungen an, indem die relative Geschwindigkeit des Netzwerks 140 bestimmt wird. Indem zum Beispiel dynamisch die Bandbreite des Netzwerks 140 bewertet wird, kann der Server-Agent 160 die Codierungs- und Komprimierungstechniken modifizieren, mit denen Bitmap-Daten verarbeitet werden, um Bandbreitenanforderungen zu verringern, wenn über ein langsames Netzwerk ü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 Leistungsfähigkeit des Netzwerks 140 zu bestimmen. Wenn die Übertragungszeit einen Schwellenwert überschreitet, kann der Client-Agent 118 jegliche Bitmap-Daten, die bereits in seinem Cache 114 gespeichert wurden, entnehmen und die übrigen Teile der Bitmap-Daten entweder in Echtzeit, während sie in dem Cache 114 empfangen werden, oder in vorbestimmten Intervallen anzeigen. Auf diese Weise erkennt eine Benutzer des Client, daß der Client 110 immer noch an den Bitmapdaten operiert, und kann sehen, daß sich der Client 110 nicht in einem hängengebliebenen oder ausgefallenen bzw. Fehlerzustand befindet. Durch Approximieren der effektiven Netzwerkbandbreite zu dem Client 110 und entsprechendes Anpassen des Verhaltens des Servers 150 kann der Server-Agent 160 zum Beispiel den Client-Agenten 118 anweisen, eine gesamte Bitmap zu benutzen, gegenüber der Verwendung eines Ganzspaltenmodus der Anzeige für eine bestimmte Bitmap.
  • Genauer gesagt sendet der Server-Agent 160 einen Start_StopWatch-Befehl, dem codierte Bitmapdaten 414 und ein Stop_StopWatch-Befehl folgen, zu dem Client-Agenten 118. Der Client-Agent 118 reagiert auf den Start_StopWatch-Befehl, indem er den aktuellen Zeittick liest und ihn in ein erstes Arrayelement schreibt. Nachdem die codierte Bitmap 414 empfangen wurde, reagiert der Client-Agent 118 auf den Stop_StopWatch-Befehl, indem er den aktuellen Zeittick liest und ihn in ein zweites Arrayelement schreibt. Ein Vergleich der Zeittickdifferenz zwischen den Befehlen Start_StopWatch und Stop_StopWatch liefert eine Schätzung der Zeit, die damit verbracht wurde, die codierten Bitmapdaten zu empfangen. Die resultierende Zeitdifferenz wird dann zu dem Server-Agenten 160 zurückgesendet. Diese Prozedur kann wiederholt werden, um einen geglätteten gleitenden Mittelwert zu berechnen, aus dem eine vernünftige Schätzung des effektiven Durchsatzes der codierten Bitmapdaten bestimmt werden kann. Die Erfindung verwendet diese Durchsatzschätzung im Hinblick auf die Größe der codierten Daten für eine bestimmte Bitmap, um zu entscheiden, ob der Ganzbitmapmodus (z.B. wenn es wahrscheinlich weniger als 5 Sekunden in Anspruch nehmen wird) oder progressive Ganzspalten (z.B. wenn es wahrscheinlich mehr als 5 Sekunden dauern wird) benutzt werden soll. Man beachte, daß, obwohl diese Prozedur nicht zu einer 100% genauen Durchsatzschätzung führt, sie genug Granularität ergibt, um schnelle oder langsame Netzwerkverbindungen zu erkennen, aus denen verschiedene Anzeigemodi bestimmt werden können. Mit einer ähnlichen Technik kann man große Schirm-zu-Schirm-Kopien am Client-Ende timen und eine ähnliche gleitende Mittelwertschätzung der Leistungsfähigkeit des Client während dieser Operationen aufbauen, womit dem man dann einen Produzenten-Thread auf dem Server 150 verlangsamen und einen Überlauf an der Quelle verhindern kann, wenn der Server 150 Daten schneller erzeugt, als der Client 110 sie bearbeiten kann.
  • Bei einer Ausführungsform bildet die Erfindung Objekte, die groß genug sind, um die Daten einer gesamten Cache-Spalte zu enthalten. Zum Beispiel kann der Server-Agent 160 die maximale Objektgröße und die Größe des Cache beim Herauffahren der Client/Server-Sitzung als Funktion der Größe des Verbindungsfensters und seiner Farbtiefe wählen, wobei den größeren Schirmen und Tiefen größere Größen zugeteilt werden. Ferner können derzeitige Techniken zum Zerlegen einer Bitmap in Spalten zu Spalten von weniger als Standardbreite an einem oder beiden Enden der Bitmap führen. Wenn diese nicht dem Standard entsprechenden Spalten zu schmal sind, sind sie möglicherweise nicht groß genug, um in der persistenten Speicherung 120 des Client behalten zu werden und sind somit während nachfolgenden Client/Server-Sitzungen in dem Client 110 nicht vorhanden. Die Erfindung vermeidet dieses Problem durch Zusammenführen der schmalen Spalten mit benachbarten Spalten, so daß nur breite Spalten verwendet werden und somit alle Teile zum Beispiel eines Splash-Schirms in der persistenten Speicherung 120 enthalten sein werden.
  • Bei einer Ausführungsform werden ganze Spalten dann in zwei Phasen angezeigt. Die erste Phase bereitet den Cache 114 mit etwaigen fehlenden Daten vor und die zweite Phase entnimmt die Spalte aus dem Cache 114, wobei möglicherweise mehr als ein Cache-gespeichertes Objekt verwendet wird. Die Spalte wird deshalb auf atomische Weise auf dem Anzeigeschirm 128 angezeigt. Wie bereits besprochen können, wenn die Netzwerkverbindung langsam ist, die Spalten einzeln atomisch angezeigt werden, um dem Benutzer an dem Client 110 zu versichern, daß das System noch arbeitet. Als Alternative kann die gesamte Bitmap atomisch unter Verwendung einer ähnlichen Technik angezeigt werden, wenn eine schnelle Netzwerkverbindung erkannt wird.
  • Die oben besprochene Technik der Schätzung des gleitenden Mittelwerts kann auch zur Abschwächung von seit langem existierenden Überrollproblemen in einer Anwendung benutzt werden, die auf einem schnellen Server ausgeführt und auf einem relativ langsamen Client angezeigt wird. Das Überrollproblem entsteht zum Beispiel, wenn ein Benutzer des Client 110 mehrere Rollbefehle einleitet, wie zum Beispiel durch mehrmaliges Anklicken des Rollbalkens (oder Ziehen des Rollbalkens) mit einer Maus 126. Während die Rollbefehle zu dem schnellen Server gesendet werden, führt der Server 150 die Rolloperationen aus und gibt die assoziierten Daten schneller zurück, als der langsame Client 110 (oder das langsame Netzwerk 140) die Ergebnisse auf seinem Anzeigeschirm 128 anzeigt. Wenn der Benutzer an dem Client 110 letztendlich die gewünschte Schirmposition sieht und mit dem Rollen aufhören möchte (durch Stoppen der Mausklicke und/oder des Ziehens des Rollbalkens), rollt die Anzeige folglich weiter über die gewünschte Schirmposition hinaus. Diese Überrollbedingung tritt auf, weil der schnelle Server 150 bereits die Rollbefehle verarbeitet und die entsprechenden Daten zu dem Client 110 zurückgesendet hat, aber die Daten in dem langsamen Client in Warteschlangen eingereiht und noch nicht vollständig verarbeitet wurden.
  • Die Erfindung schwächt dieses Überrollproblem ab, indem seine Häufigkeit verringert wird. Genauer gesagt mißt die Erfindung periodisch die Zeit gewählter Rollereignisse in dem Server 150 (durch Rollen des Rahmenpuffers) und in dem Client 110 (über die oben besprochenen StopWatch-Befehle), um eine gleitende Mittelwertschätzung ihrer jeweiligen Geschwindigkeiten zu berechnen. Auf diese Weise schätzt der Server-Agent 160, wie lange ein bestimmtes Rollereignis dauern wird (Geschwindigkeit mal Anzahl beteiligter Pixel), um in dem Server 150 verarbeitet zu werden, und wie lange erwartet wird, daß der Client 110 braucht, und wenn die erwartete Verarbeitungszeit in dem Client 110 größer als die des Servers 150 ist, wird die Serververarbeitung um die entsprechende Zeitdifferenz suspendiert, um so Client 110 und Server 150 im wesentlichen im Gleichschritt zu halten. Dieser Ansatz führt zu viel weniger Überrollereignissen aufgrund der Zeitverzögerung zwischen Client 110 und Server 150 im Vergleich zu der Anzahl von Überrollereignissen, wenn dieser Ansatz nicht implementiert wird.
  • Zusätzlich zu dem Manipulieren von Bitmapdaten kann die vorliegende Erfindung auch eine auf dem Server 150 erzeugte Textzeichenkette zu der Anzeige 128 des fernen Client 110 remoten. Mit Bezug auf 6 führt der Server 150 das Anwendungsprogramm 158 aus, das eine Textzeichenkette erzeugt, die zu dem Client 110 geremotet werden muß. Der Server-Agent 160 fängt die aus dem Anwendungsprogramm 158 zu dem Serverbetriebssystem 156 gesendeten Befehle ab, die die Textzeichenkette betreffen und bewirkt, daß ein Anzeigetreiber 612 des Server-Agenten 160 die textbezogenen Informationen verarbeitet und eine Reihe von Protokollbefehlen 614 zur Anzeige einer Textzeichenkette 416 auf dem Display 128 des Client zu dem Client-Agenten 118 sendet. Zum Beispiel führt die Anwendung 158 Prozeduraufrufe durch, die Textfarbe und Hintergrundfarbe setzen (hier "Hello!"). Die Ausführung der TextOut-Prozedur 618 durch die Anwendung 158 triggert die Ausführung der DrvTextOut-Prozedur 620 des Anzeigetreibers 612. Wie gezeigt, definiert die DrvTextOut-Prozedur 620 die Clip-Region, das Grenzrechteck und den Textmodus (einschließlich Hintergrund- und Textfarbe) durch Ausführen einer Sequenz entsprechender Prozeduren.
  • Die Ausführung solcher Prozeduren bewirkt, daß der Anzeigetreiber 612 die entsprechenden Daten und Protokollbefehle (wie zum Beispiel eine Teilmenge der in der Tabelle 1 angegebenen) zu dem Client-Agenten 118 sendet. Die Protokollbefehle werden durch den Client-Agenten 118 empfangen und verarbeitet, der Prozeduren 614 ausführt, die die Clip-Region, das Grenzrechteck, den Textmodus und das mit jedem anzuzeigenden Textzeichen assoziierte Glyph spezifizieren. Man beachte, daß das mit einem Glyph-Objekt assoziierte Protokoll nicht nur die Glyph-Bitmap selbst codiert, sondern auch seine relativen Positionierungsinformationen. Der Server 150 kann außerdem andere Protokollbefehle zu dem Client-Agenten 118 senden, die den Client-Agenten 118 anweisen, die assoziierten Glyphe wie zuvor beschrieben in dem flüchtigen Speicher 114 und/oder in der persistenten Speicherung 120 zu speichern. Der Client-Agent 118 erzeugt eine Bitmap entsprechend der Größe des Grenzrechtecks, das die Textzeichenkette umgibt, und setzt die relativen Positionen jedes Glyphs an seiner richtigen Position in dem Grenzrechteck. Nachdem das letzte Glyph empfangen und seine Position gesetzt wurde, weist der Client-Agent 118 das Client-Betriebssystem 116 an, die Bitmap auf dem Anzeigeschirm 128 des Client 110 zu zeichnen bzw. wiederzugeben.
  • Die vorliegende Erfindung unterstützt außerdem mehrere verschiedene Beschreibungen von Wegen (einer Menge von Linien oder Kurven, die als Teil der Beschreibung einer Linienzeichnungsoperation oder im Fall eines geschlossenen Weges zur Beschreibung einer Region verwendet wird), einschließlich Ellipsen, Beziers, Segmente, Streifen und Stile. Segmente bedeuten Liniensegmente, die bei Kombination einen Weg bilden. Ähnlich können Segmente weiter zu Streifen analysiert werden, die Teile des Liniensegments (entsprechend einer Reihe aufeinanderfolgender Pixel) sind, die dieselben Winkeleigenschaften aufweisen. Die zum Repräsentieren von -Streifen verwendete Codierungstechnik verwendet zum Beispiel relative Positionsinformationen und quantisierte Winkel zur Charakterisierung aufeinanderfolgender Streifen in bestimmten Liniensegmenten, wodurch nicht nur die Menge an zu codierenden graphischen Liniendaten minimiert wird, sondern auch eine besser wiederholbare Sequenz von Daten entsteht, die effizienter komprimiert werden kann. Die Zunahme der Wiederholbarkeit wird besonders verstärkt, wenn Streifen repräsentiert werden, die eine Form wie zum Beispiel ein Rechteck oder einen Kreis bilden. Das für Streifen verwendete Protokoll ermöglicht es außerdem dem Client-Agenten 118, einen Weg unabhängig und ohne Kenntnis des vom Server-Agenten 160 zum Umsetzen des Weges in eine Sequenz von Pixeln verwendeten Algorithmus genau zu reproduzieren.
  • Mit Bezug auf das nicht einschränkende Beispiel in 7A umfaßt ein Weg 700 zwei Liniensegmente 710, 720, die scheinbar perfekt linear sind. Für Fachleute ist jedoch erkennbar, daß Liniensegmente, die nicht perfekt horizontal, vertikal oder in einem Winkel von 45 Grad diagonal sind, durch eine entsprechende Reihe von Streifen approximiert werden müssen, wenn der Weg 700 auf einem Anzeigeschirm 128 angezeigt wird (1). Diese Approximation ist notwendig, weil die einzelnen Pixel auf dem Anzeigeschirm 128 von höchstens acht anderen Pixeln umgeben werden, die entweder perfekt horizontal, vertikal oder in einem Winkel von 45 Grad diagonal zueinander liegen, und somit müssen jegliche Liniensegmente 710, 720, die in einem anderen Gesamtwinkel liegen, durch eine Reihe von Streifen approximiert werden. Folglich und mit Bezug auf den Beispielweg 700 von 7B besteht das Segment 710 aus vier Streifen 712, 714, 716, 718, wobei die einzelnen Pixel (durch Quadratblöcke abgebildet) jedes Streifens 712, 714, 716, 718 in 45 Grad-Diagonalen relativ zueinander organisiert sind, und das Segment 720 besteht aus fünf Streifen 722, 724, 726, 728, 730, wobei die einzelnen Pixel jedes Streifens 722, 724, 726, 728, 730 relativ zueinander horizontal organisiert sind.
  • Bei einer Ausführungsform und mit Bezug auf 7B und 8A analysiert der Server-Agent 160 den Weg 700 zu Liniensegmenten 710, 720 jeweils mit einer bestimmten Länge und einem bestimmten Winkel (Schritt 810). Dann wird ein Array von Liniensegmenten gebildet, um quantisierte Segmentinformationen (die im folgenden als quantisierter Winkel oder "QA" bezeichnet werden) für jedes Liniensegment 710, 720 zu speichern (Schritt 820). Auch mit Bezug auf 8B bestimmt der Server-Agent 160, statt den mit einem bestimmten Segment 710, 720 assoziierten Absolutwinkel zu berechnen, stattdessen, in welchem der sechzehn quantisierten Winkel 880 der Absolutwinkel liegt. Diese Quantisierungstechnik bestimmt, in welchen sechzehn der Umrandung der Endpunkt für ein in der Mitte eines Kreises beginnendes Liniensegment (ein Radius) liegt. Diese Informationen können als das vorzeichenlose Delta aus dem letzten in diesem Kontext spezifizierten Segment ausgedrückt werden (mod 16, initialisiert auf 0). Diese Technik führt zu einer besser wiederholbaren Sequenz (als bei Verwendung des Absolutwinkels), insbesondere, wenn die Segmente eine Form wie etwa ein Rechteck oder einen Kreis bilden.
  • Der Server-Agent 160 analysiert jedes Liniensegment 710, 720 dann zu Streifen (712, 714, 716, 718 bzw. 722, 724, 726, 728, 730) (Schritt 830). Die Länge jedes Streifens eines bestimmten Segments 710, 720 wird danach zur weiteren Verarbeitung in einem Streifenlängenarray gespeichert (Schritt 840). Bei einer Ausführungsform wird der Algorithmus bLine von Windows NT verwendet, um den Weg 700 in ein Array von Streifen zu zerlegen. Der NT-Algorithmus bestimmt den quantisierten Winkel jedes Streifens und Segments dergestalt, daß mit Segmenten oder Streifen, die auf einer Grenze zwischen quantisierten Winkelregionen liegen, keine Mehrdeutigkeit assoziiert ist. Der NT-Algorithmus schlägt eine nach oben gehende Linie vertikal so um, daß die Linie immer nach unten geht (der y-Wert nimmt immer weiter zu) und setzt das Flag FL_FLIP_V. Ähnlich wird eine nach links gehende Linie so horizontal umgeschlagen, daß sie immer nach rechts geht (der x-Wert nimmt immer weiter zu) und setzt das Flag FL_FLIP_H. Folglich fällt das von diesem Algorithmus ausgegebene Array von Streifen in einen einzigen Quadranten. Bei dieser konkreten Ausführungsform macht der Server-Agent 160 die Umschlageoperation des NT-Algorithmus rückgängig, so daß das Array von Streifen wieder auf seine vorherigen/ursprünglichen quantisierten Winkel zurück umgeschlagen wird, um sicherzustellen, daß der Endpunkt eines vorherigen Streifens und der Startpunkt des nächsten nachfolgenden Streifens zusammenfallen, um so zu vermeiden, die Startkoordinate des nächsten nachfolgenden Streifens senden zu müssen.
  • Der Server-Agent 160 codiert dann die Anfangskoordinate des Weges 700 zusammen mit den quantisierten Winkeldaten in dem Liniensegmentarray und den Pixellängendaten in dem Streifenlängenarray zur Bildung eines Protokollstroms (Schritt 850). Die codierten Daten werden dann einem Komprimierungsalgorithmus unterzogen, um die Datenredundanzen in dem Protokollstrom auszunutzen (Schritt 860), und die komprimierten graphischen Liniendaten werden danach zur Decodierung und weiteren Verarbeitung zu dem Client-Agent 118 übertragen (Schritt 870).
  • Mit Bezug auf die beispielhafte Darstellung in 9 und die quantisierten Winkelinformationen von 10 umfaßt das Liniensegment 710 vier Streifen 712, 714, 716, 718, die in dem quantisierten Winkel 1 positioniert sind. Die Anfangskoordinate des Weges 700, die aus dem Server-Agenten 160 zu dem Client-Agenten 118 als Teil der komprimierten graphischen Liniendaten übertragen wird, entspricht dem ersten Pixel in dem Streifen 712 (positioniert am Ursprung von 880). Die graphischen Liniendaten enthalten ferner die Pixellänge jedes Streifens 712, 714, 716, 718 in dem Segment 710. Da das Segment 710 nicht einer perfekt horizontalen, vertikalen oder in einem Winkel von 45 Grad liegenden Diagonalen entspricht, wird jeder nachfolgende Streifen 714, 716 und 718 in dem Segment 710 wie in 10 angegeben um einen bestimmten Deltawert eingestellt, um den Gesamtwinkel des Segments 710 richtig zu approximieren. Um in dem vorliegenden Beispiel von dem letzten Punkt in dem vorherigen Streifen 712 zu dem Anfangspunkt des nächsten nachfolgenden Streifens 714 zu gelangen, zeigt der Client-Agent 118 den Streifen 714 mit im wesentlichen demselben x-Wert und einem zunehmenden y-Wert an. Dieser Prozeß wird für jeden Streifen in dem Segment 710 sowie für die Streifen in dem Segment 720, die in QA 15 positioniert sind, wiederholt.
  • Folglich und bei einer Ausführungsform umfaßt der durch die vorliegende Erfindung bei der Verarbeitung von Streifen erzeugte Protokollstrom die Startposition des Weges, einen (etwaigen) Index, der einer Speicherstelle in dem flüchtigen Speicher 114 des Client (1) entspricht, die möglicherweise bereits einen zu einem früheren Zeitpunkt in der Client-Server-Sitzung übertragenen bestimmten Streifen, die Anzahl der Segmente in dem Weg, den quantisierten Winkel jedes Segments (woraus die in 10 wiedergegebenen Deltawerte bestimmt werden), die Länge jedes Streifens zusammen mit bestimmten Steuerinformationen und quantisierte Winkeldeltainformationen speichert, die zu dem quantisierten Winkel eines ersten oder vorherigen Segments hinzugefügt werden, um den Client-Agenten 118 über den quantisierten Winkel nachfolgender Segmente zu informieren. Auf diese Weise vermeidet die Erfindung, daß Koordinaten- und Absolutwinkelinformationen für jeden Streifen in dem Weg gesendet werden müssen. Ferner ermöglicht die oben besprochene Streifenverarbeitungstechnik ein effizientes Komprimieren von graphischen Liniendaten durch Verstärken der sich wiederholenden Beschaffenheit der Daten in dem unkomprimierten Protokollstrom.
  • Die vorliegende Erfindung kann auch auf Bitmaps angewandt werden, die in einer On-Screen-Oberfläche angezeigt werden, sowie auf Bitmaps in einer Off-Screen-Oberfläche (die z.B. in dem Speicher eines Videoanzeigeadapters und/oder in einem im voraus zugeteilten Teil des flüchtigen Speichers 114 des Client, an dem eine Graphikumsetzungsbibliothek operieren wird, gespeichert sind). Off-Screen-Oberflächen werden häufig von Anwendungen wie etwa Mikrosoft Word gebildet, die Bitmaps in die Off-Screen-Oberfläche schreiben, bis die Oberfläche vollständig ist, woraufhin die Off-Screen-Oberfläche auf dem Anzeigeschirm 128 des Client 110 in endgültiger Form als eine On-Screen-Oberfläche angezeigt wird. Deshalb liefern die Off-Screen-Oberflächen häufig die Quelle für On-Screen-Oberflächen.
  • Bei einer Ausführungsform und mit Bezug auf Off-Screen-Oberflächen informiert der Client-Agent 118 den Server-Agenten 160 über die Menge an lokalem flüchtigem Speicher 114, der für Off-Screen-Oberflächen verfügbar ist, so daß der Server-Agent 160 keine Off-Screen-Oberfläche bildet, die größer als der verfügbare Speicher des Client ist. Der Server-Agent 160 bildet danach eine Off-Screen-Oberfläche und sendet sie zu dem Client-Agenten 118 zusammen mit Anweisungen zum Speichern der Oberfläche in seinem flüchtigen Speicher 114. Der Client-Agent 118 wählt einen bestimmten Teil seines flüchtigen Speichers 114 und teilt ihn der Oberfläche zu und speichert die Oberfläche darin. Jede Off-Screen-Oberfläche besitzt eine Menge assoziierter Attribute, wie zum Beispiel eine Kennung, die eindeutig Oberfläche, Pixelformat, Abmessungen, Zeichnungsattribute, Protokollzustand usw. identifiziert.
  • Um den flüchtigen Speicher 114 des Client effizient zu nutzen, kann der Server-Agent 160 bei einer Ausführungsform Befehle an den Client-Agenten 118 ausgeben, die anweisen, daß bestimmte Operationen an der Off-Screen-Oberfläche nur dann ausgeführt werden, wenn die Off-Screen-Oberfläche mit der On-Screen-Oberfläche in Wechselwirkung tritt (z.B. beim Aktualisieren der On-Screen-Oberfläche mit Bitmapdaten aus der Off-Screen-Oberfläche). Wenn die einzige Interaktion zwischen der On-Screen-Oberfläche und der Off-Screen-Oberfläche eine endgültige Kopie für den Bildschirm ist, können die Operationen an die On-Screen-Oberfläche gerichtet werden und somit die Menge an Bitmapdaten, die über das Netzwerk 140 übertragen werden muß, reduzieren. Alternativ dazu kann die Quelle der On-Screen-Oberfläche darauf beschränkt werden, entweder einer abgesetzt im Server 150 gespeicherten Off-Screen-Oberfläche zu entsprechen oder einer lokal in dem Client 110 gespeicherten Off-Screen-Oberfläche. Typische Operationen an der Off-Screen-Oberfläche, die der Server-Agent 160 anfordert, sind zum Beispiel das Aktualisieren der Bitmap in der Off-Screen-Oberfläche mit aktualisierten Text-, Linien- oder anderen Daten.
  • Bei einer Ausführungsform und mit Bezug auf 11 fängt der Server-Agent 160 Aufrufe an das Server-Betriebssystem 156 im Bezug auf die Erzeugung einer Off-Screen-Oberfläche ab und der Server-Agent 160 bildet ein Duplikat der Oberfläche und speichert sie zusammen mit ihren Attributen in dem lokalen Speicher des Servers. Der Server-Agent 160 gibt dann einen Befehl zum Bilden der Off-Screen-Oberfläche in dem flüchtigen Speicher 114 des Client an den Client-Agenten 118 aus (Schritt 1102). Den Befehl begleitet eine codierte Repräsentation der Off-Screen-Oberfläche, wenn es sich dabei um den ersten Fall des Auftretens der Off-Screen-Oberfläche handelt, oder ein Index oder Fuzzy-Schlüssel, wenn die Off-Screen-Oberfläche zuvor während der Client-Server-Sitzung übertragen wurde (Schritt 1104). Der Server-Agent 160 weist den Client-Agenten 118 an, die durch die Index-/Fuzzy-Schlüssel-Indicia oder codierte Oberfläche identifizierten graphischen Daten in die Off-Screen-Oberfläche des Client zu integrieren (Schritt 1106). Der Client-Agent 118 reagiert auf die Anweisungen des Server-Agenten, indem er die identifizierte Oberfläche bzw. Bitmap in die Off-Screen-Oberfläche des Client kopiert (Schritt 1108). Wenn ein von dem Server-Agenten 160 ausgegebener BITBLT-Befehl zum Beispiel zur Bildung einer Bitmap in der Off-Screen-Oberfläche des Client erfolglos bleibt, wenn zum Beispiel ein Speicherzuteilungsfehler auftritt, sendet der Client-Agent 118 einen C2S_OSS_Error-Befehl zu dem Server-Agenten 160, der den erfolglos-Zustand anzeigt (Schritt 1110). Als Reaktion auf den Fehlerzustand verwendet der Server-Agent 160 seine lokale Kopie der Off-Screen-Oberfläche als Quelle zur Aktualisierung der Off-Screen-Oberfläche des Client. Der Client-Agent 118 aktualisiert mit den aus der lokalen Kopie des Servers empfangenen Informationen die Off-Screen-Oberfläche auf dem Client 110 und korrigiert etwaige verfälschte/verunreinigte Regionen der Off-Screen-Oberfläche. Alternativ dazu sendet der Server-Agent 160, wenn ein Fehlerzustand angetroffen wird, seine lokale bzw. Duplikatkopie der Off-Screen-Oberfläche (Schritt 1112) zu dem Client-Agenten 118 und weist den Client-Agenten 118 an, die Duplikatoberfläche als Quelle zur Aktualisierung der On-Screen-Oberfläche des Client zu verwenden und die verfälschte Off-Screen-Oberfläche im Client zu verwerfen (Schritt 1114).
  • Obwohl die vorliegende Erfindung mit Bezug auf spezifische Einzelheiten beschrieben wurde, ist nicht beabsichtigt, daß diese Einzelheiten als Einschränkung des Schutzumfangs der Erfindung betrachtet werden, außer soweit sie in den beigefügten Ansprüchen enthalten sind.

Claims (17)

  1. Verfahren zum effizienten Verringern der Menge an graphischen Daten, die von einem Server (150) über ein Kommunikationsnetz (140) zu einem Client (110) gesendet werden, mit den folgenden Schritten: Auftrennen (830) eines Weges in mehrere Streifen; Bestimmen (820) eines mit dem Absolutwinkel assoziierten quantisierten Winkels für jeden der mehreren Streifen; Bilden eines Protokollstroms in dem Server (150), wobei der Protokollstrom eine Anfangskoordinate des Weges und die Streifenlänge und ein Indicia des quantisierten Winkels jedes der mehreren Streifen enthält; und Senden (870) des Protokollstroms von dem Server (150) zu dem Client (110) über das Kommunikationsnetz (140); dadurch gekennzeichnet, daß mit jedem der mehreren Streifen eine in einem Koordinatensystem definierte Anfangs- und Endpunktkoordinate, eine Streifenlänge und ein Absolutwinkel assoziiert sind, wobei das Koordinatensystem einer Region einer mit dem Client (110) assoziierten Anzeigeoberfläche entspricht.
  2. Verfahren nach Anspruch 1, weiterhin mit den folgenden Schritten: Komprimieren (860) der Anfangskoordinate des Weges und der Streifenlänge und des Indicia des quantisierten Winkels jedes der mehreren Streifen vor dem Senden des Protokollstroms zu dem Client (110).
  3. Verfahren nach Anspruch 1 oder Anspruch 2, wobei der Protokollstrom ein mit mindestens einem der mehreren Streifen assoziiertes Indicia enthält, wobei das Indicia einem Index entspricht, der eine Speicherstelle des mindestens einen der mehreren Streifen in einem an den Client (110) angekoppelten Cache-Speicher identifiziert.
  4. Verfahren nach Anspruch 1 oder Anspruch 2, wobei der Protokollstrom ein mit mindestens einem der mehreren Streifen assoziiertes Indicia enthält, wobei das Indicia einem Fuzzy-Schlüssel entspricht, der eine Speicherstelle des mindestens einen der mehreren Streifen in einem an den Client (110) angekoppelten Dauerspeicher-Speicher identifiziert.
  5. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Indicia des quantisierten Winkels einem quantisierten Winkel-Delta entspricht.
  6. Verfahren nach Anspruch 1, weiterhin mit den folgenden Schritten: Quantisieren des Koordinatensystems zu mehreren quantisierten Winkeln; Bestimmen der Endpunktkoordinate eines ersten der mehreren Streifen; Normieren der Endpunktkoordinate des ersten Streifens, so daß sie dem Ursprung des Koordinatensystems entspricht; Assoziieren der Endpunktkoordinate des ersten Streifens mit einer Anfangskoordinate eines zweiten der mehreren Streifen; Wählen eines der mehreren quantisierten Winkel des Koordinatensystems, wobei der gewählte quantisierte Winkel einem ungefähren Winkel des zweiten Streifens entspricht; und Senden einer Differenz zwischen den Endpunktkoordinaten des ersten und des zweiten Streifens und einer Angabe des quantisierten Winkels zu dem Client (110).
  7. System zum effizienten Verringern der Menge an graphischen Daten, die von einem Server (150) über ein Kommunikationsnetz (140) zu einem Client (110) gesendet werden, wobei das System folgendes umfaßt: einen Server-Agent (160), der auf dem Server (150) wirkt und über das Kommunikationsnetz (140) an den Client (110) angekoppelt ist, wobei der Server-Agent (160) so angeordnet ist, daß er im Betrieb folgendes ausführt: a) Auftrennen (830) eines Weges in mehrere Streifen; b) Bestimmen (820) eines mit dem Absolutwinkel assoziierten quantisierten Winkels für jeden der mehreren Streifen; c) Bilden (850) eines Protokollstroms in dem Server (150), wobei der Protokollstrom eine Anfangskoordinate des Weges und die Streifenlänge und ein Indicia des quantisierten Winkels jedes der mehreren Streifen enthält; und d) Senden (870) des Protokollstroms von dem Server (150) zu dem Client (110) über das Kommunikationsnetz (140); dadurch gekennzeichnet, daß mit jedem der mehreren Streifen eine in einem Koordinatensystem definierte Anfangs- und Endpunktkoordinate, eine Streifenlänge und ein Absolutwinkel assoziiert sind, wobei das Koordinatensystem einer Region einer mit dem Client (110) assoziierten Anzeigeoberfläche entspricht.
  8. System nach Anspruch 7, wobei der Server-Agent (160) so angeordnet ist, daß er im Betrieb die Anfangskoordinate des Weges und der Streifenlänge und des Indicia des quantisierten Winkels jedes der mehreren Streifen vor dem Senden des Protokollstroms zu dem Client (110) komprimiert (860).
  9. System nach Anspruch 7 oder Anspruch 8, wobei der Server-Agent (160) so angeordnet ist, daß er im Betrieb einen Protokollstrom bildet, der ein mit mindestens einem der mehreren Streifen assoziiertes Indicia enthält, wobei das Indicia einem Index entspricht, der eine Speicherstelle des mindestens einen der mehreren Streifen in einem an den Client (110) angekoppelten Cache-Speicher identifiziert.
  10. System nach Anspruch 7 oder Anspruch 8, wobei der Server-Agent (160) so angeordnet ist, daß er im Betrieb einen Protokollstrom bildet, der ein mit mindestens einem der mehreren Streifen assoziiertes Indicia enthält, wobei das Indicia einem Fuzzy-Schlüssel entspricht, der eine Speicherstelle des mindestens einen der mehreren Streifen in einem an den Client (110) angekoppelten Dauerspeicher-Speicher identifiziert.
  11. System nach einem der Ansprüche 7 bis 10, wobei der Server-Agent (160) so angeordnet ist, daß er im Betrieb einen Protokollstrom bildet, bei dem das Indicia des quantisierten Winkels einem quantisierten Winkel-Delta entspricht.
  12. System nach Anspruch 7, wobei der Server-Agent (160) weiterhin so angeordnet ist, daß er im Betrieb das Koordinatensystem zu mehreren quantisierten Winkeln quantisiert.
  13. System nach Anspruch 7, wobei der Server-Agent (160) weiterhin so angeordnet ist, daß er im Betrieb die Endpunktkoordinate eines ersten der mehreren Streifen bestimmt.
  14. System nach Anspruch 7, wobei der Server-Agent (160) weiterhin so angeordnet ist, daß er im Betrieb die Endpunktkoordinate des ersten Streifens normiert, so daß sie dem Ursprung des Koordinatensystems entspricht.
  15. System nach Anspruch 7, wobei der Server-Agent (160) weiterhin so angeordnet ist, daß er im Betrieb die Endpunktkoordinate des ersten Streifens mit einer Anfangskoordinate eines zweiten der mehreren Streifen assoziiert.
  16. System nach Anspruch 7, wobei der Server-Agent (160) weiterhin so angeordnet ist, daß er im Betrieb eine der mehreren quantisierten Winkel des Koordinatensystems wählt, wobei der gewählte quantisierte Winkel einem ungefähren Winkel des zweiten Streifens entspricht.
  17. System nach Anspruch 7, wobei der Server-Agent (160) weiterhin so angeordnet ist, daß er im Betrieb eine Differenz zwischen den Endpunktkoordinaten des ersten und des zweiten Streifens und eine Angabe des quantisierten Winkels zu dem Client (110) sendet.
DE60112107T 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 Expired - Lifetime DE60112107T2 (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
DE60112107D1 DE60112107D1 (de) 2005-08-25
DE60112107T2 true DE60112107T2 (de) 2006-04-20

Family

ID=26902328

Family Applications (4)

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
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
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
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

Family Applications Before (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
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
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) US7490166B2 (de)
EP (1) EP1285517B1 (de)
JP (1) JP2004501445A (de)
KR (4) KR100824121B1 (de)
AU (3) AU2001274972A1 (de)
CA (1) CA2408924A1 (de)
DE (4) DE60112103T2 (de)
ES (4) ES2240461T3 (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
US7490166B2 (en) * 2000-05-26 2009-02-10 Citrix Systems, Inc. Remote control of a client's off-screen surface
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
US7185014B1 (en) 2000-09-22 2007-02-27 Axeda Corporation Retrieving data from a server
US8108543B2 (en) 2000-09-22 2012-01-31 Axeda Corporation Retrieving data from a server
US20030017846A1 (en) * 2001-06-12 2003-01-23 Estevez Leonardo W. Wireless display
KR100935586B1 (ko) * 2001-08-27 2010-01-07 코닌클리케 필립스 일렉트로닉스 엔.브이. 캐시 방법
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
US7376695B2 (en) * 2002-03-14 2008-05-20 Citrix Systems, Inc. Method and system for generating a graphical display for a remote terminal session
US8671213B2 (en) 2002-03-14 2014-03-11 Citrix Systems, Inc. Methods and apparatus for generating graphical and media displays at a client
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
CA2483601C (en) * 2002-04-30 2013-10-15 General Dynamics Advanced Information Systems, Inc. Method and apparatus for in-line serial data encryption
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
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
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
US20040008205A1 (en) * 2002-07-11 2004-01-15 Sun Microsystems, Inc., A Delaware Corporation Tagging single-color 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
EP1618716A1 (de) * 2003-04-23 2006-01-25 Telecom Italia S.p.A. Client/server system und verfahren zur bereitstellung von multimedia und interaktiven diensten an mobilfunkendgeräte
WO2004107131A2 (en) * 2003-05-28 2004-12-09 Caymas Systems, Inc. Policy based network address translation
KR20060110267A (ko) * 2003-09-12 2006-10-24 사이트릭스 시스템스, 인크. 신 클라이언트에서 그래픽 및 미디어 디스플레이를생성하기 위한 장치 및 방법
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 삼성전자주식회사 클라이언트에 실행된 윈도우의 상태에 따라데이터전송률을 조정하는 홈네트워크 시스템 및데이터전송률 조정방법
US8739274B2 (en) 2004-06-30 2014-05-27 Citrix Systems, Inc. Method and device for performing integrated caching in a data communication network
US7757074B2 (en) 2004-06-30 2010-07-13 Citrix Application Networking, Llc System and method for establishing a virtual private network
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
WO2006014480A2 (en) * 2004-07-08 2006-02-09 Actuality Systems, Inc. Architecture for rendering graphics on output devices over diverse connections
CA2574776A1 (en) 2004-07-23 2006-02-02 Citrix Systems, Inc. Systems and methods for optimizing communications between network nodes
US7287139B2 (en) * 2004-07-23 2007-10-23 International Business Machines Corporation Maintenance of persistent data using bitmaps
EP1771979B1 (de) 2004-07-23 2011-11-23 Citrix Systems, Inc. Verfahren und system zur sicherung von zugriff aus der ferne auf private netze
JP2008510232A (ja) * 2004-08-13 2008-04-03 サイトリックス システムズ, インコーポレイテッド 多数のリモートアクセスサーバにわたる処理整合性を維持する方法
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
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
US7774789B1 (en) * 2004-10-28 2010-08-10 Wheeler Thomas T Creating a proxy object and providing information related to a proxy object
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
US8954595B2 (en) 2004-12-30 2015-02-10 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP buffering
US8706877B2 (en) 2004-12-30 2014-04-22 Citrix Systems, Inc. Systems and methods for providing client-side dynamic redirection to bypass an intermediary
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
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
US8145777B2 (en) 2005-01-14 2012-03-27 Citrix Systems, Inc. Method and system for real-time seeking during playback of remote presentation protocols
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
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
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
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
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
US7711695B2 (en) * 2005-01-18 2010-05-04 Oracle International Corporation Reducing memory used by metadata for duplicate user defined types
CN102104632B (zh) * 2005-01-24 2012-08-22 茨特里克斯系统公司 在网络中对动态产生的对象执行缓存的系统和方法
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
US8171169B2 (en) * 2005-03-14 2012-05-01 Citrix Systems, Inc. Method and apparatus for updating a graphical display in a distributed processing environment
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
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
US8200796B1 (en) 2005-05-05 2012-06-12 Digital Display Innovations, Llc Graphics display system for multiple remote terminals
US11733958B2 (en) 2005-05-05 2023-08-22 Iii Holdings 1, Llc Wireless mesh-enabled system, host device, and method for use therewith
US8019883B1 (en) 2005-05-05 2011-09-13 Digital Display Innovations, Llc WiFi peripheral mode display system
US8234577B1 (en) 2005-05-23 2012-07-31 Glance Networks, Inc. Method and apparatus for the transmission 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
US20110157196A1 (en) * 2005-08-16 2011-06-30 Exent Technologies, Ltd. Remote gaming features
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
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
US7925202B2 (en) 2006-03-07 2011-04-12 Thomson Licensing Portable communication device for an advanced display
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
US7791559B2 (en) 2006-09-14 2010-09-07 Citrix Systems, Inc. System and method for multiple display support in remote access software
US8054241B2 (en) 2006-09-14 2011-11-08 Citrix Systems, Inc. Systems and methods for multiple display support in remote access software
JP5936805B2 (ja) * 2006-09-29 2016-06-22 アビニティ・システムズ・ベスローテン・フェンノートシャップAvinity Systems B.V. パラレルユーザセッションをストリーミングするための方法、システム、およびコンピュータソフトウェア
US8370479B2 (en) 2006-10-03 2013-02-05 Axeda Acquisition Corporation System and method for dynamically grouping devices based on present device conditions
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
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
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
US7860517B1 (en) 2006-12-22 2010-12-28 Patoskie John P Mobile device tracking using mobile agent location breadcrumbs
US8200603B1 (en) 2006-12-22 2012-06-12 Curen Software Enterprises, L.L.C. Construction of an agent that utilizes as-needed 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
US7970724B1 (en) 2006-12-22 2011-06-28 Curen Software Enterprises, L.L.C. Execution of a canonical rules based agent
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
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
US7698243B1 (en) * 2006-12-22 2010-04-13 Hauser Robert R Constructing an agent in a first execution environment using canonical rules
US7702603B1 (en) * 2006-12-22 2010-04-20 Hauser Robert R Constructing an agent that utilizes a compiled set of canonical rules
US8423496B1 (en) 2006-12-22 2013-04-16 Curen Software Enterprises, L.L.C. Dynamic determination of needed agent rules
US9311141B2 (en) 2006-12-22 2016-04-12 Callahan Cellular L.L.C. Survival rule usage by software agents
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
EP3145200A1 (de) 2007-01-12 2017-03-22 ActiveVideo Networks, Inc. Mpeg-objekte und systeme und verfahren zur verwendung von mpeg-objekten
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
US8103783B2 (en) 2007-03-12 2012-01-24 Citrix Systems, Inc. Systems and methods of providing security and reliability to proxy caches
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
US8074028B2 (en) 2007-03-12 2011-12-06 Citrix Systems, Inc. Systems and methods of providing a multi-tier cache
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
US7584294B2 (en) * 2007-03-12 2009-09-01 Citrix Systems, Inc. Systems and methods for prefetching objects for caching using QOS
US20080228715A1 (en) * 2007-03-12 2008-09-18 Terabyte Media, Llc Apparatus and method for distributed information retrieval and processing
US7783757B2 (en) * 2007-03-12 2010-08-24 Citrix Systems, Inc. Systems and methods of revalidating cached objects in parallel with request for object
US8701010B2 (en) 2007-03-12 2014-04-15 Citrix Systems, Inc. Systems and methods of using the refresh button to determine freshness policy
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
US7928984B1 (en) 2007-08-31 2011-04-19 Adobe Systems Incorporated Efficient data packaging for rendering bézier curves on a GPU
US8068106B1 (en) 2007-08-31 2011-11-29 Adobe Systems Incorporated Rendering cubic Bézier curves as quadratic curves using a GPU
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
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
TWI521939B (zh) * 2008-02-27 2016-02-11 恩康普丁公司 用於低頻寬顯示資訊傳輸之系統及方法
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
EP2407895A1 (de) * 2010-07-16 2012-01-18 Research In Motion Limited Bestehende Dateisysteminformation auf mobilen Geräten
WO2012025728A1 (en) * 2010-08-27 2012-03-01 Fxi Technologies As Electronics Device
EP2616954B1 (de) * 2010-09-18 2021-03-31 Google LLC Ein verfahren und einen mechanismus zum ferngesteuerten rendern von grafiken
KR20130138263A (ko) 2010-10-14 2013-12-18 액티브비디오 네트웍스, 인코포레이티드 케이블 텔레비전 시스템을 이용하는 비디오 장치들 간의 디지털 비디오의 스트리밍
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
WO2013019517A1 (en) 2011-08-02 2013-02-07 Ciinow, Inc. A 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
US9747334B2 (en) * 2011-09-30 2017-08-29 Teradata Us, Inc. Managing excess capacity of database systems in a capacity controlled computing environment
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
US8681813B2 (en) 2011-11-29 2014-03-25 Wyse Technology L.L.C. Bandwidth optimization for remote desktop protocol
US10409445B2 (en) 2012-01-09 2019-09-10 Activevideo Networks, Inc. Rendering of an interactive lean-backward user interface on a television
US9123084B2 (en) 2012-04-12 2015-09-01 Activevideo Networks, Inc. Graphical application integration with MPEG objects
US10250638B2 (en) 2012-05-02 2019-04-02 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
US9148331B2 (en) * 2012-05-02 2015-09-29 Elwha Llc Control of transmission to a target device with a cloud-based architecture
WO2014145921A1 (en) 2013-03-15 2014-09-18 Activevideo Networks, Inc. A multiple-mode system and method for providing user selectable video content
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
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
US10075630B2 (en) 2013-07-03 2018-09-11 HJ Laboratories, LLC Providing real-time, personal services by accessing components on a mobile device
EP3084622A4 (de) * 2013-12-20 2018-02-28 Intel Corporation Ausführung von abladung
EP4181068A1 (de) * 2014-01-21 2023-05-17 Mythical Games UK Ltd Verfahren und system für interaktives grafik-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
CN108155912B (zh) * 2014-08-08 2021-04-13 福建三元达网络技术有限公司 一种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
CN111708533B (zh) * 2016-08-31 2023-01-06 华为云计算技术有限公司 在应用瘦客户端中设置鼠标显示状态的方法及装置
US10701176B1 (en) * 2016-09-23 2020-06-30 Amazon Technologies, Inc. Messaging using a hash ring with host groups
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
US10657599B2 (en) 2016-10-14 2020-05-19 Allstate Insurance Company Virtual collaboration
US11303543B2 (en) 2018-11-15 2022-04-12 Citrix Systems, Inc. Real-time scalable virtual session and network analytics
US11489779B2 (en) 2019-05-20 2022-11-01 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
US35596A (en) * 1862-06-17 Improvement in envelopes for sewing-needles
US29285A (en) * 1860-07-24 A M Karr Improvement in mole-plows
US32632A (en) * 1861-06-25 Water-elevator
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
EP0124799B1 (de) 1983-04-13 1990-10-31 Nec Corporation 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 株式会社日立製作所 実記憶割り当て方法
ATE167582T1 (de) 1989-09-08 1998-07-15 Digital Equipment Corp 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
CA2119788C (en) 1992-07-24 1996-12-31 Peter L. Morse 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
WO1996002895A1 (en) * 1994-07-14 1996-02-01 Johnson Grace Company Method and apparatus for compressing images
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
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
US5874960A (en) * 1995-07-05 1999-02-23 Microsoft Corporation Method and system for sharing applications between computer systems
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
US6081623A (en) 1995-10-11 2000-06-27 Citrix Systems, Inc. Method for lossless bandwidth compression of a series of glyphs
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
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
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
US6061714A (en) 1997-05-07 2000-05-09 International Business Machines Corporation Persistent cache synchronization and start up system
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
AU4307699A (en) * 1998-05-08 1999-11-29 Geoworks Corporation Integrated advertising for wireless communication devices with rich content and direct user response mechanism
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
US7024046B2 (en) 2000-04-18 2006-04-04 Real Time Image Ltd. System and method for the lossless progressive streaming of images over a communication network
US7490166B2 (en) * 2000-05-26 2009-02-10 Citrix Systems, Inc. Remote control of a client's off-screen surface
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
US8290907B2 (en) 2012-10-16
KR100824121B1 (ko) 2008-04-22
DE60109631T2 (de) 2006-01-19
IL152797A0 (en) 2003-06-24
DE60109602T2 (de) 2006-04-27
ES2246432T3 (es) 2006-02-16
KR20070086443A (ko) 2007-08-27
KR100783216B1 (ko) 2007-12-06
DE60112103D1 (de) 2005-08-25
US7490166B2 (en) 2009-02-10
DE60112107D1 (de) 2005-08-25
US8099389B2 (en) 2012-01-17
ES2240872T3 (es) 2005-10-16
US7028025B2 (en) 2006-04-11
KR20070086442A (ko) 2007-08-27
CA2408924A1 (en) 2001-12-06
DE60109631D1 (de) 2005-04-28
JP2004501445A (ja) 2004-01-15
US20020073061A1 (en) 2002-06-13
US20020035596A1 (en) 2002-03-21
KR20070086444A (ko) 2007-08-27
ES2240461T3 (es) 2005-10-16
AU2001263490B2 (en) 2006-06-08
ES2246433T3 (es) 2006-02-16
EP1285517A2 (de) 2003-02-26
US20030046432A1 (en) 2003-03-06
EP1285517B1 (de) 2005-03-23
US20060153423A1 (en) 2006-07-13
AU6349001A (en) 2001-12-11
US20090144292A1 (en) 2009-06-04
HK1049415B (zh) 2005-06-24
US7502784B2 (en) 2009-03-10
WO2001093525A3 (en) 2002-03-21
KR100783217B1 (ko) 2007-12-06
HK1049415A1 (en) 2003-05-09
DE60109602D1 (de) 2005-04-28
US20020029285A1 (en) 2002-03-07
WO2001092973A2 (en) 2001-12-06
KR100824120B1 (ko) 2008-04-22
US20100205246A1 (en) 2010-08-12
AU2001274972A1 (en) 2001-12-11
KR20030031903A (ko) 2003-04-23
US7127525B2 (en) 2006-10-24
IL152797A (en) 2008-03-20
WO2001093525A2 (en) 2001-12-06
DE60112103T2 (de) 2006-06-01
IL184891A (en) 2008-12-29
WO2001092973A3 (en) 2002-05-23

Similar Documents

Publication Publication Date Title
DE60112107T2 (de) Verfahren und Vorrichtung zur effizientes Verringerung von graphischen Anzeigedaten für ihre Übertragung mittels eines Übertragungsprotokolls für niedrige Bandbreiten
DE69821050T2 (de) Datenstromdifferenzierungssystem für Endgerätemulator
DE60309201T2 (de) Verfahren und system zur übertragung von ereignissen, einschliesslich multimedia daten
AU2001263490A1 (en) Method and system for efficiently reducing graphical display data for transmission over a low bandwidth transport protocol mechanism
EP1326406B1 (de) Verfahren und Vorrichtung zur effizientes Verringerung von graphischen Anzeigedaten für ihre Übertragung mittels eines Übertragungsprotokolls für niedrige Bandbreiten
DE602004002104T2 (de) Ultraleicht browser
AU2006202299B2 (en) Method and system for efficiently reducing graphical display data for transmission over a low bandwidth transport protocol mechanism
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

Legal Events

Date Code Title Description
8364 No opposition during term of opposition