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 PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
- G06F3/1454—Digital 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
- G06F16/9577—Optimising the visualization of content, e.g. distillation of HTML documents
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/131—Protocols for games, networked simulations or virtual reality
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/565—Conversion or adaptation of application format or content
- H04L67/5651—Reducing the amount or size of exchanged application data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/75—Indicating network or usage conditions on the user display
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/04—Protocols for data compression, e.g. ROHC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/2876—Pairs of inter-processing entities at each side of the network, e.g. split proxies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/289—Intermediate processing functionally located close to the data consumer application, e.g. in same machine, in same home or in same sub-network
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99932—Access augmentation or optimizing
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99944—Object-oriented database structure
- Y10S707/99945—Object-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;
- 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 von1 gemäß einer Ausführungsform der vorliegenden Erfindung durchgeführten Schritte; -
3 ein ausführlicheres Flußdiagramm des Diagramms von2 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 von1 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 von7A 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 von8B auf die Pixelebenenrepräsentation von7B , 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 von8B 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-Knoten110' ,110'' (im folgenden wird jeder Client-Knoten oder jede Vielzahl von Client-Knoten allgemein als110 bezeichnet) mit einem oder mehreren Server-Knoten150' ,150'' (im folgenden wird jeder Server-Knoten oder jede Vielzahl von Server-Knoten allgemein als150 bezeichnet) über ein Kommunikationsnetz140 . Das Netzwerk140 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-Knotens110 können durch vielfältige Verbindungen mit dem Netzwerk140 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-Server150 über das Netzwerk140 gesendet werden, um eine graphische Anzeige wiederzugeben. In einem verteilten Computersystemmodell findet die Ausführung von Anwendungsprogrammen hauptsächlich auf dem Anwendungsserver150 statt, und die Benutzerschnittstelle, Tastenbetätigungen und Mausbewegungen, die durch Eingaben auf Client-Seite produziert werden, werden über das Netzwerk140 zu und von dem Client-Knoten110 übertragen. - Der Client-Knoten
110 enthält in der Regel einen Prozessor112 , einen flüchtigen Speicher114 (z.B. RAM-Cache), ein Betriebssystem116 , einen Client-Agent118 , einen Dauerspeicher-Speicher120 , eine Netzwerkschnittstelle122 (z.B. eine Netzwerkschnittstellenkarte), eine Tastatur124 , eine Maus126 und ein Display128 . Durch den Client-Knoten110 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-Agent118 entspricht einem Softwareprogramm, das Befehle und Daten aus dem Server-Knoten150 und von einem (nicht gezeigten) Benutzer des Client-Knotens110 empfängt. Der Client-Agent118 verwendet die empfangenen Informationen bei der Wechselwirkung mit anderen Komponenten des Client-Knotens110 (z.B. beim Anleiten des Betriebssystems116 , Daten auf dem Display128 auszugeben). Der Client-Agent118 sendet außerdem Anforderungen und Daten als Reaktion auf vom Server ausgegebene Befehle oder Benutzeraktionen an dem Client-Knoten110 zu dem Server-Knoten150 . - Ähnlich enthält der Server-Knoten
150 einen Prozessor152 , einen flüchtigen Speicher154 , ein Betriebssystem156 , ein Anwendungsprogramm158 , einen Server-Agent160 , Speicher162 und eine Netzwerkschnittstelle164 . Der Server-Agent160 entspricht einem Softwareprogramm, das mit dem Client-Agent118 und anderen Komponenten des Server-Knotens150 eine Schnittstelle aufweist, um die Fernanzeige und -operabilität des Anwendungsprogramms158 zu unterstützen. - Jeder Anwendungsserver
150 ist Host für ein oder mehrere Anwendungsprogramme158 , auf die die Client-Knoten110 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 Server150 über einen Transportmechanismus (Teil des Server-Agenten160 ) mit dem Client-Knoten110 . 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-Knoten150 zu dem Client-Knoten110 . Der Server150 führt einen Protokolltreiber (Teil des Server-Agenten160 ) aus, der graphische Anzeigeschnittstellenbefehle (die durch das Anwendungsprogramm158 erzeugt und auf das Betriebssystem156 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-Agent160 einen graphischen Anzeigeschnittstellenbefehl ab (Schritt202 ), der durch das Anwendungsprogramm158 ausgegeben wird und an das Betriebssystem156 gerichtet ist, codiert mit dem Befehl und dem Anwendungsprogramm158 assoziierte graphische Daten (Schritt204 ), komprimiert die codierten graphischen Daten (Schritt206 ), erzeugt ein Transportprotokollpaket, das den abgefangenen Befehl und komprimierte codierte Daten enthält (Schritt208 ) und sendet das Transportprotokollpaket zu dem Ziel-Client-Knoten110 (Schritt210 ). Graphische Daten bedeutet eine beliebige Art von Daten, die auf dem Display128 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 (Schritt202 ). Bei einer Ausführungsform fängt der Protokolltreiber Anwendungsprogrammierschnittstellenaufrufe hoher Ebene ab, die von dem Anwendungsprogramm158 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-Knotens150 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 Server150 und dem Client110 im wesentlichen ähnlich oder sogar identisch. Der Protokolltreiber erzeugt ein Transportprotokollpaket auf der Basis des abgefangenen graphischen Anzeigebefehls (Schritt208 ). 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 Anwendungsprogramms158 auf dem Display128 des Client anzuzeigen, reiht der Server-Agent160 den betreffenden Protokollbefehl zusammen mit einem eindeutigen Schlüssel412 (4 ), der mit den betroffenen graphischen Daten assoziiert ist, in Warteschlangen ein. Der eindeutige Schlüssel412 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üssel412 werden zusammen mit anderen Befehls- bzw. eindeutigen Schlüsselsätzen im Server150 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-Agent160 diese aus der Warteschlange und vermeidet somit, daß unnötige Daten zu dem Client-Agent118 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-Agent160 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.
- 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 (Schritt206 ), 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 Netzwerk140 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-Knoten110 gesendet (Schritt208 ). - Bei einem Ausführungsbeispiel führt das Anwendungsprogramm
158 einen GDI-Befehl aus, der das Betriebssystem156 des Servers anweist, eine Bitmap zu zeichnen. Der Server-Agent160 fängt diesen GDI-Befehl ab (Schritt202 ) und gibt einen BITBLT-Befehl an den Client-Agenten118 aus, der den Client-Agenten118 anweist, die Ausgangsdaten des Anwendungsprogramms auf dem Display128 des Client anzuzeigen. Vor dem Ausgeben des BITBLT-Befehls codiert der Server-Agent160 die Ausgangsdaten (Schritt204 ) und fügt die codierten Daten zusammen mit dem BITBLT-Befehl in den zu dem Client-Agenten118 übertragenen komprimierten Protokollpaketstrom ein. Bei einer Ausführungsform werden die die Bitmap410 (4 ) beschreibenden Daten codiert und komprimiert (Schritte204 und206 ), um bestimmte der in der Bitmap410 vorhandenen Redundanzen auszunutzen. Die Bitmap410 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 und4 erzeugt der Server-Agent160 wie oben beschrieben den eindeutigen Schlüssel412 (Schritt330 ) und assoziiert den eindeutigen Schlüssel412 mit den graphischen Daten (z.B. der Bitmap410 ). Diese Assoziation definiert im wesentlichen die Bitmap410 und ihre betreffenden Daten als ein graphisches Objekt, das danach zusammen mit seinem eindeutigen Schlüssel412 und den codierten Daten414 in einer Datenstruktur411 (z.B. einer Tabelle), die in dem flüchtigen Speicher154 des Servers (z.B. dem Cache-Subsystem des Servers) gespeichert ist, registriert wird (Schritt340 ). Bei anderen Ausführungsformen können die bitmapbezogenen Daten in die persistente Speicherung162 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 (Schritt360 ) den BITBLT-Befehl und den eindeutigen Schlüssel412 aus der Warteschlange und durchsucht die in dem flüchtigen Speicher154 des Servers gespeicherte Tabelle411 , um zu bestimmen, ob der eindeutige Schlüssel412 zuvor darin gespeichert wurde. Wenn der eindeutige Schlüssel412 in der Tabelle411 gefunden wird, bestimmt der Server-Agent160 , daß die codierten Daten414 zuvor durch den Server150 verarbeitet wurden. Der Server-Agent160 durchsucht dann die Tabelle411 nach einem mit der codierten Bitmap414 assoziierten Index oder Handle416 . Wenn der Index416 gefunden wird, bestimmt der Server-Agent160 , daß die codierte Bitmap414 nicht nur durch den Server150 verarbeitet wurde, sondern daß sie auch zuvor zu dem Client-Agenten118 übertragen wurde. Wenn der Index416 nicht in der Tabelle411 gefunden wird, bestimmt der Server-Agent160 , daß die codierte Bitmap414 noch nicht zuvor übertragen wurde. - Bei einer Ausführungsform identifiziert der Index
416 eine bestimmte Speicherstelle in dem flüchtigen Speicher114 des Client, die die zuvor übertragene codierte Bitmap414 speichert. Bei einer Ausführungsform führt der Client-Agent118 einen Schnappschuß seines verfügbaren flüchtigen Speichers114 bei Einleitung einer Client-Server-Sitzung mit dem Server-Agenten160 dem Server-Agenten160 zu. Nachdem die Sitzung hergestellt ist, steuert der Server-Agent160 danach die Zuteilung des verfügbaren flüchtigen Speichers114 des Client. Auf diese Weise kann der Server-Agent160 den flüchtigen Speicher114 des Client der codierten Bitmap414 zuteilen und den Index416 als Zeiger oder Referenz auf den zugeteilten Speicher und als Kennung der zuvor übertragenen codierten Bitmap414 führen. - Wenn der Index
416 in der Tabelle411 des Servers gefunden wird, erhält der Server-Agent160 den Index416 (Schritt370 ), komprimiert den Index416 zusammen mit dem betreffenden Protokollbefehl (Schritt380 ) und sendet die komprimierten Daten über das Netzwerk140 in einem an den Client-Agenten118 gerichteten Paket. Bei einer Ausführungsform ist der Index416 kürzer (z.B. 16 Bit) als der eindeutige Schlüssel412 (z.B. 64 Bit) und verbraucht folglich weniger Bandbreite bei der Übertragung. Nach Empfang und Dekomprimierung des komprimierten Pakets greift der Client-Agent118 auf die bestimmte Speicherstelle in dem flüchtigen Speicher114 des Client zu, die durch den Index416 spezifiziert wird, um die entsprechenden graphischen Daten410 zu erhalten. Der Client-Agent118 manipuliert danach die erhaltenen graphischen Daten410 gemäß dem Befehl, der mit dem Index416 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-Agenten118 gesendet wurde), teilt der Server-Agent160 einen Teil des flüchtigen Speichers114 des Client für die Bitmap410 zu und bildet den Index416 , der die Speicherstelle identifiziert. Der Server-Agent160 speichert dann die codierte Bitmap414 (die der Bitmap410 entspricht), den neugebildeten Index416 und den eindeutigen Schlüssel412 , der mit der codierten Bitmap414 assoziiert ist, in der Tabelle411 des Servers. Der Server-Agent160 komprimiert danach die codierte Bitmap414 , den Index416 und den betreffenden Befehl und sendet die komprimierten Daten in einem an den Client-Agenten118 gerichteten Paket. Nach Empfang und Dekomprimierung decodiert der Client-Agent118 die codierten Daten414 und speichert die resultierende Bitmap410 in der durch den Index416 identifizierten Speicherstelle und manipuliert die resultierende Bitmap410 gemäß dem einhergehenden Befehl. Als Alternative speichert der Client-Agent118 die codierten Daten414 in der durch den Index416 identifizierten Speicherstelle und decodiert die codierten Daten414 nur dann, wenn es notwendig ist, um die resultierende Bitmap410 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-Agent118 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-Agenten118 übertragen wird (mit dem einhergehenden Befehl, aber ohne den Index416 ), kann der Client-Agent118 die bestimmte Speicherstelle in seinem flüchtigen Speicher114 zum Speichern der Bitmap410 bestimmen. Bei dieser Ausführungsform bildet der Client-Agent118 einen (nicht gezeigten) Index, der die codierte Bitmap und ihre entsprechende Speicherstelle eindeutig identifiziert, und sendet den Index zu dem Server-Agenten160 , der den Index in der entsprechenden Speicherstelle in der Tabelle411 des Servers speichert. - Weiter mit Bezug auf die Ausführungsform, bei der der Server-Agent
160 die Zuteilung des flüchtigen Speichers114 des Client steuert, führt der Client-Agent118 eine kreisförmige Warteschlange421 aller durch den Server-Agenten160 spezifizierten Indizes gemäß Warteschlangenwartungsanweisungen, die ebenfalls von diesem empfangen werden. Zum Beispiel kann der Server-Agent160 den Client-Agenten118 anleiten, einen vorbestimmten Block Indizes417 (z.B. entsprechend 128 K Speicher) von ihren jeweiligen graphischen Daten zu disassoziieren, um neuangetroffene graphische Objekte unterzubringen, wenn der flüchtige Speicher114 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-Agent160 übermittelt diese Entscheidung zu dem Client-Agenten118 . Wenn zum Beispiel der Server-Agent160 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 Speicherung120 des Client verschoben werden sollen, und die mit den Handles 1 und 3 assoziierten Objekte gesichert werden sollen, weist der Server-Agent160 somit den Client-Agenten118 an, 0 und 2 zu löschen (oder zu verschieben) und 1 und 3 zu sichern. Der Client-Agent118 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 Speicher114 des Client110 wird voll von zuvor übertragenen Bitmaps410 oder anderen graphischen Objekten. Die Anzahl der zuvor übertragenen graphischen Objekte422 , die aus dem flüchtigen Speicher114 in die persistente Speicherung120 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 Objekte422 zu suchen, die in der persistenten Speicherung120 des Client gespeichert sein können, wenn kein Index auf dieses graphische Objekt422 in der Tabelle411 des Servers gefunden wird. Wenn ein solches Indicia gefunden wird, besteht eine große Wahrscheinlichkeit, daß das zuvor übertragene graphische Objekt422 immer noch lokal verankert und dem Client-Agent118 zugänglich ist und daß das graphische Objekt422 deshalb möglicherweise nicht neu aus dem Server-Agenten150 zu dem Client-Agenten110 übertragen werden muß. Es ist wichtig, zu beachten, daß das Finden solcher Indicias eine große Wahrscheinlichkeit, aber keine Bestimmtheit, ergibt, daß das graphische Objekt422 lokal verankert ist, weil möglicherweise andere Programme oder Client-Agenten, die gemeinsam dieselbe persistente Speicherung120 benutzen können, das graphische Objekt422 aus der persistenten Speicherung120 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 und5 durchsucht der Server-Agent118 , wenn der Server-Agent160 keinen Index für eine bestimmte Bitmap422 in der Indextabelle411 des Servers finden kann, eine zweite Tabelle418 (im folgenden "Fuzzy-Datenbank") nach einem Eintrag419 (im folgenden "Fuzzy-Schlüssel"), der mit der Bitmap422 assoziiert ist (Schritt520 ). Bei einer Ausführungsform ist jeder Fuzzy-Schlüssel419 eine Kombination des eindeutigen Schlüssels412 in der Tabelle411 des Servers und der Länge/Größe der assoziierten Bitmap422 . Der Fuzzy-Schlüssel kann zum Beispiel über ein XOR (exklusiv-OR) beider zur Berechnung des eindeutigen 64-Bit-Schlüssels412 in der Tabelle411 des Servers verwendeter 32-Bit-CRCs und der Länge der Bitmap422 , die mit dem eindeutigen Schlüssel412 assoziiert ist, gebildet werden. Die Fuzzy-Datenbank418 liefert im wesentlichen eine Anfangsvorhersage, ob in der persistenten Speicherung120 des Client110 eine Kopie der Bitmap422 gespeichert ist. Wenn die Fuzzy-Datenbank418 den mit der Bitmap422 assoziierten Fuzzy-Schlüssel419 nicht enthält, ist wahrscheinlich keine Kopie der Bitmap422 in der persistenten Speicherung120 des Client gespeichert und der Server-Agent160 muß deshalb eine codierte Version der Bitmap422 wie zuvor beschrieben zu dem Client-Agenten118 senden. Wenn die Fuzzy-Datenbank418 dagegen den Fuzzy-Schlüssel419 für die Bitmap422 enthält, besteht eine große Wahrscheinlichkeit, daß die Bitmap422 in der persistenten Speicherung120 des Client gespeichert ist. - Wenn der Server-Agent
160 keinen Fuzzy-Schlüssel419 in der Fuzzy-Datenbank418 findet, der mit der Bitmap422 assoziiert ist, sendet der Server-Agent160 genauer gesagt eine codierte Bitmap (entsprechend der Bitmap422 ) zu dem Client-Agenten118 mit einem Befehl, der von dem Client-Agenten118 anfordert, die Bitmap422 (oder die entsprechende codierte Bitmap) in dem flüchtigen Speicher114 zu speichern (Schritt530 ). Außerdem und wie oben beschrieben fügt der Server-Agent160 den mit der Bitmap422 assoziierten Fuzzy-Schlüssel419 zu der Fuzzy-Datenbank418 hinzu (Schritt540 ). Man beachte, daß die Reihenfolge der Schritte530 und540 umgekehrt werden kann, so daß die Fuzzy-Datenbank418 vor der Übertragung des Befehls und der codierten Version der Bitmap422 aktualisiert wird. Der Client- Agent118 kopiert danach die Bitmap422 in eine bestimmte Speicherstelle in dem flüchtigen Speicher114 des Client, wie durch den Server-Agenten160 spezifiziert (Schritt560 ). - Bei einer Ausführungsform wartet der Server-Agent
160 nicht auf eine Bestätigung von dem Client-Agenten118 , daß die mit der Bitmap422 assoziierte codierte Bitmap erfolgreich empfangen und verarbeitet wurde. Stattdessen nimmt der Server-Agent160 an, daß die codierte Bitmap ordnungsgemäß verarbeitet wurde, und streamt weiter Protokollbefehle, ohne auf die Rückkehr einer Bestätigungsnachricht von dem Client-Agenten118 zu warten. Der Server-Agent160 verfolgt jedoch die Anzahl der seit der letzten gelesenen Bestätigung ausgegebenen Protokollbefehle. Der Server-Agent160 blockiert die weitere Übertragung von Protokollbefehlen, wenn die Anzahl eine vordefinierte Schwelle erreicht. Die Schwelle ermöglicht es dem Client-Agenten118 , 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-Datenbank420 gefunden wird, sendet der Server-Agent160 einen Befehl zu dem Client110 , der den Client-Agenten118 anweist, die mit dem Fuzzy-Schlüssel419 assoziierte Bitmap422 aus der persistenten Speicherung120 des Client in den flüchtigen Speicher114 des Client zu kopieren (Schritt550 ). Mit diesem Befehl geht nicht nur der Fuzzy-Schlüssel419 einher, der die interessierende Bitmap422 eindeutig identifiziert, sondern auch der assoziierte Index, der durch den Server-Agenten160 (wie zuvor beschrieben) erzeugt wird, um die spezifische Speicherstelle in dem flüchtigen Speicher114 des Client zu identifizieren, die die kopierte Bitmap422 empfangen und speichern wird. Durch Kopieren der Bitmap422 in den flüchtigen Speicher114 , statt einfach nur ihre Speicherstelle in der persistenten Speicherung120 zu behalten, kann die Erfindung schnell auf mehrere Anforderungen, die Bitmap422 zu zeichnen, die in schneller Abfolge oder ohne viel dazwischentretende Cache-Aktivität empfangen werden, reagieren, indem die Bitmap422 beim Auftreten der ersten Anforderung kopiert wird. - Wenn die Bitmap
422 trotz der Anwesenheit des entsprechenden Fuzzy-Schlüssels419 in der Fuzzy-Datenbank418 gerade nicht in der persistenten Speicherung120 gespeichert ist, gibt der Client-Agent118 (als Reaktion auf den zuvor von dem Server-Agenten160 ausgegebenen "CACHE_READ_DISK_OBJEKT"-Befehl) eine Nachricht an den Server-Agenten160 zurück, die anzeigt, daß die Bitmap422 fehlt. Nach Empfang dieser Nachricht sendet der Server-Agent160 die mit der Bitmap422 assoziierten codierten Bitmapdaten neu zu dem Client-Agenten118 (Schritt530 ). Man beachte, daß der Server-Agent160 eine sequenzielle Liste aller solchen CACHE_READ_DISK_OBJEKT-Befehle führt, die zu dem Client-Agenten118 gesendet werden, für die der Server-Agent160 noch keine Bestätigung empfangen hat, so daß der Server-Agent160 eine empfangene Bestätigung ordnungsgemäß mit einer bestimmten Bitmap422 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-Agent118 weiter den ankommenden Protokollstrom liest, ihn aber nicht verarbeitet. Stattdessen konstruiert der Client-Agent118 eine Warteschlange zum Empfangen des Stroms der Befehle, die nach dem Befehl, der die Bitmap422 nicht in der persistenten Speicherung120 finden konnte, weiter aus dem Server150 fließen. Der Client-Agent118 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 Bitmap422 zu erzeugen. Um die fehlende Bitmap422 in dem ankommenden Befehlsstrom zu erkennen, schaut der Client-Agent118 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 Bitmap422 (d.h. der 64-Bit-CRC und 32-Bit-Länge) XOR-verknüpft wird. Der Server-Agent160 erzeugt nach Empfang einer Nicht-Bestätigungs-Nachricht von dem Client-Agenten118 die Recovery-Markierung. Wenn die Bitmap422 ankommt, speichert der Client-Agent118 sie in seinem flüchtigen Speicher114 (Schritt560 ) (d.h. worin die Bitmap422 gespeichert worden wäre, wenn das Objekt anfänglich in der persistenten Speicherung120 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-Agent118 die Verarbeitung des ankommenden Stroms von Protokollbefehlen, der über das Netzwerk140 von dem Server150 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 Client110 gesendet hätte, wenn der Server-Agent160 zu Anfang gewußt hätte, daß die Bitmap422 nicht in der persistenten Speicherung120 vorlag. - Bei einer Ausführungsform ermöglicht die vorliegende Erfindung das Finden der Bitmap
422 in der persistenten Speicherung120 des Client durch Speichern der Bitmap422 in einer Datei, deren Dateiname gebildet wird, indem der Fuzzy-Schlüssel419 zusammen mit den mit der Bitmap422 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üssels419 als Teil des Dateinamen der Bitmap ermöglicht es dem Client-Agent118 außerdem, schnell die Fuzzy-Schlüssel-Informationen aus dem Dateinamen zu extrahieren und sie während eines anfänglichen Bootens des Client110 oder am Anfang der Client/Server-Sitzung zu dem Server-Agenten160 zu senden. Die extrahierten Fuzzy-Schlüssel können in einer Reihenfolge zu dem Server150 ü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-Datenbank418 hinzugefügt oder aus dieser gelöscht. Erstens sendet beim Herauffahren des Client-Agenten118 oder bei der Herstellung einer Client-Server-Sitzung mit dem Server-Agenten160 der Client-Agent118 Befehle zu dem Server-Agenten160 , um einen Fuzzy-Schlüssel419 für jede entsprechende Bitmap422 in der persistenten Speicherung120 des Client zu der Fuzzy-Datenbank418 hinzuzufügen (die Fuzzy-Schlüssel kommen zusammen mit den Befehlen des Client-Agenten). Der Client-Agent118 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 Server150 spezifiziert. Die Sendeliste kann durch den Client-Agenten118 beim Lesen des Verzeichnisses seiner persistenten Speicherung120 und beim Führen einer Repräsentation des Verzeichnisses in dem flüchtigen Speicher114 gebildet werden. In einem Aspekt der Erfindung extrahiert der Client-Agent118 Fuzzy-Schlüsselinformationen aus dem Dateinamen der Datei, die die Bitmap422 enthält, wenn die Repräsentation des Verzeichnisses erstellt wird. Zweitens fragt der Client-Agent118 in vorbestimmten Abfrageintervallen seine persistente Speicherung120 ab, um die Bitmaps zu bestimmen, die sich gerade in seiner persistenten Speicherung120 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-Datenbank418 des Servers zu aktualisieren, Hinzufüge- und/oder Löschbefehle zu dem Server-Agenten160 . Wenn der Server-Agent160 einen Befehl zu dem Client-Agenten118 zum Schreiben einer Bitmap in die persistente Speicherung120 des Client sendet, erzeugt der Server-Agent160 drittens einen entsprechenden Fuzzy-Schlüssel419 und speichert ihn in der Fuzzy-Datenbank418 . - Die Übertragung von Bitmap-Daten aus dem Server
150 zu dem Client110 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 Netzwerks140 bestimmt wird. Indem zum Beispiel dynamisch die Bandbreite des Netzwerks140 bewertet wird, kann der Server-Agent160 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-Cache114 entsprechend vor. Während die codierte Bitmap414 übertragen wird, kann die Übertragungszeit überwacht werden, um die Leistungsfähigkeit des Netzwerks140 zu bestimmen. Wenn die Übertragungszeit einen Schwellenwert überschreitet, kann der Client-Agent118 jegliche Bitmap-Daten, die bereits in seinem Cache114 gespeichert wurden, entnehmen und die übrigen Teile der Bitmap-Daten entweder in Echtzeit, während sie in dem Cache114 empfangen werden, oder in vorbestimmten Intervallen anzeigen. Auf diese Weise erkennt eine Benutzer des Client, daß der Client110 immer noch an den Bitmapdaten operiert, und kann sehen, daß sich der Client110 nicht in einem hängengebliebenen oder ausgefallenen bzw. Fehlerzustand befindet. Durch Approximieren der effektiven Netzwerkbandbreite zu dem Client110 und entsprechendes Anpassen des Verhaltens des Servers150 kann der Server-Agent160 zum Beispiel den Client-Agenten118 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 Bitmapdaten414 und ein Stop_StopWatch-Befehl folgen, zu dem Client-Agenten118 . Der Client-Agent118 reagiert auf den Start_StopWatch-Befehl, indem er den aktuellen Zeittick liest und ihn in ein erstes Arrayelement schreibt. Nachdem die codierte Bitmap414 empfangen wurde, reagiert der Client-Agent118 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-Agenten160 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 Server150 verlangsamen und einen Überlauf an der Quelle verhindern kann, wenn der Server150 Daten schneller erzeugt, als der Client110 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 Speicherung120 des Client behalten zu werden und sind somit während nachfolgenden Client/Server-Sitzungen in dem Client110 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 Speicherung120 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 Cache114 , wobei möglicherweise mehr als ein Cache-gespeichertes Objekt verwendet wird. Die Spalte wird deshalb auf atomische Weise auf dem Anzeigeschirm128 angezeigt. Wie bereits besprochen können, wenn die Netzwerkverbindung langsam ist, die Spalten einzeln atomisch angezeigt werden, um dem Benutzer an dem Client110 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 Maus126 . Während die Rollbefehle zu dem schnellen Server gesendet werden, führt der Server150 die Rolloperationen aus und gibt die assoziierten Daten schneller zurück, als der langsame Client110 (oder das langsame Netzwerk140 ) die Ergebnisse auf seinem Anzeigeschirm128 anzeigt. Wenn der Benutzer an dem Client110 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 Server150 bereits die Rollbefehle verarbeitet und die entsprechenden Daten zu dem Client110 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 Client110 (über die oben besprochenen StopWatch-Befehle), um eine gleitende Mittelwertschätzung ihrer jeweiligen Geschwindigkeiten zu berechnen. Auf diese Weise schätzt der Server-Agent160 , wie lange ein bestimmtes Rollereignis dauern wird (Geschwindigkeit mal Anzahl beteiligter Pixel), um in dem Server150 verarbeitet zu werden, und wie lange erwartet wird, daß der Client110 braucht, und wenn die erwartete Verarbeitungszeit in dem Client110 größer als die des Servers150 ist, wird die Serververarbeitung um die entsprechende Zeitdifferenz suspendiert, um so Client110 und Server150 im wesentlichen im Gleichschritt zu halten. Dieser Ansatz führt zu viel weniger Überrollereignissen aufgrund der Zeitverzögerung zwischen Client110 und Server150 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 Anzeige128 des fernen Client110 remoten. Mit Bezug auf6 führt der Server150 das Anwendungsprogramm158 aus, das eine Textzeichenkette erzeugt, die zu dem Client110 geremotet werden muß. Der Server-Agent160 fängt die aus dem Anwendungsprogramm158 zu dem Serverbetriebssystem156 gesendeten Befehle ab, die die Textzeichenkette betreffen und bewirkt, daß ein Anzeigetreiber612 des Server-Agenten160 die textbezogenen Informationen verarbeitet und eine Reihe von Protokollbefehlen614 zur Anzeige einer Textzeichenkette416 auf dem Display128 des Client zu dem Client-Agenten118 sendet. Zum Beispiel führt die Anwendung158 Prozeduraufrufe durch, die Textfarbe und Hintergrundfarbe setzen (hier "Hello!"). Die Ausführung der TextOut-Prozedur618 durch die Anwendung158 triggert die Ausführung der DrvTextOut-Prozedur620 des Anzeigetreibers612 . Wie gezeigt, definiert die DrvTextOut-Prozedur620 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-Agenten118 sendet. Die Protokollbefehle werden durch den Client-Agenten118 empfangen und verarbeitet, der Prozeduren614 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 Server150 kann außerdem andere Protokollbefehle zu dem Client-Agenten118 senden, die den Client-Agenten118 anweisen, die assoziierten Glyphe wie zuvor beschrieben in dem flüchtigen Speicher114 und/oder in der persistenten Speicherung120 zu speichern. Der Client-Agent118 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-Agent118 das Client-Betriebssystem116 an, die Bitmap auf dem Anzeigeschirm128 des Client110 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-Agenten160 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 Weg700 zwei Liniensegmente710 ,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 Weg700 auf einem Anzeigeschirm128 angezeigt wird (1 ). Diese Approximation ist notwendig, weil die einzelnen Pixel auf dem Anzeigeschirm128 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 Liniensegmente710 ,720 , die in einem anderen Gesamtwinkel liegen, durch eine Reihe von Streifen approximiert werden. Folglich und mit Bezug auf den Beispielweg700 von7B besteht das Segment710 aus vier Streifen712 ,714 ,716 ,718 , wobei die einzelnen Pixel (durch Quadratblöcke abgebildet) jedes Streifens712 ,714 ,716 ,718 in 45 Grad-Diagonalen relativ zueinander organisiert sind, und das Segment720 besteht aus fünf Streifen722 ,724 ,726 ,728 ,730 , wobei die einzelnen Pixel jedes Streifens722 ,724 ,726 ,728 ,730 relativ zueinander horizontal organisiert sind. - Bei einer Ausführungsform und mit Bezug auf
7B und8A analysiert der Server-Agent160 den Weg700 zu Liniensegmenten710 ,720 jeweils mit einer bestimmten Länge und einem bestimmten Winkel (Schritt810 ). Dann wird ein Array von Liniensegmenten gebildet, um quantisierte Segmentinformationen (die im folgenden als quantisierter Winkel oder "QA" bezeichnet werden) für jedes Liniensegment710 ,720 zu speichern (Schritt820 ). Auch mit Bezug auf8B bestimmt der Server-Agent160 , statt den mit einem bestimmten Segment710 ,720 assoziierten Absolutwinkel zu berechnen, stattdessen, in welchem der sechzehn quantisierten Winkel880 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 Liniensegment710 ,720 dann zu Streifen (712 ,714 ,716 ,718 bzw.722 ,724 ,726 ,728 ,730 ) (Schritt830 ). Die Länge jedes Streifens eines bestimmten Segments710 ,720 wird danach zur weiteren Verarbeitung in einem Streifenlängenarray gespeichert (Schritt840 ). Bei einer Ausführungsform wird der Algorithmus bLine von Windows NT verwendet, um den Weg700 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-Agent160 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 Weges700 zusammen mit den quantisierten Winkeldaten in dem Liniensegmentarray und den Pixellängendaten in dem Streifenlängenarray zur Bildung eines Protokollstroms (Schritt850 ). Die codierten Daten werden dann einem Komprimierungsalgorithmus unterzogen, um die Datenredundanzen in dem Protokollstrom auszunutzen (Schritt860 ), und die komprimierten graphischen Liniendaten werden danach zur Decodierung und weiteren Verarbeitung zu dem Client-Agent118 übertragen (Schritt870 ). - Mit Bezug auf die beispielhafte Darstellung in
9 und die quantisierten Winkelinformationen von10 umfaßt das Liniensegment710 vier Streifen712 ,714 ,716 ,718 , die in dem quantisierten Winkel 1 positioniert sind. Die Anfangskoordinate des Weges700 , die aus dem Server-Agenten160 zu dem Client-Agenten118 als Teil der komprimierten graphischen Liniendaten übertragen wird, entspricht dem ersten Pixel in dem Streifen712 (positioniert am Ursprung von880 ). Die graphischen Liniendaten enthalten ferner die Pixellänge jedes Streifens712 ,714 ,716 ,718 in dem Segment710 . Da das Segment710 nicht einer perfekt horizontalen, vertikalen oder in einem Winkel von 45 Grad liegenden Diagonalen entspricht, wird jeder nachfolgende Streifen714 ,716 und718 in dem Segment710 wie in10 angegeben um einen bestimmten Deltawert eingestellt, um den Gesamtwinkel des Segments710 richtig zu approximieren. Um in dem vorliegenden Beispiel von dem letzten Punkt in dem vorherigen Streifen712 zu dem Anfangspunkt des nächsten nachfolgenden Streifens714 zu gelangen, zeigt der Client-Agent118 den Streifen714 mit im wesentlichen demselben x-Wert und einem zunehmenden y-Wert an. Dieser Prozeß wird für jeden Streifen in dem Segment710 sowie für die Streifen in dem Segment720 , 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 in10 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-Agenten118 ü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 Anzeigeschirm128 des Client110 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-Agenten160 über die Menge an lokalem flüchtigem Speicher114 , der für Off-Screen-Oberflächen verfügbar ist, so daß der Server-Agent160 keine Off-Screen-Oberfläche bildet, die größer als der verfügbare Speicher des Client ist. Der Server-Agent160 bildet danach eine Off-Screen-Oberfläche und sendet sie zu dem Client-Agenten118 zusammen mit Anweisungen zum Speichern der Oberfläche in seinem flüchtigen Speicher114 . Der Client-Agent118 wählt einen bestimmten Teil seines flüchtigen Speichers114 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-Agent160 bei einer Ausführungsform Befehle an den Client-Agenten118 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 Netzwerk140 übertragen werden muß, reduzieren. Alternativ dazu kann die Quelle der On-Screen-Oberfläche darauf beschränkt werden, entweder einer abgesetzt im Server150 gespeicherten Off-Screen-Oberfläche zu entsprechen oder einer lokal in dem Client110 gespeicherten Off-Screen-Oberfläche. Typische Operationen an der Off-Screen-Oberfläche, die der Server-Agent160 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-Agent160 Aufrufe an das Server-Betriebssystem156 im Bezug auf die Erzeugung einer Off-Screen-Oberfläche ab und der Server-Agent160 bildet ein Duplikat der Oberfläche und speichert sie zusammen mit ihren Attributen in dem lokalen Speicher des Servers. Der Server-Agent160 gibt dann einen Befehl zum Bilden der Off-Screen-Oberfläche in dem flüchtigen Speicher114 des Client an den Client-Agenten118 aus (Schritt1102 ). 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 (Schritt1104 ). Der Server-Agent160 weist den Client-Agenten118 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 (Schritt1106 ). Der Client-Agent118 reagiert auf die Anweisungen des Server-Agenten, indem er die identifizierte Oberfläche bzw. Bitmap in die Off-Screen-Oberfläche des Client kopiert (Schritt1108 ). Wenn ein von dem Server-Agenten160 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-Agent118 einen C2S_OSS_Error-Befehl zu dem Server-Agenten160 , der den erfolglos-Zustand anzeigt (Schritt1110 ). Als Reaktion auf den Fehlerzustand verwendet der Server-Agent160 seine lokale Kopie der Off-Screen-Oberfläche als Quelle zur Aktualisierung der Off-Screen-Oberfläche des Client. Der Client-Agent118 aktualisiert mit den aus der lokalen Kopie des Servers empfangenen Informationen die Off-Screen-Oberfläche auf dem Client110 und korrigiert etwaige verfälschte/verunreinigte Regionen der Off-Screen-Oberfläche. Alternativ dazu sendet der Server-Agent160 , wenn ein Fehlerzustand angetroffen wird, seine lokale bzw. Duplikatkopie der Off-Screen-Oberfläche (Schritt1112 ) zu dem Client-Agenten118 und weist den Client-Agenten118 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 (Schritt1114 ). - 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)
- 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. - 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 ). - 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. - 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. - Verfahren nach einem der vorhergehenden Ansprüche, wobei das Indicia des quantisierten Winkels einem quantisierten Winkel-Delta entspricht.
- 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 ). - 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. - 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 ). - 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. - 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. - 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. - System nach Anspruch 7, wobei der Server-Agent (
160 ) weiterhin so angeordnet ist, daß er im Betrieb das Koordinatensystem zu mehreren quantisierten Winkeln quantisiert. - 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. - 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. - 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. - 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. - 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.
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 |
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 |
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 |
Family Applications Before (1)
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 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE60109631T Expired - Lifetime DE60109631T2 (de) | 2000-05-26 | 2001-05-29 | Verfahren und Vorrichtung zur effizienten Verringerung von graphischen Anzeigedaten für ihre Übertragung mittels eines Übertragungsprotokolls für niedrige Bandbreiten |
DE60109602T Expired - Lifetime DE60109602T2 (de) | 2000-05-26 | 2001-05-29 | Verfahren und vorrichtung zur effizienten verringerung von graphischen anzeigedaten für ihre übertragung mittels eines übertragungsprotokolls für niedrige bandbreiten |
Country Status (11)
Country | Link |
---|---|
US (7) | US20020029285A1 (de) |
EP (1) | EP1285517B1 (de) |
JP (1) | JP2004501445A (de) |
KR (4) | KR100783217B1 (de) |
AU (3) | AU2001274972A1 (de) |
CA (1) | CA2408924A1 (de) |
DE (4) | DE60112103T2 (de) |
ES (4) | ES2246432T3 (de) |
HK (1) | HK1049415B (de) |
IL (3) | IL152797A0 (de) |
WO (2) | WO2001093525A2 (de) |
Families Citing this family (204)
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 |
US7904187B2 (en) | 1999-02-01 | 2011-03-08 | Hoffberg Steven M | Internet appliance system and method |
US7127425B1 (en) * | 2000-01-14 | 2006-10-24 | H & R Block Tax Services, Inc. | System and method for providing a loan to a taxpayer based on a pre year-end tax refund |
US20020029285A1 (en) * | 2000-05-26 | 2002-03-07 | Henry Collins | Adapting graphical data, processing activity to changing network conditions |
US7117239B1 (en) | 2000-07-28 | 2006-10-03 | Axeda Corporation | Reporting the state of an apparatus to a remote computer |
US7603407B2 (en) * | 2000-08-17 | 2009-10-13 | Sun Microsystems, Inc. | Method and system for registering binary data |
US8108543B2 (en) | 2000-09-22 | 2012-01-31 | Axeda Corporation | Retrieving data from a server |
US7185014B1 (en) | 2000-09-22 | 2007-02-27 | Axeda Corporation | Retrieving data from a server |
US20030017846A1 (en) * | 2001-06-12 | 2003-01-23 | Estevez Leonardo W. | Wireless display |
EP1423972A1 (de) * | 2001-08-27 | 2004-06-02 | Koninklijke Philips Electronics N.V. | Cachespeicher |
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 |
US7916147B2 (en) | 2002-03-01 | 2011-03-29 | 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 |
US7650510B2 (en) * | 2002-04-30 | 2010-01-19 | 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 |
US7046250B1 (en) | 2002-07-11 | 2006-05-16 | Sun Microsystems, Inc. | Caching fonts for improved bandwidth of transmitted text |
US20040008213A1 (en) * | 2002-07-11 | 2004-01-15 | Sun Microsystems, Inc., A Delaware Corporation | Tagging multicolor images for improved compression |
US20040008205A1 (en) * | 2002-07-11 | 2004-01-15 | Sun Microsystems, Inc., A Delaware Corporation | Tagging single-color images for improved compression |
US8370420B1 (en) * | 2002-07-11 | 2013-02-05 | Citrix Systems, Inc. | Web-integrated display of locally stored content objects |
US20040008214A1 (en) * | 2002-07-11 | 2004-01-15 | Sun Microsystems, Inc., A Delaware Corporation | Tagging repeating images for improved compression |
US20050102352A1 (en) * | 2002-09-24 | 2005-05-12 | Junbiao Zhang | Constrained user interface in a communications network |
US7966418B2 (en) | 2003-02-21 | 2011-06-21 | Axeda Corporation | Establishing a virtual tunnel between two computer programs |
AU2003233046A1 (en) * | 2003-04-23 | 2004-11-19 | Telecom Italia S.P.A. | A client-server system and method thereof for providing multimedia and interactive services to mobile terminals |
WO2004107131A2 (en) * | 2003-05-28 | 2004-12-09 | Caymas Systems, Inc. | Policy based network address translation |
JP2007505580A (ja) * | 2003-09-12 | 2007-03-08 | サイトリックス システムズ, インコーポレイテッド | シンクライアントにおいてグラフィカルおよびメディア表示を生成するための方法および装置 |
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 | 삼성전자주식회사 | 클라이언트에 실행된 윈도우의 상태에 따라데이터전송률을 조정하는 홈네트워크 시스템 및데이터전송률 조정방법 |
US8495305B2 (en) | 2004-06-30 | 2013-07-23 | Citrix Systems, Inc. | Method and device for performing caching of dynamically generated objects in a data communication network |
US7757074B2 (en) | 2004-06-30 | 2010-07-13 | Citrix Application Networking, Llc | System and method for establishing a virtual private network |
US8739274B2 (en) | 2004-06-30 | 2014-05-27 | Citrix Systems, Inc. | Method and device for performing integrated caching in a data communication network |
WO2006017198A2 (en) * | 2004-07-08 | 2006-02-16 | Actuality Systems, Inc. | Architecture for rendering graphics on output devices |
EP1771979B1 (de) * | 2004-07-23 | 2011-11-23 | Citrix Systems, Inc. | Verfahren und system zur sicherung von zugriff aus der ferne auf private netze |
EP1771998B1 (de) | 2004-07-23 | 2015-04-15 | Citrix Systems, Inc. | Systeme und verfahren zur kommunikationsoptimierung zwischen netzwerkknoten |
US7287139B2 (en) * | 2004-07-23 | 2007-10-23 | International Business Machines Corporation | Maintenance of persistent data using bitmaps |
US7657657B2 (en) * | 2004-08-13 | 2010-02-02 | Citrix Systems, Inc. | Method for maintaining transaction integrity across multiple remote access servers |
US7483963B2 (en) * | 2004-08-20 | 2009-01-27 | Research In Motion Limited | Method and system for configuring a client on host devices by utilizing an interface between a configuration application and host device drivers on a configuring device |
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 |
US7774789B1 (en) | 2004-10-28 | 2010-08-10 | Wheeler Thomas T | Creating a proxy object and providing information related to a proxy object |
US8266631B1 (en) | 2004-10-28 | 2012-09-11 | Curen Software Enterprises, L.L.C. | Calling a second functionality by a first functionality |
US20070055386A1 (en) * | 2004-11-03 | 2007-03-08 | Rockwell Automation Technologies, Inc. | Abstracted display building method and system |
US7589731B2 (en) * | 2004-11-15 | 2009-09-15 | Hewlett-Packard Development Company, L.P. | Graphics systems and methods |
US7716683B2 (en) * | 2004-12-30 | 2010-05-11 | Graphics Properties Holdings, Inc. | Distributed graphics processing apparatus and method |
US8706877B2 (en) | 2004-12-30 | 2014-04-22 | Citrix Systems, Inc. | Systems and methods for providing client-side dynamic redirection to bypass an intermediary |
US7810089B2 (en) | 2004-12-30 | 2010-10-05 | Citrix Systems, Inc. | Systems and methods for automatic installation and execution of a client-side acceleration program |
US8549149B2 (en) | 2004-12-30 | 2013-10-01 | Citrix Systems, Inc. | Systems and methods for providing client-side accelerated access to remote applications via TCP multiplexing |
US8700695B2 (en) | 2004-12-30 | 2014-04-15 | Citrix Systems, Inc. | Systems and methods for providing client-side accelerated access to remote applications via TCP pooling |
US8954595B2 (en) | 2004-12-30 | 2015-02-10 | Citrix Systems, Inc. | Systems and methods for providing client-side accelerated access to remote applications via TCP buffering |
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 |
US8200828B2 (en) * | 2005-01-14 | 2012-06-12 | Citrix Systems, Inc. | Systems and methods for single stack shadowing |
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 |
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 |
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 |
US8145777B2 (en) | 2005-01-14 | 2012-03-27 | Citrix Systems, Inc. | Method and system for real-time seeking during playback of remote presentation protocols |
US8340130B2 (en) * | 2005-01-14 | 2012-12-25 | Citrix Systems, Inc. | Methods and systems for generating playback instructions for rendering of a recorded computer session |
US7711695B2 (en) * | 2005-01-18 | 2010-05-04 | Oracle International Corporation | Reducing memory used by metadata for duplicate user defined types |
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 |
JP5183214B2 (ja) | 2005-01-24 | 2013-04-17 | サイトリックス システムズ,インコーポレイテッド | ネットワークにおいて動的に生成されたオブジェクトのキャッシングを実行するためのシステムおよび方法 |
US8423673B2 (en) | 2005-03-14 | 2013-04-16 | Citrix Systems, Inc. | Method and apparatus for updating a graphical display in a distributed processing environment using compression |
US8171169B2 (en) * | 2005-03-14 | 2012-05-01 | Citrix Systems, Inc. | Method and apparatus for updating a graphical display in a distributed processing environment |
US7861212B1 (en) | 2005-03-22 | 2010-12-28 | Dubagunta Saikumar V | System, method, and computer readable medium for integrating an original application with a remote application |
US8578349B1 (en) | 2005-03-23 | 2013-11-05 | Curen Software Enterprises, L.L.C. | System, method, and computer readable medium for integrating an original language application with a target language application |
US8200796B1 (en) | 2005-05-05 | 2012-06-12 | Digital Display Innovations, Llc | Graphics display system for multiple remote terminals |
US8019883B1 (en) | 2005-05-05 | 2011-09-13 | Digital Display Innovations, Llc | WiFi peripheral mode display system |
US11733958B2 (en) | 2005-05-05 | 2023-08-22 | Iii Holdings 1, Llc | Wireless mesh-enabled system, host device, and method for use therewith |
US8386628B1 (en) | 2005-05-23 | 2013-02-26 | Glance Networks, Inc. | Method and apparatus for reducing the amount of information that must be transmitted to slower viewers over a remote viewing session |
US8074248B2 (en) | 2005-07-26 | 2011-12-06 | Activevideo Networks, Inc. | System and method for providing video content associated with a source image to a television in a communication network |
US7844442B2 (en) * | 2005-08-16 | 2010-11-30 | Exent Technologies, Ltd. | System and method for providing a remote user interface for an application executing on a computing device |
US20110157196A1 (en) * | 2005-08-16 | 2011-06-30 | Exent Technologies, Ltd. | Remote gaming features |
US8527563B2 (en) * | 2005-09-12 | 2013-09-03 | Microsoft Corporation | Remoting redirection layer for graphics device interface |
US8191008B2 (en) | 2005-10-03 | 2012-05-29 | Citrix Systems, Inc. | Simulating multi-monitor functionality in a single monitor environment |
US7924884B2 (en) * | 2005-12-20 | 2011-04-12 | Citrix Systems, Inc. | Performance logging using relative differentials and skip recording |
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 |
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 |
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 |
EP1992118B1 (de) * | 2006-03-07 | 2011-09-14 | Thomson Licensing | Kommunikationsvorrichtung und basis für erweiterte anzeige |
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 |
US8493858B2 (en) | 2006-08-22 | 2013-07-23 | Citrix Systems, Inc | Systems and methods for providing dynamic connection spillover among virtual servers |
US8312120B2 (en) * | 2006-08-22 | 2012-11-13 | Citrix Systems, Inc. | Systems and methods for providing dynamic spillover of virtual servers based on bandwidth |
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 |
US20100146139A1 (en) * | 2006-09-29 | 2010-06-10 | Avinity Systems B.V. | Method for streaming parallel user sessions, system and computer software |
US8370479B2 (en) | 2006-10-03 | 2013-02-05 | Axeda Acquisition Corporation | System and method for dynamically grouping devices based on present device conditions |
US7702603B1 (en) * | 2006-12-22 | 2010-04-20 | Hauser Robert R | Constructing an agent that utilizes a compiled set of canonical rules |
US7860517B1 (en) | 2006-12-22 | 2010-12-28 | Patoskie John P | Mobile device tracking using mobile agent location breadcrumbs |
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 |
US7970724B1 (en) | 2006-12-22 | 2011-06-28 | Curen Software Enterprises, L.L.C. | Execution of a canonical rules based agent |
US8132179B1 (en) | 2006-12-22 | 2012-03-06 | Curen Software Enterprises, L.L.C. | Web service interface for mobile agents |
US7660777B1 (en) * | 2006-12-22 | 2010-02-09 | Hauser Robert R | Using data narrowing rule for data packaging requirement of an agent |
US7698243B1 (en) * | 2006-12-22 | 2010-04-13 | Hauser Robert R | Constructing an agent in a first execution environment using canonical rules |
US7702602B1 (en) | 2006-12-22 | 2010-04-20 | Hauser Robert R | Moving and agent with a canonical rule from one device to a second device |
US9311141B2 (en) | 2006-12-22 | 2016-04-12 | Callahan Cellular L.L.C. | Survival rule usage by software agents |
US7660780B1 (en) | 2006-12-22 | 2010-02-09 | Patoskie John P | Moving an agent from a first execution environment to a second execution environment |
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 |
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 |
US8200603B1 (en) | 2006-12-22 | 2012-06-12 | Curen Software Enterprises, L.L.C. | Construction of an agent that utilizes as-needed canonical rules |
US8423496B1 (en) | 2006-12-22 | 2013-04-16 | Curen Software Enterprises, L.L.C. | Dynamic determination of needed agent rules |
US8065397B2 (en) | 2006-12-26 | 2011-11-22 | Axeda Acquisition Corporation | Managing configurations of distributed devices |
EP2116051A2 (de) | 2007-01-12 | 2009-11-11 | ActiveVideo Networks, Inc. | Mpeg-objekte und systeme und verfahren zur verwendung von mpeg-objekten |
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 |
US8074028B2 (en) | 2007-03-12 | 2011-12-06 | Citrix Systems, Inc. | Systems and methods of providing a multi-tier cache |
US8701010B2 (en) | 2007-03-12 | 2014-04-15 | Citrix Systems, Inc. | Systems and methods of using the refresh button to determine freshness policy |
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 |
US7783757B2 (en) * | 2007-03-12 | 2010-08-24 | Citrix Systems, Inc. | Systems and methods of revalidating cached objects in parallel with request for object |
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 |
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 |
US20080228715A1 (en) * | 2007-03-12 | 2008-09-18 | Terabyte Media, Llc | Apparatus and method for distributed information retrieval and processing |
US7584294B2 (en) | 2007-03-12 | 2009-09-01 | Citrix Systems, Inc. | Systems and methods for prefetching objects for caching using QOS |
US7809818B2 (en) * | 2007-03-12 | 2010-10-05 | Citrix Systems, Inc. | Systems and method of using HTTP head command for prefetching |
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 |
US8044955B1 (en) | 2007-08-31 | 2011-10-25 | Adobe Systems Incorporated | Dynamic tessellation spreading for resolution-independent GPU anti-aliasing and rendering |
US8068106B1 (en) | 2007-08-31 | 2011-11-29 | Adobe Systems Incorporated | Rendering cubic Bézier curves as quadratic curves using a GPU |
US7952580B1 (en) | 2007-08-31 | 2011-05-31 | Adobe Systems Incorporated | Classification of exterior and interior triangles for artwork rendering |
US7928984B1 (en) | 2007-08-31 | 2011-04-19 | Adobe Systems Incorporated | Efficient data packaging for rendering bézier curves on a GPU |
US20090067629A1 (en) * | 2007-09-06 | 2009-03-12 | Paltronics, Inc. | Table-based encryption/decryption techniques for gaming networks, and gaming networks incorporating the same |
US8819288B2 (en) * | 2007-09-14 | 2014-08-26 | Microsoft Corporation | Optimized data stream compression using data-dependent chunking |
US8904044B2 (en) * | 2007-09-28 | 2014-12-02 | International Business Machines Corporation | Adapting compression techniques over data based on context |
US20090094263A1 (en) * | 2007-10-04 | 2009-04-09 | Microsoft Corporation | Enhanced utilization of network bandwidth for transmission of structured data |
US7868887B1 (en) | 2007-10-18 | 2011-01-11 | Adobe Systems Incorporated | Rendering rational quadratic Bézier curves on a GPU |
US8190707B2 (en) | 2007-10-20 | 2012-05-29 | Citrix Systems, Inc. | System and method for transferring data among computing environments |
CN101464785B (zh) * | 2007-12-17 | 2010-12-08 | 联想(北京)有限公司 | 基于wddm的屏幕获取方法及带多显示器的计算机系统 |
EP2293192B1 (de) | 2008-01-27 | 2021-03-31 | Citrix Systems, Inc. | Verfahren und systeme zur löschung dreidimensionaler graphiken |
US9161063B2 (en) | 2008-02-27 | 2015-10-13 | Ncomputing, Inc. | System and method for low bandwidth display information transport |
US8484291B1 (en) | 2008-04-02 | 2013-07-09 | Glance Networks, Inc. | Method and apparatus for selecting commands for transmission from an updated queue |
WO2009143120A2 (en) * | 2008-05-19 | 2009-11-26 | Citrix Systems, Inc. | Systems and methods for enhanced image encoding |
JP5315862B2 (ja) * | 2008-08-29 | 2013-10-16 | カシオ計算機株式会社 | サーバ装置、クライアント装置、およびプログラム |
US8386443B2 (en) * | 2008-10-06 | 2013-02-26 | Dell Products L.P. | Representing and storing an optimized file system using a system of symlinks, hardlinks and file archives |
WO2010042578A1 (en) * | 2008-10-08 | 2010-04-15 | Citrix Systems, Inc. | Systems and methods for real-time endpoint application flow control with network structure component |
US8260926B2 (en) * | 2008-11-25 | 2012-09-04 | Citrix Systems, Inc. | Systems and methods for GSLB site persistence |
US8352561B1 (en) | 2009-07-24 | 2013-01-08 | Google Inc. | Electronic communication reminder technology |
US8751844B2 (en) * | 2009-09-24 | 2014-06-10 | Citrix Systems, Inc. | Systems and methods for attributing an amount of power consumption to a workload |
US8171154B2 (en) * | 2009-09-29 | 2012-05-01 | Net Power And Light, Inc. | Method and system for low-latency transfer protocol |
US8489725B2 (en) * | 2010-07-16 | 2013-07-16 | Research In Motion Limited | Persisting file system information on mobile devices |
EP2609499B1 (de) | 2010-08-27 | 2018-02-21 | Millennium Enterprise Corporation | Elektronische vorrichtung |
EP2616954B1 (de) | 2010-09-18 | 2021-03-31 | Google LLC | Ein verfahren und einen mechanismus zum ferngesteuerten rendern von grafiken |
EP2628306B1 (de) | 2010-10-14 | 2017-11-22 | ActiveVideo Networks, Inc. | Streaming digitaler videoinhalte zwischen videovorrichtungen mithilfe eines kabelfernsehsystems |
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 |
US10042674B2 (en) * | 2011-09-30 | 2018-08-07 | Teradata Us, Inc. | Regulating capacity and managing services of computing environments and systems that include a database |
US9747334B2 (en) * | 2011-09-30 | 2017-08-29 | Teradata Us, Inc. | Managing excess capacity of database systems in a capacity controlled computing environment |
US8681813B2 (en) | 2011-11-29 | 2014-03-25 | Wyse Technology L.L.C. | Bandwidth optimization for remote desktop protocol |
EP2815582B1 (de) | 2012-01-09 | 2019-09-04 | ActiveVideo Networks, Inc. | Wiedergabe einer interaktiven vereinfachten benutzerschnittstelle auf einem fernsehgerät |
US9123084B2 (en) | 2012-04-12 | 2015-09-01 | Activevideo Networks, Inc. | Graphical application integration with MPEG objects |
US20130298199A1 (en) * | 2012-05-02 | 2013-11-07 | Elwha Llc | Control of Transmission to a Target Device with a Cloud-Based Architecture |
US9148331B2 (en) * | 2012-05-02 | 2015-09-29 | Elwha Llc | Control of transmission to a target device with a cloud-based architecture |
US20130297725A1 (en) * | 2012-05-02 | 2013-11-07 | Elwha Llc | Control of Transmission to a Target Device with a Cloud-Based Architecture |
WO2014145921A1 (en) | 2013-03-15 | 2014-09-18 | Activevideo Networks, Inc. | A multiple-mode system and method for providing user selectable video content |
EP3005712A1 (de) | 2013-06-06 | 2016-04-13 | ActiveVideo Networks, Inc. | Überlagerte darstellung einer benutzerschnittstelle auf quellvideoinhalten |
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 |
US9219922B2 (en) | 2013-06-06 | 2015-12-22 | Activevideo Networks, Inc. | System and method for exploiting scene graph information in construction of an encoded video sequence |
US10075630B2 (en) | 2013-07-03 | 2018-09-11 | HJ Laboratories, LLC | Providing real-time, personal services by accessing components on a mobile device |
JP6404347B2 (ja) * | 2013-12-20 | 2018-10-10 | インテル・コーポレーション | 実行オフロード |
EP3097539B1 (de) * | 2014-01-21 | 2023-03-08 | 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 |
US10742812B1 (en) | 2016-10-14 | 2020-08-11 | Allstate Insurance Company | Bilateral communication in a login-free environment |
US11463654B1 (en) * | 2016-10-14 | 2022-10-04 | Allstate Insurance Company | Bilateral communication in a login-free environment |
US10657599B2 (en) | 2016-10-14 | 2020-05-19 | Allstate Insurance Company | Virtual collaboration |
US11582118B2 (en) | 2018-11-15 | 2023-02-14 | Citrix Systems, Inc. | Real-time scalable virtual session and network analytics |
US11627091B2 (en) * | 2019-05-20 | 2023-04-11 | Citrix Systems Inc. | Systems and methods for managing streams of packets via intermediary devices |
CN111031007A (zh) * | 2019-11-22 | 2020-04-17 | 珠海豹趣科技有限公司 | 电子白板间的通信控制方法、装置及服务器 |
Family Cites Families (169)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US29285A (en) * | 1860-07-24 | A M Karr | Improvement in mole-plows | |
US73061A (en) * | 1868-01-07 | Improvement in harrows | ||
US32632A (en) * | 1861-06-25 | Water-elevator | ||
US35596A (en) * | 1862-06-17 | Improvement in envelopes for sewing-needles | ||
US3596257A (en) | 1969-09-17 | 1971-07-27 | Burroughs Corp | Method and apparatus for allocating small memory spaces to a computer program |
US4013828A (en) * | 1976-02-20 | 1977-03-22 | Bell Telephone Laboratories, Incorporated | Method and arrangement for reducing the bandwidth and/or time required to transmit a dithered image |
US4410916A (en) | 1979-08-24 | 1983-10-18 | Compression Labs, Inc. | Dual mode facsimile coding system and method |
DE2939411C2 (de) * | 1979-09-28 | 1982-09-02 | Siemens AG, 1000 Berlin und 8000 München | Datenverarbeitungsanlage mit virtueller Speicheradressierung |
US4322795A (en) | 1980-01-24 | 1982-03-30 | Honeywell Information Systems Inc. | Cache memory utilizing selective clearing and least recently used updating |
US4394732A (en) * | 1980-11-14 | 1983-07-19 | Sperry Corporation | Cache/disk subsystem trickle |
US4463424A (en) * | 1981-02-19 | 1984-07-31 | International Business Machines Corporation | Method for dynamically allocating LRU/MRU managed memory among concurrent sequential processes |
US4562423A (en) | 1981-10-15 | 1985-12-31 | Codex Corporation | Data compression |
US4430712A (en) * | 1981-11-27 | 1984-02-07 | Storage Technology Corporation | Adaptive domain partitioning of cache memory space |
US4503501A (en) * | 1981-11-27 | 1985-03-05 | Storage Technology Corporation | Adaptive domain partitioning of cache memory space |
USRE32632E (en) | 1982-07-19 | 1988-03-29 | Apple Computer, Inc. | Display system |
JPS5949071A (ja) * | 1982-09-13 | 1984-03-21 | Dainippon Screen Mfg Co Ltd | 図形輪郭デ−タ圧縮方法 |
US4499499A (en) * | 1982-12-29 | 1985-02-12 | International Business Machines Corporation | Method for identification and compression of facsimile symbols in text processing systems |
US4545016A (en) | 1983-01-07 | 1985-10-01 | Tandy Corporation | Memory management system |
DE3483489D1 (de) * | 1983-04-13 | 1990-12-06 | Nec Corp | Speicherzugriffseinrichtung in einem datenverarbeitungssystem. |
JP2785821B2 (ja) | 1983-10-07 | 1998-08-13 | ソニー株式会社 | デイジタル信号発生回路 |
US4796003A (en) | 1984-06-28 | 1989-01-03 | American Telephone And Telegraph Company | Data compaction |
GB2172127B (en) | 1985-03-06 | 1988-10-12 | Ferranti Plc | Data compression system |
JPS62282328A (ja) * | 1986-02-21 | 1987-12-08 | Hitachi Ltd | 多重画面制御方式 |
US4899149A (en) | 1986-02-28 | 1990-02-06 | Gary Kahan | Method of and apparatus for decoding Huffman or variable-length coees |
US4862392A (en) | 1986-03-07 | 1989-08-29 | Star Technologies, Inc. | Geometry processor for graphics display system |
US4937036A (en) * | 1986-04-28 | 1990-06-26 | Xerox Corporation | Concurrent display of data from two different display processors and user interface therefore |
JP2608400B2 (ja) | 1986-06-16 | 1997-05-07 | 富士写真フイルム株式会社 | 圧縮処理を経た画像データからの画像再構成方法 |
US4862167A (en) | 1987-02-24 | 1989-08-29 | Hayes Microcomputer Products, Inc. | Adaptive data compression method and apparatus |
US5072412A (en) | 1987-03-25 | 1991-12-10 | Xerox Corporation | User interface with multiple workspaces for sharing display system objects |
US4949281A (en) * | 1987-04-23 | 1990-08-14 | H. Berthold Ag | Method and apparatus for generating and producing two-dimensional graphic object by polynominal parametric curves |
US4992954A (en) * | 1987-08-05 | 1991-02-12 | Hitachi, Ltd. | Method of storing character patterns and character pattern utilization system |
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 |
US4903218A (en) * | 1987-08-13 | 1990-02-20 | Digital Equipment Corporation | Console emulation for a graphics workstation |
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 |
CA1337132C (en) | 1988-07-15 | 1995-09-26 | Robert Filepp | Reception system for an 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 |
US5016009A (en) * | 1989-01-13 | 1991-05-14 | Stac, Inc. | Data compression apparatus and method |
US5126739A (en) * | 1989-01-13 | 1992-06-30 | Stac Electronics | Data compression apparatus and method |
EP0389151A3 (de) | 1989-03-22 | 1992-06-03 | International Business Machines Corporation | System und Verfahren für die Verwaltung eines verteilten Cache-Speichers |
US5394531A (en) | 1989-04-03 | 1995-02-28 | International Business Machines Corporation | Dynamic storage allocation system for a prioritized cache |
KR930003126B1 (ko) * | 1989-04-20 | 1993-04-19 | 가부시기가이샤 도시바 | 곡선정합에 있어서 형상을 표시하는 직선쇼트벡터의 접속상태를 판정하는 방법 및 시스템 |
US5305440A (en) | 1989-05-15 | 1994-04-19 | International Business Machines Corporation | File extension by clients in a distributed data processing system |
JP2858795B2 (ja) | 1989-07-14 | 1999-02-17 | 株式会社日立製作所 | 実記憶割り当て方法 |
EP0416768B1 (de) | 1989-09-08 | 1998-06-17 | Digital Equipment Corporation | Privatspeicher für Fäden in einem multifaden digitalen Datenverarbeitungssystem |
JP2805096B2 (ja) | 1989-10-31 | 1998-09-30 | ソニー株式会社 | ディジタル変調方法及び復調方法 |
US5119319A (en) * | 1989-12-14 | 1992-06-02 | Options Unlimited Research Corp. | Full-duplex video communication system |
US5077669A (en) | 1989-12-27 | 1991-12-31 | International Business Machines Corporation | Method for quasi-key search within a national language support (nls) data processing system |
US5001478A (en) * | 1989-12-28 | 1991-03-19 | International Business Machines Corporation | Method of encoding compressed data |
US5309555A (en) * | 1990-05-15 | 1994-05-03 | International Business Machines Corporation | Realtime communication of hand drawn images in a multiprogramming window environment |
US5269003A (en) | 1990-05-24 | 1993-12-07 | Apple Computer, Inc. | Memory architecture for storing twisted pixels |
US5049881A (en) | 1990-06-18 | 1991-09-17 | Intersecting Concepts, Inc. | Apparatus and method for very high data rate-compression incorporating lossless data compression and expansion utilizing a hashing technique |
CA2045788A1 (en) | 1990-06-29 | 1991-12-30 | Kadangode K. Ramakrishnan | Cache arrangement for file system in digital data processing system |
US5051745A (en) * | 1990-08-21 | 1991-09-24 | Pkware, Inc. | String searcher, and compressor using same |
JP3189276B2 (ja) * | 1990-09-12 | 2001-07-16 | ブラザー工業株式会社 | データ変換装置 |
JPH0799508B2 (ja) * | 1990-10-15 | 1995-10-25 | インターナショナル・ビジネス・マシーンズ・コーポレイション | キャッシュ記憶機構を動的に区分する方法およびキャッシュ記憶機構システム |
US5544317A (en) * | 1990-11-20 | 1996-08-06 | Berg; David A. | Method for continuing transmission of commands for interactive graphics presentation in a computer network |
US5241625A (en) * | 1990-11-27 | 1993-08-31 | Farallon Computing, Inc. | Screen image sharing among heterogeneous computers |
US5339411A (en) | 1990-12-21 | 1994-08-16 | Pitney Bowes Inc. | Method for managing allocation of memory space |
DE69126414T2 (de) * | 1990-12-26 | 1997-10-30 | Canon Kk | Multimedia-Kommunikationsapparat |
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 |
US5321806A (en) * | 1991-08-21 | 1994-06-14 | Digital Equipment Corporation | Method and apparatus for transmitting graphics command in a computer graphics system |
US5315698A (en) * | 1991-08-21 | 1994-05-24 | Digital Equipment Corporation | Method and apparatus for varying command length 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 |
EP0606461B1 (de) | 1992-07-24 | 1999-11-24 | Microsoft Corporation | Rechnerverfahren und system zur zuordnung und zur freigabe von speichern. |
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 |
EP0594196B1 (de) | 1992-10-22 | 1999-03-31 | 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 |
US5850540A (en) | 1993-07-02 | 1998-12-15 | Sony Corporation | 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 |
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 |
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 |
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 |
AU698055B2 (en) * | 1994-07-14 | 1998-10-22 | 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 |
US6061714A (en) * | 1997-05-07 | 2000-05-09 | International Business Machines Corporation | Persistent cache synchronization and start up system |
US5907678A (en) * | 1997-05-07 | 1999-05-25 | International Business Machines Corporation | Client/server system in which protocol caches for multiple sessions are selectively copied into a common checkpoint cache upon receiving a checkpoint request |
US5983190A (en) * | 1997-05-19 | 1999-11-09 | Microsoft Corporation | Client server animation system for managing interactive user interface characters |
US5877757A (en) * | 1997-05-23 | 1999-03-02 | International Business Machines Corporation | Method and system for providing user help information in network applications |
US6181711B1 (en) * | 1997-06-26 | 2001-01-30 | Cisco Systems, Inc. | System and method for transporting a compressed video and data bit stream over a communication channel |
US5999950A (en) | 1997-08-11 | 1999-12-07 | Webtv Networks, Inc. | Japanese text input method using a keyboard with only base kana characters |
US5999179A (en) | 1997-11-17 | 1999-12-07 | Fujitsu Limited | Platform independent computer network management client |
US6489956B1 (en) * | 1998-02-17 | 2002-12-03 | Sun Microsystems, Inc. | Graphics system having a super-sampled sample buffer with generation of output pixels using selective adjustment of filtering for implementation of display effects |
US6408029B1 (en) | 1998-04-02 | 2002-06-18 | Intel Corporation | Method and apparatus for simplifying real-time data encoding |
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 |
WO1999059283A2 (en) * | 1998-05-08 | 1999-11-18 | 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 |
AU2001253563A1 (en) | 2000-04-18 | 2001-10-30 | Rtimage Inc. | System and method for the lossless progressive streaming of images over a communication network |
US20020029285A1 (en) * | 2000-05-26 | 2002-03-07 | Henry Collins | Adapting graphical data, processing activity to changing network conditions |
US7092740B1 (en) | 2001-04-20 | 2006-08-15 | Trilogy Development Group, Inc. | High density information presentation using space-constrained display device |
JP2007099007A (ja) * | 2005-09-30 | 2007-04-19 | Auto Network Gijutsu Kenkyusho:Kk | ワイヤハーネスの配索構造 |
JP2008002007A (ja) * | 2006-06-21 | 2008-01-10 | Daiwabo Co Ltd | ナノ粒子担持材料およびその製造方法 |
JP4873139B2 (ja) * | 2006-06-23 | 2012-02-08 | Nok株式会社 | ガスケットの製造方法 |
-
2001
- 2001-05-25 US US09/866,374 patent/US20020029285A1/en not_active Abandoned
- 2001-05-25 AU AU2001274972A patent/AU2001274972A1/en not_active Abandoned
- 2001-05-25 US US09/866,520 patent/US7127525B2/en not_active Expired - Lifetime
- 2001-05-25 US US09/866,531 patent/US7028025B2/en not_active Expired - Lifetime
- 2001-05-25 WO PCT/US2001/017059 patent/WO2001093525A2/en active Application Filing
- 2001-05-25 US US09/866,375 patent/US7490166B2/en active Active
- 2001-05-29 AU AU6349001A patent/AU6349001A/xx active Pending
- 2001-05-29 DE DE60112103T patent/DE60112103T2/de not_active Expired - Lifetime
- 2001-05-29 JP JP2002501120A patent/JP2004501445A/ja not_active Withdrawn
- 2001-05-29 IL IL15279701A patent/IL152797A0/xx active IP Right Grant
- 2001-05-29 EP EP01937791A patent/EP1285517B1/de not_active Expired - Lifetime
- 2001-05-29 DE DE60112107T patent/DE60112107T2/de not_active Expired - Lifetime
- 2001-05-29 KR KR1020077013942A patent/KR100783217B1/ko active IP Right Grant
- 2001-05-29 CA CA002408924A patent/CA2408924A1/en not_active Abandoned
- 2001-05-29 WO PCT/US2001/017323 patent/WO2001092973A2/en active Application Filing
- 2001-05-29 ES ES03005803T patent/ES2246432T3/es not_active Expired - Lifetime
- 2001-05-29 KR KR1020027016060A patent/KR100783216B1/ko active IP Right Grant
- 2001-05-29 KR KR1020077013944A patent/KR100824120B1/ko active IP Right Grant
- 2001-05-29 DE DE60109631T patent/DE60109631T2/de not_active Expired - Lifetime
- 2001-05-29 ES ES03005805T patent/ES2240872T3/es not_active Expired - Lifetime
- 2001-05-29 DE DE60109602T patent/DE60109602T2/de not_active Expired - Lifetime
- 2001-05-29 ES ES03005806T patent/ES2246433T3/es not_active Expired - Lifetime
- 2001-05-29 AU AU2001263490A patent/AU2001263490B2/en not_active Expired
- 2001-05-29 ES ES01937791T patent/ES2240461T3/es not_active Expired - Lifetime
- 2001-05-29 KR KR1020077013943A patent/KR100824121B1/ko active IP Right Grant
-
2002
- 2002-11-12 IL IL152797A patent/IL152797A/en unknown
-
2003
- 2003-02-27 HK HK03101450.8A patent/HK1049415B/zh not_active IP Right Cessation
-
2006
- 2006-03-03 US US11/368,235 patent/US7502784B2/en not_active Expired - Fee Related
-
2007
- 2007-07-29 IL IL184891A patent/IL184891A/en active IP Right Grant
-
2009
- 2009-02-06 US US12/366,861 patent/US8099389B2/en not_active Expired - Fee Related
-
2010
- 2010-02-19 US US12/709,179 patent/US8290907B2/en not_active Expired - Lifetime
Also Published As
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 | |
DE60033286T2 (de) | System und verfahren zur bereitstellung einer unmittelbaren visuellen antwort auf eine benutzereingabe in einem anwendersystem | |
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 |