-
Bereich der
Erfindung
-
Die
vorliegende Erfindung bezieht sich allgemein auf Systeme, Verfahren
und Datenstrukturen zur Übertragung
von Nachrichten über
ein Rechner-Rechner-Netzwerk (engl. peer to peer network). Derartige
Systeme, Verfahren und Datenstrukturen können z.B. verwendet werden,
um Nachrichten über transiente
Verbindungen an Teilnehmer einer gemeinschaftlichen Sitzung, wie
z.B. einer „elektronischen
Weißwandtafel"-Sitzung oder dergleichen,
zu übertragen.
-
Hintergrund
-
Verschiedene
kollaborative Anwendungen sind bekannt, die es den Benutzern an
verschiedenen Arbeitsplatzrechnern erlauben, gleichzeitig elektronische
Daten und Informationen miteinander zu teilen und gleichzeitig die
gleichen Informationen zu sehen, Änderungen an der Information
in Echtzeit vorzunehmen und die geänderten Informationen zu sehen
(ähnlich
wie in einer „elektronischen
Weißwandtafel"-Sitzung, einer „NetMeeting"-Sitzung („NetMeeting" ist ein eingetragenes
Warenzeichen der Microsoft Corporation, Redmond, Washington) oder
einer „WebEx-Sitzung" („WebEx" ist ein eingetragenes
Warenzeichen der WebEx Communication Corporated, San Jose, Californien).
Derartige Anwendungen verwenden gewöhnlicher Weise einen gemeinsamen
Server und alle Teilnehmer verbinden sich mit der Anwendung und
der elektronischen Weißwandtafelsitzung über den
gemeinsamen Server. So wie die verschiedenen Sitzungsteilnehmer Datennachrichten
senden, die Daten hinzufügen,
löschen
und/oder auf andere Weise ändern,
verarbeitet der Server die Nachrichten und stellt das Ergebnis den
Teilnehmern zur Verfügung.
-
In
vielen Fällen
werden zwei oder mehr Sitzungsteilnehmer eingehende und möglicherweise
zu im System bestehenden Daten widersprüchliche Nachrichten an die
elektronische Weißwandtafel
senden. In einem derartigen Fall entscheidet der Server, welche
der eingehenden Datennachrichten verarbeitet werden sowie über die
Verarbeitungsreihenfolge der eingehenden Signale und löst sich
widersprechende und/oder inkonsistente eingehende Nachrichtendateninstruktionen
gemäß eines
vorbestimmen Protokolls (typischerweise nach der Eingangszeit) auf.
-
Alternativ
wird in manchen Fällen
anstelle der Verbindung zu einem gemeinsamen Server der Computer
eines Sitzungsteilnehmers zum de facto „Server" erklärt. In diesem Fall löst der Computer
dieses Teilnehmers widersprüchliche
oder eingehende Nachrichtendaten (wiederum typischerweise basierend
auf der Eingangszeit der Datennachrichten an diesem Computer) auf.
-
Während derartige
verfügbare
elektronische Weißwandtafelsitzungen,
die einen tatsächlichen
de facto-Server verwenden, nützlich
sind, besitzen sie doch bestimmte Nachteile, die ihre Nützlichkeit
begrenzen. So kann z.B. das Einrichten einer elektronischen Weißwandtafelsitzung
und die Benachrichtigung potentieller Teilnehmer über die
zur Teilnahme an der Sitzung erforderliche Information eine zeitaufwendige
und komplizierte Aktion sein, insbesondere wenn zahlreiche Teilnehmer
eingebunden werden müssen.
Die Benutzer müssen
sich typischerweise in der Sitzung unter Verwendung eines zuvor
erhaltenen Passworts und anderer Verbindungsinformationen anmelden.
Es kann zumindest in manchen Fällen
für die
Seite, die die elektronische Weißwandtafelsitzung einrichtet,
schwierig sein, zu entscheiden, wer die Anmeldeinformation empfangen
und darauf Zugriff haben soll. Während
diese Sicherheit in manchen Situationen für sicherheitsrelevante Kommunikationen
nötig sein
kann, macht es diese Anforderung der Vorausplanung unbequem und
manchmal unmöglich,
elektronische Weißwandtafelkommunikationen
zu verwenden, insbesondere wenn eine Sitzung aus dem Stegreif erforderlich
ist. Wenn außerdem
eine potentielle Teilnehmerin die erforderliche Anmeldeinformation
nicht erhält
oder nicht finden kann, mag sie nicht in der Lage sein, an der Sitzung teilzunehmen
oder nur wesentlich verspätet
teilnehmen. Zusätzlich
kennen möglicherweise
viele Benutzer nicht den Server, der für die verschiedenen Arten von
Sitzungen zu verwenden ist, was ihre Möglichkeiten, an der Sitzung
teilzunehmen, behindert.
-
Viele
Kommunikationen erfordern nicht diesen Grad an Sicherheit. Zum Beispiel
Benutzer einer einzigen Firma, die in den Räumen der Firma über ein
lokales Netz oder ein Intranet kommunizieren, würden diese zusätzlichen
Anmelde- und Sicherheitsfunktionen einer typischen elektronischen
Weißwandtafelkommunikation
möglicherweise
nicht benötigen.
-
Außerdem kann
die Verwendung eines einzigen Servers (eines tatsächlichen
oder de facto-Servers) Probleme mit der Datenübertragung verursachen, wenn
die Übertragung aus
irgendeinem Grund unterbrochen wird. Übertragungsunterbrechungen treten
häufig
auf, insbesondere für
Benutzer, die mit dem System über
vorübergehende
Verbindungen, wie z.B. drahtlose Verbindungen, verbunden sind. Die
Unterbrechung einer drahtlosen Verbindung (oder einer anderen Verbindung)
kann dazu führen, dass
sich der Benutzer in der Sitzung erneut anmelden muss, wodurch Verzögerungen
und Kommunikationsschwierigkeiten verursacht werden. Wenn außerdem der
Benutzer des Computers, der als der de facto-Server dient, die Sitzung
aus irgendeinem Grund verlässt,
kann dies zu einer Unterbrechung und/oder einem Sitzungsfehler für die anderen
Teilnehmer führen.
-
Demzufolge
besteht im Stand der Technik ein Bedarf für eine Anwendung, die es einer
Mehrzahl von Benutzern erlaubt, zuverlässig miteinander unter Verwendung
von Datennachrichten in gemeinschaftlicher Weise (z.B. in einer
elektronischen Weißwandtafelsitzung)
zu kommunizieren, die eine oder mehrere der verschiedenen oben beschriebenen Nachteile
vermeidet. Ein derartiges System sollte es allen Teilnehmern ermöglichen,
die Sitzung nach belieben zu betreten und zu verlassen, wobei gleichzeitig
eine zuverlässige Übertragung
aller Nachrichtendaten an alle Teilnehmer in der Sitzung inklusive
der Teilnehmer, die zu spät
kommen und/oder nachdem andere Teilnehmer die Sitzung verlassen
haben, ermöglicht
wird.
-
Außerdem beschreibt
US-B1-6212548 eine Technik zur Aufrechterhaltung mehrerer gleichzeitiger
Echtzeit-Chat-Sessions mit einer Mehrzahl von anderen Teilnehmern.
Die Teilnehmer senden Nachrichten in dem Kontext einer bestimmten
Unterhaltung. Die Unterhaltungsdaten enthalten Ereignisse, Nachrichten
und Historie. In jeder Nachricht enthalten sind (i) der Ursprungsbenutzer,
(ii) alle Empfänger
der Nachricht und (iii) ein Unterhaltungsindex. Eine von dem Benutzer
empfangene Nachricht wird durch alle Teilnehmer im Chatroom angezeigt.
-
Zusätzlich offenbart
(U2002/152299 A1) eine Technik zur Einrichtung zuverlässiger Verbindungen zwischen
gleichartigen Rechnern und einer Rechner-Rechner-Netzwerkumgebung. Es wird skizziert, dass
ein zuverlässiger
Kommunikationskanal eine erneute Übertragung von Nachrichten,
die nicht empfangen wurden, verwenden kann, um eine zuverlässige Zustellung
von Nachrichten zwischen gleichartigen Rechnern zur Verfügung zu
stellen. Jede Nachricht kann eine Sequenznummer enthalten.
-
Außerdem lehrt
US-A-5940082 eine Technik, in der Mitarbeiter zu einem Echtzeitentwurf
einer verteilten Zeichnung beitragen können, die auf jeder virtuellen
Weißwandtafel
ei nes jeden Mitarbeiters angezeigt wird. Beiträge zu der verteilten Zeichnung
sowie Kommunikationen zwischen den Mitarbeitern werden an den Servercomputer übertragen.
Der Servercomputer überträgt die Kommunikation
an jeden der Mitarbeiter, der an den Entwurfsaktivitäten beteiligt
ist. Zusätzlich
stellt der Artikel „Distributed
virtual reality or everyone – a
framework for networked VR on the Internet", veröffentlicht von Broll, Wolfgang,
VIRTUAL REALITY ANNUAL INERNATIONAL SYMPOSIUM, 1997, IEEE 1997,
1. bis 5. März
1997, Seiten 121 bis 128 eine Netzwerkarchitektur zur Unterstützung virtueller
Multibenutzerumgebungen im Internet vor.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Es
ist deshalb ein Ziel der Erfindung, ein verbessertes Verfahren und
Unterstützung
für Kommunikationsnachrichten
eines Rechner-Rechner-Netzwerks zur Verfügung zu stellen.
-
Dieses
Ziel wird durch die Erfindung, wie sie in den unabhängigen Ansprüchen beansprucht
wird, gelöst.
-
Bevorzugte
Ausführungsformen
werden in den abhängigen
Ansprüchen
definiert.
-
Aspekte
der vorliegenden Erfindung beziehen sich auf Systeme, Verfahren
und Datenstrukturen, die nützlich
sind zur Übertragung
von Nachrichten über
ein Rechner-Rechner-Netzwerk,
wahlweise über
transiente Verbindungen an Teilnehmer in einer gemeinschaftlichen
Sitzung (z.B. einer „elektronischen
Weißwandtafel"-Sitzung). In einem
Aspekt bezieht sich die Erfindung auf Systeme und Verfahren zur
Einrichtung einer Sitzung zum Datentransfer, die es den Teilnehmern
ermöglicht,
einfach einer Sitzung beizutreten und sie zu verlassen; ohne Daten
zu verlieren oder Verbindungen zwischen den Teilnehmern zu verlieren,
selbst wenn Teilnehmer die Sitzung verlassen oder die Verbindung
zur Sitzung verlieren, z.B. aufgrund der transienten Natur ihrer
Verbindung. In einem anderen Aspekt bezieht sich die Erfindung auf
Systeme und Verfahren, die es den Teilnehmern ermöglichen,
einen einfachen Zugriff auf zuvor übertragene Daten in einer laufenden
Sitzung zu gewinnen. Verschiedene Datenstrukturen sind auch nützlich,
in verschiedenen Systemen und Verfahren zur Übertragung von Nachrichten.
Derartige Datenstrukturen können
verwendet werden, um eine Nachrichtennutzlast an Teilnehmer in einer
Sitzung zu übertragen.
Andere nützliche
Datenstrukturen können
Daten zur Übertragung
der Identifizierungsdaten eines Benutzers über das gesamte Netzwerk enthalten,
wahlweise, wenn der Benutzer an einer Datenübertragungssitzung mit mehreren
Teilnehmern beteiligt ist. Durch die Übertragung der Nachrichtennutzlast
und der Benutzeridentifikationsdaten können andere Benutzer des Netzwerks
leicht feststellen, ob sie an einer laufenden Sitzung teilnehmen
sollten und der Sitzung beitreten.
-
Kurze Beschreibung
der Zeichnungen
-
Die
obigen und andere Ziele, Merkmale und Vorteile der vorliegenden
Erfindung werden aus der folgenden detaillierten Beschreibung zusammen
mit den angefügten
Zeichnungen leicht ersichtlich und vollständig verständlich.
-
1 zeigt
ein schematisches Diagramm einer digitalen Allzweck-Computerumgebung,
in der bestimmte Aspekte der vorliegenden Erfindung implementiert
werden können;
-
2 zeigt
eine stiftbasierte Personal Computer-Umgebung (PC), in der bestimmte
Aspekte der vorliegenden Erfindung implementiert werden können;
-
3a und 3b zeigen
allgemein ein Rechner-Rechner-Verbindungsnetzwerk, das in den Systemen
und Verfahren einiger Beispiele dieser Erfindung verwendet werden
kann;
-
4 zeigt
allgemein Daten und Informationen, die von den verschiedenen individuellen
Teilnehmern unter Verwendung von Systemen und Verfahren gemäß einiger
Beispiele dieser Erfindung gepflegt werden können;
-
5A bis 6E zeigen
Beispiele von Datennachrichten, die mittels Systemen und Verfahren dieser
Erfindung übertragen
werden können
und die nützlich
sind zur Erläuterung
verschiedener Merkmale einiger Beispiele dieser Erfindung;
-
7 ist
eine beispielhafte Datenstruktur für eine ausgehende Übertragungsdatennachricht,
die in einigen Beispielen der Systeme und Verfahren gemäß der vorliegenden
Erfindung nützlich
ist;
-
8 ist
ein Flussdiagramm, das Beispiele bestimmter Verfahren gemäß der Erfindung
zeigt;
-
9 ist
eine beispielhafte Datenstruktur für eine ausgehende Benutzeridentifizierungsnachricht, die
in einigen Beispielen der Systeme und Verfahren gemäß der vorliegenden
Erfindung nützlich
ist;
-
10 ist
ein Flussdiagramm, das Beispiele von Verfahren der Hinzufügung neuer
Benutzer als Teilnehmer zu einer Sitzung zeigt; und
-
11 zeigt
ein Flussdiagramm, das Beispiele anderer Verfahren zur Hinzufügung neuer
Benutzer als Teilnehmer einer Sitzung zeigt.
-
Detaillierte
Beschreibung
-
Wie
oben beschrieben, beziehen sich Aspekte der vorliegenden Erfindung
auf Systeme, Verfahren und Datenstrukturen zur Übertragung von Nachrichten über ein
Rechner-Rechner-Netzwerk, einschließlich der Übertragung
zwischen Arbeitsplatzrechnern, die miteinander über transiente Verbindungen,
wie z.B. einem Drahtlosnetzwerk, verbunden sind. Die folgende Beschreibung
ist in Teilabschnitte aufgeteilt, um dem Leser entgegenzukommen.
Die Teilabschnitte umfassen: Begriffe; allgemeine Beschreibung verschiedener
Aspekte der Erfindung; beispielhafte Hardware; beispielhafte Systeme,
Verfahren und Datenstrukturen gemäß der Erfindung; und Schlussbemerkung.
-
1. Begriffe
-
Die
folgenden Begriffe werden in dieser Beschreibung verwendet:
Die
Begriffe „Nachricht" oder „Nachrichtendaten" oder „Datennachricht" werden in dieser
Beschreibung generell austauschbar verwendet. Mit diesen Begriffen
sind alle Daten gemeint, die von einem Rechner zum Empfang durch
einen anderen Rechner übertragen
werden. Der Begriff „Nachrichtennutzlast" bezieht sich allgemein
auf den Teil einer Datennachricht, die die an andere Benutzer in
der Sitzung zu übertragende
Information enthält.
-
„Benutzer" bezeichnet einen
Teilnehmer, der mit einem Kommunikationsnetzwerk in irgendeiner Weise
verbunden ist, wie z.B. durch ein herkömmliches Subnetz, Intranet,
oder eine Internetverbindung. Die Verbindung kann jede herkömmliche
Verbindung sein, wie z.B. eine Drahtverbindung, eine drahtlose Verbindung
oder jede im Stand der Technik bekannte herkömmliche Verbindung.
-
„Sitzung" bezeichnet ein Treffen
von mehreren Netzwerkbenutzern, die miteinander über ein Kommunikationsnetzwerk
kommunizieren. Benutzer, die an der Sitzung beteiligt sind, können sich
in einem gemeinsamen Subnetz, in verschiedenen Subnetzen, oder beidem
befinden. Die Kommunikation kann visuell, auditiv, oder eine Kombination
aus beiden sein.
-
„Teilnehmer" bezeichnet einen
Benutzer, der an einer Sitzung beteiligt ist.
-
„Rechner" bezeichnet jedes
Gerät,
das zur Kommunikation über
ein Kommunikationsnetzwerk verwendet wird. Ein „Rechner" umfasst, aber ist nicht notwendiger
Weise beschränkt
auf: Computerterminals oder Workstations, Arbeitsplatz PCs, stiftbasierte
PCs, Notebook und/oder Laptopcomputer, Palmtops, PDAs, Telefone
und dergleichen.
-
„Computerlesbares
Medium" bezeichnet
jedes verfügbare
Medium, auf das ein Benutzer auf einem Computersystem zugreifen
kann. Als Beispiel, aber nicht zur Abgrenzung, kann „computerlesbares Medium" Computerspeichermedien
und Kommunikationsmedien umfassen. „Computerspeichermedium" umfasst flüchtige und
nicht flüchtige,
herausnehmbare und nicht herausnehmbare Medien, die gemäß irgendeiner
Technologie oder Methode zur Speicherung von Information, wie z.B.
computerlesbarer Anweisungen, Datenstrukturen, Programmmodulen oder
anderer Daten, implementiert sind. „Computerspeichermedien" umfassen, sind aber
nicht beschränkt
auf RAM, ROM, EEPROM, Flashspeicher und andere Speichertechnologien;
CD-ROM, DVD (digital versatile disks) oder andere optische Speichergeräte; Magnetkassetten,
Magnetbänder,
magnetische Plattenspeicher oder andere magnetische Speichergeräte; oder
jedes andere Medium, das zum Speichern der gewünschten Information verwendet werden
kann und auf das von einem Computer zugegriffen werden kann. „Kommunikationsmedien" umfassen typischerweise
computerlesbare Anweisungen, Datenstrukturen, Programmmodule oder
andere Daten in einem modulierten Datensignal, wie z.B. einer Trägerwelle oder
einem anderen Transportmechanismus, und enthalten irgendein Informationsliefermedium.
Der Begriff „moduliertes
Datensignal" bezeichnet
ein Signal, bei dem eine oder mehrere seiner Eigenschaften derart
eingestellt oder geändert werden,
das Information in dem Signal codiert wird. Als Beispiel, aber nicht
zur Abgrenzung, enthalten Kommunikationsmedien drahtgebundene Medien, wie
z.B. ein Kabelnetzwerk oder eine direkt verdrahtete Verbindung,
und drahtlose Medien, wie z.B. akustische, funkbasierte, infrarote
und andere drahtlose Medien. Beliebige Kombinationen der obigen Medien
sollten ebenfalls unter dem Begriff „computerlesbare Medien" fallen.
-
II. Allgemeine Beschreibung
verschiedener Aspekte der Erfindung
-
Aspekte
der vorliegenden Erfindung beziehen sich auf Systeme, Verfahren
und Datenstrukturen, die nützlich
sind zur Übertragung
von Nachrichten über
ein Rechner-Rechner-Netzwerk.
Derartige Systeme, Verfahren und Datenstrukturen können verwendet
werden, um z.B. Nachrichten über
transiente Verbindungen an Teilnehmer in einer gemeinschaftlichen
Sitzung in direkter Weise zu übertragen.
-
Ein
spezifischerer Aspekt der Erfindung bezieht sich auf Verfahren zur
Datenübertragung
in einem Netzwerk. Ein Beispiel dieses Aspekts der Erfindung enthält: (a)
Einrichten einer Sitzung zur Datenübertragung, wobei die Sitzung
mehrere Teilnehmer enthält;
(b) Übertragen
einer Nachricht von einem Teilnehmer der Sitzung, wobei die Nachricht
zumindest umfasst: eine Übertragungsteilnehmerkennung, eine
Nachrichtenkennung, Sitzungsinformation und eine Nachrichtennutzlast;
(c) Feststellen, ob ein Benutzer, der die übertragene Nachricht empfängt, ein Teilnehmer
der Sitzung ist; und (d) Verarbeiten der Nachricht für den Benutzer,
wenn der Benutzer ein Teilnehmer der Sitzung ist. Das Feststellen,
ob der Benutzer ein Teilnehmer der Sitzung ist, kann zumindest in
einigen Beispielen der Erfindung umfassen: (a) Feststellen, ob der
Benutzer in der Sitzung aktiv ist, oder (b) feststellen, ob der
Benutzer in einer Sitzungsteilnehmerliste enthalten ist. Teilnehmer
können
beliebig zu der Sitzung hinzugefügt
werden und/oder sie verlassen, ohne die Datenübertragung an die anderen Teilnehmer
nachteilig zu beeinflussen.
-
In
einigen beispielhaften Verfahren gemäß der Erfindung umfasst das
Verfahren vor der Verarbeitung einer neuerlich erhaltenen Nachricht
für einen
Benutzer oder einen Teilnehmer außerdem das Feststellen, ob
der Benutzer oder Teilnehmer alle vorherigen Nachrichten in der
Sitzung erhalten hat. Wenn nicht empfangene Nachrichten entdeckt werden,
können
diese Nachrichten für
den Benutzer oder Teilnehmer beschafft werden. Die nicht empfangenen Nachrichten
können
auf irgendeine geeignete Weise beschafft werden. Sie können z.B. über eine Übertragung
von einem anderen Teilnehmer der Sitzung beschafft werden, wahlweise
nachdem der Benutzer oder Teilnehmer, der die Nachricht oder die
Nachrichten benötigt,
eine Anforderung für
die fehlenden Nachrichten überträgt. In einigen
Beispielen dieses Aspekts der Erfindung werden die Sitzungsteilnehmer
zufällig
entscheiden, ob eine oder mehrere der nicht empfangenen vorherigen
Nachrichten übertragen
werden sollen, wenn eine Anfrage nach fehlenden Nachrichten empfangen
wird. Nachrichtenanforderungen und Übertragungen fehlender Nachrichten können so
lange wiederholt werden, bis ein Benutzer alle Nachrichten in der
Nachrichtenhistorie empfangen hat.
-
Die
Feststellung, ob ein Benutzer ein Teilnehmer in einer Sitzung ist,
kann auch in irgendeiner geeigneten Weise erreicht werden, ohne
von der Erfindung abzuweichen.
-
So
kann z.B. die Kennung des Benutzers (z.B. eine ID-Nummer) mit einer
Hauptliste aller Benutzer, die autorisiert sind, an einer Sitzung
teilzunehmen, abgeglichen werden. Als anderes Beispiel kann/können einer
oder mehrere der bestehenden Teilnehmer der Sitzung einen Hinweis
empfangen, dass ein neuer Benutzer da ist oder auf dem Netzwerk
verfügbar
ist, und der Benutzer kann der Sitzung hinzugefügt werden, wahlweise nachdem
einer oder mehrere der Teilnehmer in der Sitzung gefragt werden,
ob der neue Benutzer der Sitzung hinzugefügt werden soll. Als weiteres
Beispiel kann nach dem Empfang des Hinweises, dass ein neuer Benutzer
da ist oder auf dem Netzwerk verfügbar ist, das Verfahren außerdem ein
Einladen des neuen Benutzers, der Sitzung beizutreten, enthalten
(wahlweise nachdem zumindest ein Teilnehmer in der Sitzung gefragt
wurde, ob die Einladung herausgegeben werden soll). Der Benutzer
wird nur dann hinzugefügt, wenn
die Einladung angenommen wurde.
-
Ein
anderer Aspekt der vorliegenden Erfindung bezieht sich auf Verfahren
um Zugriff auf eine laufende Sitzung zu erhalten. Einige Beispielverfahren
dieses Aspekts der Erfindung enthalten: (a) Zugreifen auf ein Netzwerk,
auf dem eine Sitzung stattfindet, wobei auf das Netzwerk durch einen
Benutzer zugegriffen wird, der in der Sitzung nicht aktiv ist, und wobei
die Sitzung mehrere Teilnehmer enthält, die in der Lage sind, Nachrichtendaten
zu senden und zu empfangen; (b) Feststellen, ob der Benutzer als
Teilnehmer der Sitzung hinzugefügt
werden soll; und (c) Übertragen
aller zuvor während
der Sitzung übertragenen
Nachrichten an den Benutzer, wenn der Benutzer als Teilnehmer zur
Sit zung hinzugefügt
wurde. Das Feststellen, ob der Benutzer zur Sitzung hinzugefügt werden
soll, kann in jeder geeigneten Weise erfolgen, inklusive der verschiedenen
oben beschriebenen Arten.
-
Zusätzliche
Aspekte dieser Erfindung beziehen sich auf Verfahren zur Übertragung
von Nachrichten zwischen mehreren Teilnehmern einer Sitzung. Einige
Beispiele dieser Aspekte der Erfindung enthalten: (a) Verbinden
von zumindest einer ersten Teilnehmerworkstation und einer zweiten
Teilnehmerworkstation in direkter Weise, wobei jede Teilnehmerworkstation
in der Lage ist, Nachrichtendaten an andere Teilnehmerworkstations
in der Sitzung in direkter Weise zu übertragen und Übertragungsnachrichten
von anderen Teilnehmerworkstations in der Sitzung in direkter Weise
zu empfangen; (b) Übertragen
einer ersten Nachricht durch die erste Teilnehmerworkstation; (c)
Empfangen der ersten Nachricht von zumindest der zweiten Teilnehmerworkstation; und
(d) Übertragen
der ersten Nachricht von der zweiten Teilnehmerworkstation an zumindest
eine andere Teilnehmerworkstation in der Sitzung, die die erste
Nachricht nicht empfangen hat, als sie von der ersten Teilnehmerworkstation übertragen
wurde. Zusätzlich
kann zumindest in einigen Beispielen dieses Aspekts der Erfindung
eine neue Teilnehmerworkstation der Sitzung hinzugefügt werden
und diese neuerdings hinzugefügten
Workstations sind in der Lage, die früheren Nachrichten in der Sitzung
zu erhalten, inklusive der Nachrichten von Workstations, die die Sitzung
verlassen haben, und zwar von Teilnehmerworkstations, die in der
Sitzung verblieben sind.
-
Ein
weiterer Aspekt dieser Erfindung bezieht sich auf Systeme zur Verarbeitung
von Daten, die über
ein Netzwerk empfangen wurden, und zwar während einer Sitzung, die eine
Datenübertragung zwischen
mehreren Teilnehmern in dem Netzwerk beinhaltet. Ein derartiges
System kann zumindest in einigen Beispielen der Erfindung umfassen:
(a) einen Empfänger,
der eingerichtet ist, um eine Übertragungsnachricht
von einem Teilnehmer der Sitzung zu empfangen, wobei die Nachricht
zumindest enthält: eine Übertragungsteilnehmerkennung,
eine Nachrichtenkennung, Sitzungsinformation und eine Nachrichtennutzlast;
und (b) einen Prozessor, der programmiert ist und angepasst ist,
um zu bestimmen, ob ein Netzwerkbenutzer, der die Nachricht empfängt, ein
Teilnehmer der Sitzung ist, und die Nachricht verarbeitet, wenn
der Benutzer ein Teilnehmer der Sitzung ist. Der Prozessor kann
feststellen, ob der Benutzer ein Teilnehmer der Sitzung ist, indem
er zumindest in einigen Beispielen (a) feststellt, ob der Benutzer
ein aktiver Teilnehmer in der Sitzung ist, oder (b) feststellt,
ob der Benutzer in einer Teilnehmerliste der Sitzung enthalten ist.
Vor der Verarbeitung der Nachricht kann der Prozessor außer dem feststellen,
ob der Benutzer alle vorherigen Nachrichten in der Sitzung empfangen
hat, und wenn eine Nachricht nicht empfangen wurde, kann ein Übertragungssystem
aktiviert werden, um eine Anforderung für die zuvor nicht empfangene
Nachricht in der Sitzung zu übertragen.
-
Ein
weiterer Aspekt dieser Erfindung bezieht sich auf Arbeitsplatzgeräte, die
nützlich
sind zur Durchführung
verschiedener Verfahren, inklusive der oben beschriebenen Verfahren
gemäß der Erfindung.
Einige beispielhafte Arbeitsplatzgeräte gemäß dieses Aspekts der Erfindung
können
enthalten: (a) ein Verbindungssystem, das eingerichtet ist, um auf ein
Netzwerk zuzugreifen, auf dem eine Sitzung stattfindet, wobei die
Sitzung mehrere Teilnehmer beinhaltet, die in der Lage sind, Nachrichtendaten
zu senden und zu empfangen; (b) einen Prozessor, der programmiert
ist und angepasst ist, um zu bestimmen, ob ein Benutzer des Arbeitsplatzgeräts ein Teilnehmer
der Sitzung ist; und (c) ein Nachrichtenempfangssystem, das eingerichtet
ist Nachrichtendaten zu empfangen, die während der Sitzung übertragen wurden,
wenn festgestellt wurde, dass der Benutzer ein Teilnehmer der Sitzung
ist.
-
Andere
Beispiele dieser Erfindung beziehen sich auf Systeme zur Übertragung
von Nachrichten zwischen mehreren Teilnehmern in einer Sitzung. Derartige
Systeme können
zumindest in einigen Beispielen dieser Erfindung mehrere Teilnehmerworkstations
enthalten, die in einem Rechner-Rechner-Netzwerk verbunden sind,
wobei zumindest einige der Teilnehmerworkstations in der Lage sind, Nachrichtendaten
an andere Teilnehmerworkstations in der Sitzung über das Netzwerk zu übertragen
und Nachrichtendaten von anderen Teilnehmerworkstations in der Sitzung über das
Netzwerk zu empfangen. In den Systemen gemäß einiger Beispiele können die
einzelnen Teilnehmerworkstations beliebig die Sitzung verlassen
und die Nachrichtendaten, die durch die Teilnehmerworkstations,
die die Sitzung verlassen, übertragen
wurden, bevor sie die Sitzung verfassen haben, können durch andere Teilnehmerworkstations
falls nötig
von einer verbleibenden Teilnehmerworkstation beschafft werden,
die diese Nachrichtendaten zuvor empfangen hat. Zusätzlich zum
Verlassen einer bestehenden Sitzung können neue Teilnehmerworkstations
der Sitzung beliebig beitreten und alle vorherigen Nachrichtendaten
(inklusive Nachrichtendaten von Workstations, die seitdem die Sitzung
verlassen haben) von einer oder mehreren der in der Sitzung verbleibenden
Teilnehmerworkstations erhalten.
-
In
einem anderen beispielhaften Aspekt der Erfindung kann jeder Rechner
auf dem Subnetz und/oder jeder Rechner, der eingehende Nachrichten von
einer Sitzung empfängt,
selbst die, die nicht aktiv an der Sitzung teilnehmen, die eingehenden
Nachrichtendaten empfangen, aufzeichnen und verwalten. Deshalb können selbst
Maschinen, die nicht an einer speziellen Sitzung beteiligt sind,
Daten an neu hinzukommende Teilnehmer in der Sitzung erneut übertragen
und/oder auf Anforderungen für
fehlende Nachrichten in der Sitzung antworten, zumindest in einigen Beispielen
dieser Erfindung.
-
Aspekte
dieser Erfindung beziehen sich auch auf computerlesbare Medien,
die Datenstrukturen zur Übertragung
von Nachrichtendaten an Teilnehmer in einer Sitzung gespeichert
haben. In einigen Beispielen können
diese Datenstrukturen enthalten: (a) ein erstes Datenfeld, das Daten
enthält,
die eine Nachrichten ID repräsentieren;
(b) ein zweites Datenfeld, das Daten enthält, die eine Sitzungsinformation
repräsentieren;
und (c) ein drittes Datenfeld, das Daten enthält, die eine Nachrichtennutzlast
repräsentieren.
Die Daten, die die Sitzungsinformation repräsentieren, können zumindest
in einigen Beispielen der Erfindung Daten enthalten, die zumindest
ein Element aus der folgenden Gruppe repräsentieren: eine Sitzungs-ID;
eine Sitzungsteilnehmerliste; und eine Sitzungsnachrichtenhistorie.
In weiteren Beispielen kann die Datenstruktur außerdem ein viertes Datenfeld
enthalten, das Daten enthält,
die eine Kennung eines Teilnehmers repräsentieren, der die Nachrichtendaten überträgt.
-
Eine
weitere beispielhafte Datenstruktur, die zumindest in einigen Systemen
und Verfahren gemäß der Erfindung
nützlich
ist, kann eine Datenstruktur enthalten zur Übertragung von Kennungsdaten
eines Benutzers an ein Netzwerk, wahlweise wenn der Benutzer an
einer Datenübertragungssitzung
beteiligt ist, die mehrere Teilnehmer enthält. In zumindest einigen Beispielen
kann diese Datenstruktur enthalten: (a) ein erstes Datenfeld, das
Daten enthält,
die eine Benutzeridentität
repräsentieren;
(b) ein zweites Datenfeld, das Daten enthält, die Informationen zur Identifizierung
der Datenübertragungssitzung
repräsentieren;
und (c) ein drittes Datenfeld, das Daten enthält, die die Historie eines
Benutzers in der Sitzung repräsentieren.
Die Daten, die die Identifikationsinformationen bezüglich der
Datenübertragungssitzung
repräsentieren,
können
z.B. Daten enthalten, die zumindest ein Element repräsentieren,
das aus der folgenden Gruppe ausgewählt wurde: einer Sitzungs-ID
und einer Sitzungsteilnehmerliste. Die Daten, die die Historie des
Benutzers repräsentieren können z.B.
Daten enthalten, die zumindest einem Element aus der folgenden Gruppe
entsprechen: einer Sitzungs-ID; einer Nachrichten-ID-Liste, die
zumindest eine Nachricht identifizieren, die durch die Workstation
des Benutzers in der Sitzung verarbeitet wurde; und einer Nachrichten-ID-Liste,
die zumindest eine zuletzt von dem Benutzer in der Sitzung übertragene
Nachricht identifizieren.
-
Die
verschiedenen Systeme, Verfahren und Datenstrukturen gemäß der Erfindung
können
verwendet werden, um irgendwelche Nachrichtendaten zu übertragen,
ohne von der Erfindung abzuweichen. In einigen Beispielen können die
Nachrichtendaten elektronische Tintendaten enthalten, Textdaten,
Grafiken, etc.. Als weiteres Beispiel kann die Sitzung von der Form
einer „virtuellen
Weißwandtafel"-Sitzung sein, in
der mehrere Sitzungsteilnehmer Nachrichtendaten hinzufügen, löschen, oder
abändern
(z.B. kann der Computerbildschirm eines jeden einzelnen Teilnehmers
eine Darstellung der Nachrichtendaten anzeigen und die Benutzer
können
Daten hinzufügen,
Daten löschen
oder abändern
und die Hinzufügungen,
Löschungen
und/oder Abänderungen,
die durch einen Teilnehmer vorgenommen wurden, erscheinen auch auf
den Bildschirmen der anderen Teilnehmer. Obgleich jedes geeignete
Protokoll zum Senden der Nachrichtendaten an die verschiedenen Sitzungsteilnehmer
verwendet werden kann, wird in einigen Beispielen der Erfindung
die Nachricht unter Verwendung des user datagram protocols („UDP") und/oder des transfer
control protocols („TCP") übertragen.
Im folgenden werden die Systeme, Verfahren und computerlesbaren
Medien gemäß der vorliegenden
Erfindung im Detail beschrieben.
-
III. Beispielhafte Hardware
-
1 zeigt
ein schematisches Diagramm einer digitalen Allzweckcomputerumgebung,
die verwendet werden kann, um verschiedene Aspekte der vorliegenden
Erfindung zu implementieren. In 1 enthält ein Computer 100 eine
Verarbeitungseinheit 110, einen Systemspeicher 120 und
einen Systembus 130, der verschiedene Systemkomponenten
inklusive des Systemspeichers 120 mit der Verarbeitungseinheit 110 verbindet.
Der Systembus 130 kann einer von verschiedenen Typen von
Busstrukturen sein, inklusive einem Speicherbus oder Speichercontroller,
einem Peripheriegerätebus,
und einem lokalen Bus, der eine der zahlreichen Busarchitekturen verwendet.
Der Systemspeicher 120 kann einen Nur-Lesespeicher (ROM) 140 und
ein Speicher mit wahlfreiem Zugriff (RAM) 150 enthalten.
-
Ein
grundlegendes Eingabe/Ausgabesystem 160 (BIOS), das die
grundlegenden Routinen enthält, die
die Übertragung
von Informationen zwischen den Elementen des Com puters 100 unterstützen, wie
z.B. während
des Hochfahrens, ist im ROM 140 gespeichert. Der Computer 100 kann
auch ein Festplattenlaufwerk 170 enthalten, um auf eine
Festplatte (nicht gezeigt) lesend und schreibend zuzugreifen, ein
magnetisches Plattenlaufwerk 180, um auf herausnehmbare
magnetische Scheiben 190 lesend und schreibend zuzugreifen,
und ein optisches Plattenlaufwerk 191, um auf eine herausnehmbare
optische Platte 192, wie z.B. eine CD ROM oder andere optische
Medien lesend und schreibend zuzugreifen. Das Festplattenlaufwerk 170,
das magnetische Plattenlaufwerk 180 und das optische Laufwerk 191 sind mit
dem Systembus 130 jeweils über eine Festplattenlaufwerkschnittstelle 192,
eine Schnittstelle für magnetische
Plattenlaufwerke 193 und eine Schnittstelle für optische
Plattenlaufwerke 194 verbunden. Diese Laufwerke und ihre
zugeordneten computerlesbaren Medien stellen einen nicht flüchtigen
Speicher für
computerlesbare Anweisungen, Datenstrukturen, Programmmodule und
andere Daten für
den Personal Computer 100 zur Verfügung. Der Fachmann wird erkennen,
dass andere Arten von computerlesbaren Medien, die Daten speichern
können,
auf die durch einen Computer zugegriffen werden kann, wie z.B. magnetische
Kassetten, Flashspeicherkarten, digitale Videodiscs, Bernoulli Cassetten,
wahlfreie Zugriffsspeicher (RAMs), Nur-Lesespeicher (ROMs) und dergleichen
ebenso in der beispielhaften Betriebsumgebung verwendet werden können.
-
Eine
Anzahl von Programmmodulen kann auf dem Festplattenlaufwerk 170,
der magnetischen Platte 190, der optischen Platte 192,
dem ROM 140, oder RAM 150 gespeichert werden,
inklusive eines Betriebssystems 195, einem oder mehreren
Anwendungsprogrammen 196, anderen Programmmodulen 197 und
Programmdaten 198. Ein Benutzer kann Befehle und Informationen über Eingabegeräte wie z.B. eine
Tastatur 101 und ein Zeigegerät 102 (wie z.B. eine
Maus) in den Computer 100 eingeben. Andere Eingabegeräte (nicht
gezeigt), können
ein Mikrofon, Joystick, Gamepad, Satellitenschüssel, Scanner, und dergleichen
umfassen. Diese und andere Eingabegeräte sind häufig mit der Verarbeitungseinheit 110 über eine
serielle Schnittstelle 106 verbunden, die mit dem Systembus 130 gekoppelt
ist, aber sie können auch über andere
Schnittstellen verbunden sein, wie z.B. eine Parallelschnittstelle,
einen Gameport, einen universellen seriellen Bus (USB) und dergleichen. Außerdem können diese
Geräte über eine
geeignete Schnittstelle (nicht gezeigt) direkt mit dem Systembus 130 gekoppelt
sein. Ein Monitor 107 oder eine andere Art von Anzeigegerät kann auch
an einen Systembus 130 über
eine Schnittstelle, wie z.B. einen Videoadapter 108, angeschlossen
sein. Zusätzlich
zu dem Monitor 107 enthalten Personalcomputer typischerweise
andere Ausgabeperiphe riegeräte (nicht
gezeigt), wie z.B. Lautsprecher und Drucker. In einem Beispiel sind
ein Grafiktablett 165 und ein zugehöriger Stift oder Griffel 166 vorgesehen,
um eine Freihandeingabe digital zu erfassen. Obwohl in 1 eine
Verbindung zwischen dem Grafiktablett 165 und der seriellen
Schnittstelle 106 gezeigt ist, kann in der Praxis das Grafiktablett 165 direkt
mit der Verarbeitungseinheit 110 gekoppelt sein, es kann aber
auch in jeder anderen geeigneten Weise, wie z.B. über eine
Parallelschnittstelle oder eine andere Schnittstelle mit der Verarbeitungseinheit 110 und dem
Systembus 130 gekoppelt sein, wie es im Stand der Technik
bekannt ist. Obwohl in 1 das Grafiktablett 165 getrennt
von dem Monitor 107 dargestellt ist, kann außerdem die
nutzbare Eingabefläche
des Grafiktabletts 165 mit der Anzeigefläche des
Monitors 107 zusammenfallen. Darüber hinaus kann das Grafiktablett 165 in
dem Monitor 107 integriert sein oder als separates Gerät über dem
Monitor 107 oder auf andere Weise dort befestigt sein.
-
Der
Computer 100 kann in einer Netzwerkumgebung unter Verwendung
logischer Verbindungen mit einem oder mehreren entfernten Computern, wie
z.B. dem entfernten Computer 109 arbeiten. Der entfernte
Computer 109 kann ein Server, ein Router, ein Netzwerk-PC,
ein gleichartiges Gerät
oder ein anderer üblicher
Netzwerkknoten sein und enthält
typischerweise viele oder alle der oben im Zusammenhang mit dem
Computer 100 beschriebenen Elemente, obwohl zur Vereinfachung
in 1 nur ein Speichergerät 111 dargestellt
wurde. Die in 1 dargestellten logischen Verbindungen
umfassen ein lokales Netzwerk (LAN 112) und ein Großraumnetzwerk (WAN 113).
Derartige Netzwerkumgebungen sind üblich in Büros, unternehmensweiten Computernetzen,
Intranets und dem Internet, wobei sowohl drahtgebundene als auch
drahtlose Verbindungen verwendet werden.
-
Wenn
der Computer 100 in einer LAN-Netzwerkumgebung verwendet
wird, so ist er mit dem lokalen Netzwerk 112 über eine
Netzwerkschnittstelle oder einen Adapter 114 verbunden.
Wenn er in einer WAN-Netzwerkumgebung verwendet wird, so enthält der Personalcomputer 100 typischerweise
ein Modem 115 oder andere Einrichtungen zur Einrichtung einer
Kommunikationsverbindung über
das Großraumnetzwerk 113,
wie z.B. dem Internet. Das Modem 115, das intern oder extern
zu dem Computer 100 sein kann, kann mit dem Systembus 130 über das
serielle Schnittstelleninterface 106 verbunden sein. In
einer Netzwerkumgebung können
Programmmodule, die im Bezug auf den Personalcomputer 100 dargestellt
wurden, oder Teile davon, in dem entfernten Speichergerät gespeichert
ein.
-
Es
versteht sich, dass die gezeigten Netzwerkverbindungen Beispiele
sind und andere Techniken zur Einrichtung einer Kommunikationsverbindung
zwischen den Computern verwendet werden können. Das Vorhandensein einer
der zahlreichen wohlbekannten Protokolle wie z.B. TCP/IP, Ethernet, FTP,
HTTP, UDP, und dergleichen wird vorausgesetzt und das System kann
in einer Benutzer-Server-Konfiguration betrieben werden, um es einem
Benutzer zu erlauben, Webseiten von einem Web basierten Server aufzurufen.
Jeder der zahlreichen herkömmlichen
Webbrowser kann verwendet werden, um Daten auf Webseiten darzustellen
und zu verändern. Obwohl
die 1 eine beispielhafte Umgebung zeigt, versteht
es sich, dass andere Computerumgebungen ebenfalls verwendet werden
können.
Z.B. können
ein oder mehrere Beispiele der vorliegenden Erfindung eine Umgebung
verwenden, die nicht alle der in 1 dargestellten
und oben beschriebenen Aspekte besitzt und diese Aspekte können in
verschiedenen Kombinationen und Unterkombinationen auftreten, die
jedem Leser mit gewöhnlicher
Qualifikation einleuchten werden.
-
2 zeigt
einen stiftbasierten Personalcomputer (PC) 201, der in Übereinstimmung
mit verschiedenen Aspekten der vorliegenden Erfindung verwendet
werden kann. Einige oder alle der Merkmale, Untersysteme und Funktionen
des Systems aus 1 können in dem Computer aus 2 enthalten
sein. Das stiftbasierte Personalcomputersystem 201 enthält eine
große
Anzeigefläche 202,
z.B. einen digitalisierenden Flachbildschirm, wie z.B. einen Flüssigkristallbildschirm
(LCD), auf dem eine Mehrzahl von Fenstern 203 angezeigt
wird. Unter Verwendung des Griffels (204) kann der Benutzer
auf der digitalisierenden Anzeigefläche auswählen, hervorheben und schreiben.
Beispiele geeigneter digitalisierender Anzeigepaneele umfassen elektromagnetische
Stiftdigitalisiertabletts, wie z.B. Stiftdigitalisiertabletts von
Mutoh Co. oder Wacom Technology Co.. Andere Arten von Stiftdigitalisiertabletts,
z.B. optische Digitalisiertabletts können ebenfalls verwendet werden.
Das stiftbasierte Computersystem 201 interpretiert Gesten,
die mit dem Griffel 204 gemacht werden, um Daten zu verändern, Text
einzugeben, und gewöhnliche
Computeranwendungsaufgaben auszuführen, wie z.B. Erstellen, Editieren
und Modifizieren von Tabellen, Textverarbeitungsprogrammen u.dgl.. Der
Griffel 204 kann mit Tasten oder anderen Merkmalen zur
Verbesserung seiner Möglichkeiten
ausgerüstet
sein. In einem Beispiel kann der Griffel 204 als „Bleistift" oder „Stift" implementiert sein,
indem ein Ende eine Schreibeinheit bildet und das andere Ende einen „Radierer" bildet und das,
wenn es über
die Anzeige bewegt wird, Teile der elektronischen Tinte auf der
Anzeige kennzeichnet, die gelöscht
werden sollen. Andere Arten von Eingabegeräten, wie z.B. eine Maus, Trackball,
Tastatur u.dgl., können
ebenfalls verwendet werden. Außerdem
kann ein Benutzer seine eigenen Finger verwenden, um Teile des auf
einer berührungsempfindlichen
oder annäherungsempfindlichen
Anzeige angezeigten Bildes auszuwählen oder anzugeben. Demzufolge
ist beabsichtigt, dass der Begriff „Benutzereingabegerät", so wie er hier verwendet
wird, eine breite Definition haben soll und viele Variationen wohlbekannter
Eingabegeräte
umfassen soll.
-
In
einigen Beispielen der Erfindung kommunizieren mehrere Benutzer
miteinander über
ein Rechner-Rechner-Netzwerk. Diese Benutzer können in einigen Beispielen
Teilnehmer einer Sitzung sein, in der Nachrichtendaten von einem
Teilnehmer an die anderen Teilnehmer übertragen werden, so dass alle Teilnehmer
die Daten sehen und ändern
können
(z.B. eine „elektronische
Weißwandtafel" Sitzung oder andere
Art von gemeinschaftlicher Sitzung).
-
3A und 3B zeigen
Beispiele von Teilnehmern A-J, die miteinander kommunizieren, wie
es in einigen Beispielen dieser Erfindung der Fall sein kann. Anstelle
dass alle Teilnehmer A-J mit einem gemeinsamen Server verbunden
sind oder dass die Workstation eines der Teilnehmer zum de facto-Server
erklärt
wird, kommunizieren in einigen Beispielsystemen und Verfahren gemäß der Erfindung die
Teilnehmer A-J über
ein Rechner-Rechner-Netzwerk (peer-to-peer-network), z.B. unter
Verwendung von Arbeitsplatzgeräten
mit Allzweckcomputern wie in den 1 und 2 dargestellt.
Die Kommunikation in dieser Weise kann in jeder geeigneten Weise durchgeführt werden,
inklusive in den verschiedenen im Stand der Technik bekannten herkömmlichen
Weisen. In dem dargestellten Beispiel überträgt jeder Teilnehmer (z.B. durch
einen Broadcast oder eine direkte Übertragung) seine oder ihre
Nachrichtendaten über
das Rechner-Rechner-Netzwerk,
so dass die anderen Teilnehmer die Daten empfangen. 3A zeigt
ein Beispiel, in dem der Teilnehmer A eine Datennachricht an die
Teilnehmer B-J übertragen
hat. Daraufhin hat in 3B der Teilnehmer C eine Datennachricht
an die Teilnehmer A, B und D-J übertragen.
In der gleichen Weise ist jeder Teilnehmer A-J auf dem Netzwerk
(und in der Tat jeder Benutzer auf dem Netzwerk) in der Lage, Mitteilungen
an die bzw. von den anderen Teilnehmern (und Benutzern) auf dem
Netzwerk zu senden und zu empfangen.
-
Jedes
geeignete System oder Protokoll kann verwendet werden, um Nachrichten
zwischen den Teilnehmern und Benutzern auf dem Netzwerk zu übertragen,
ohne von der Erfindung abzuweichen. Nachrichtendaten können z.B.
direkt an die verschiedenen Teil nehmer in einer Sitzung über das
Netzwerk unter Verwendung von TCP oder UDP gesendet werden. TCP
Nachrichtenübertragungen
sind vorteilhaft, da TCP garantiert, dass Datenpakete der Reihenfolge
nach sowohl an Benutzer auf einem gemeinsamen Subnetz als auch an
Benutzer in verschiedenen Subnetzen (z.B. Lieferung über das
Internet oder andere Kommunikationsnetzwerke) zugestellt werden. UDP
garantiert die Lieferung der Nachrichten oder die Lieferung der
Nachrichten der Reihenfolge nach nicht.
-
Als
weiteres Beispiel können
Systeme und Verfahren gemäß einiger
Beispiele der Erfindung die Übertragungsmerkmale
von UDP verwenden und die Nachrichtendaten an alle Benutzer auf
einem gegebenen Subnetz per Broadcast übertragen (TCP unterstützt keine
Broadcast-Übertragungen).
Wenn die Nachrichtendaten mit einer Liste der Teilnehmer in der
Sitzung codiert ist, können
Benutzer auf dem Netzwerk die eingehenden Nachrichtendaten einsehen,
feststellen, ob sie ein Teilnehmer in der Sitzung mit diesen Nachrichtendaten
sind und der Sitzung beitreten und/oder die Nachrichtennutzlast
verarbeiten, wenn sie ein Teilnehmer sind. Die Verwendung von UDP
Broadcast-Nachrichten
zur Datenübertragung
in dieser Weise wird weiter unten detaillierter beschrieben.
-
UDP-Broadcasts
dieser Art sind üblicherweise
auf die Übertragung
an Benutzer auf einem gemeinsamen Subnetz begrenzt. Brückensysteme (Bridges)
und Verfahren können
jedoch verwendet werden, um die hier beschriebenen UDP Broadcast-Nachrichten
an Benutzer in anderen Subnetzen weiter zu leiten. Obgleich jedes
geeignete Brückensystem
oder Verfahren verwendet werden kann, ohne von dieser Erfindung
abzuweichen, sind geeignete Brückensysteme
und Verfahren in der US-Patentanmeldung Nr.
US 20030421705 unter dem Titel „Bridging
Subnet Broadcasts Across Subnet Boundaries", eingereicht am 24. April 2003 im Namen
der Erfinder Philip Su und Robert Jarrett (Attorney Docket No. 003797.00507)
beschrieben.
-
Wie
oben erwähnt,
haben UDP-Broadcasts einige Einschränkungen dahingehend, dass dieses Protokoll
nicht die Zustellung und/oder die Zustellung von Nachrichtendatenpaketen
der Reihenfolge nach an alle Benutzer sicherstellt. Einige Beispielsysteme und
Verfahren gemäß dieser
Erfindung haben jedoch diese Einschränkung überwunden, indem Wege für die Systeme
und Verfahren zur Verfügung
gestellt werden, um festzustellen, ob ein Teilnehmer eine Nachricht
verpasst hat, und Wege zur Verfügung
zu stellen, um verpasste Nachrichten erneut an den Benutzer zu übertragen,
der sie nicht empfangen hat, als sie ursprünglich übertragen wurden. Diese Aspekte
der Erfindung erlauben es auch, spät zu einer Sitzung hinzustoßenden Benutzern
oder denjenigen, die aus Versehen aus einer Sitzung herausgefallen sind,
wieder leicht aufzuholen und jede verpasste Nachricht zu empfangen,
die zuvor während
der Sitzung übertragen
wurde. Diese Aspekte der Erfindung werden ebenfalls weiter unten
detaillierter beschrieben.
-
IV. Beispielsysteme, Verfahren
und Datenstrukturen gemäß der Erfindung
-
A. Daten, die in einigen
der Beispiele gepflegt werden
-
4 zeigt
allgemein einige der Informationen und Daten 400, die durch
eine Benutzerworkstation oder andere geeignete Speichersysteme in
einigen Beispielen der Systeme und Verfahren gemäß dieser Erfindung gepflegt
werden. Jeder Benutzer und/oder Computer wird durch eine eindeutige
Identifikationsnummer 402 identifiziert, die den Benutzer und/oder
die Computerhardware anderen Benutzern auf dem Netzwerk gegenüber identifiziert.
Diese Benutzeridentifikationsnummer kann insbesondere den Teilnehmer
identifizieren, der auf dem Computersystem angemeldet ist, und/oder
die Hardware selbst.
-
Jeder
Benutzer kann potentiell an jeder beliebigen Zahl von verschiedenen
gemeinschaftlichen Sitzungen beteiligt sein, wie in 4 durch
die Referenzzeichen 404a (Sitzung 1) bis 404n (Sitzung
n) dargestellt wird. Jede Sitzung 404a bis 404n kann durch
eine eindeutige Identifikationsnummer (406a bis 406n in 4)
gekennzeichnet werden und die Workstation oder ein anderes Speichersystem
kann eine Liste der einzelnen Teilnehmer (408a bis 408n in 4)
für jede
Sitzung pflegen. Die Teilnehmerliste 408a bis 408n für eine Sitzung
kann einfach die eindeutige Benutzer-ID-Nummer 402 für jeden
an der Sitzung beteiligten Teilnehmer und/oder jeden für den Beitritt
zu der Sitzung autorisierten Benutzer enthalten.
-
Jede
Sitzung kann auch eine Auflistung der an der Sitzung beteiligten
Nachrichten enthalten. In 4 sind den
Nachrichten für
Sitzung 1 (404a) die Referenzzeichen 404a bis 410m zugeordnet
und den Nachrichten für
Sitzung n (404n) sind die Bezugszeichen 420a bis 420k zugeordnet.
Es besteht keine Beschränkung
der Anzahl der Nachrichten, die an einer gegebenen Sitzung beteiligt
sein können.
Jede Nachricht (410a bis 410m und 420a bis 420k)
enthält ihr
eigene Kennung (Kennungen 412a bis 412m für die jeweiligen
Nachrichten 410a bis 410m und Kennungen 422a bis 422k für die jeweiligen
Nach richten 420a bis 420k). Darüber hinaus
enthält
jede Nachricht (410a bis 410m und 420a bis 420k)
ihre zugeordnete Nachrichtennutzlast (Nachrichtennutzlast 414a bis 414m für die jeweiligen
Nachrichten 410a bis 410m und Nachrichtennutzlasten 424a bis 424k für die jeweiligen
Nachrichten 420a bis 420k). Die Nachrichtennutzlast
kann jede Form von geeigneten Daten enthalten, wie z.B. elektronische
Tintenstriche, Textinformation, grafische Information, Anweisungen zum
Löschen,
Bewegen und/oder Abändern
von Tinte, Text oder Grafik und dergleichen.
-
Die
eindeutigen Kennungen für
die Benutzer ID 402, die Sitzungs-ID 406a bis 406n,
und die Nachrichten ID 412a bis 412m und 422a bis 422k können in
jeder herkömmlichen
im Stand der Technik bekannten Weise vergeben werden. Zum Beispiel
können
global eindeutige Kennungsnummern („GUIDs") jedem dieser Werte zugewiesen werden.
-
B. Die elektronische Weißwandtafel
-
1. Unabhängige Nachrichten
-
Die 5A bis 5J zeigen
Beispiele von Datennachrichten, die zwischen mehreren Teilnehmern
in einer Sitzung über
eine virtuelle oder elektronische Weißwandtafel oder eine andere
gemeinschaftliche Sitzung gemäß zumindest
einiger Beispiele dieser Erfindung ausgetauscht werden können. Jede
der 5A bis 5J zeigt
eine beispielhafte elektronische Weißwandtafel 500, wie
sie auf dem Bildschirm der Workstation eines Teilnehmers erscheinen
kann, wenn Nachrichtendaten ausgetauscht werden. Die Teilnehmer
können
miteinander über
ein Rechner-Rechner-Netzwerk verbunden sein, dass UDP Broadcast-Übertragungen
verwendet, um die Nachrichtendaten in der in Verbindung mit den 3A und 3B beschriebenen
Weise zu übertragen.
Die Teilnehmer können
sich an den gleichen oder an verschiedenen Orten befinden, ohne dass
von der Erfindung abgewichen würde.
-
Die 5a bis 5J zeigen
die elektronischen Tintenstriche, die mit der gemeinschaftlichen Anstrengung
der Teilnehmer A-C beim Schreiben des Worts „Break" auf einer elektronischen Weißwandtafel
verbunden sind. Zumindest die Teilnehmer A-C sind zu einer gewissen
Zeit an der Sitzung beteiligt, in der dieses Wort auf die elektronische
Weißwandtafel
geschrieben wurde, obgleich andere an der Sitzung beteiligt sein
können und/oder
die Teilnehmer A-C die Sitzung zu einer Zeit verlassen können, ohne
von der Erfindung abzuweichen. Elektronische Tintendaten können in
einer geeigneten Weise gesammelt werden, inklusive der im Stand
der Technik bekannten herkömmlichen
Weisen und diese elektronischen Tintendaten können z.B. als Nachrichtennutzlast 414a bis 414m aus 4 zur
Verfügung
gestellt werden. Die Nachrichtennutzlast kann Daten enthalten, die
verschiedene Merkmale der elektronischen Tinte angibt, inklusive,
aber nicht notwendigerweise beschränkt auf: die Punkte der elektronischen
Weißwandtafel,
auf die der Stift während des
Tintenstrichs trifft (oder der Ort eines Richtungswechsels des Stifts
und die neue Stiftrichtung); der Ort des Strichs auf der elektronischen
Weißwandtafel;
die Strichfarbe; andere Stricheigenschaften (fett, kursiv, hervorgehoben,
unterstrichen, etc.) u.dgl..
-
Wie
in den 5A und 5B gezeigt
ist, hat der Teilnehmer A die elektronische Weißwandtafel 500, wie
sie auf seinem/ihrem Computer erscheint, verwendet, um den Buchstaben „B" zu schreiben. Jeder
Strich des elektronischen Stifts bildet in diesem Beispiel zumindest
eine einzelne Datennachricht (Nachricht A1 und Nachricht A2), die
an die anderen Teilnehmer in der Sitzung vom Computer des Teilnehmers
A gesendet werden, z.B. über
einen UDP-Broadcast, eine TCP-Übertragung
oder ein anderes geeignetes Übertragungsprotokoll.
Nachdem der Teilnehmer A den Buchstaben „B" fertiggestellt hat, schreibt der Teilnehmer
B in ähnlicher
Weise den Buchstaben „r" auf seinen/ihren
Computerarbeitsplatz unter Verwendung von zwei elektronischen Tintenstrichen
und sendet (zumindest) zwei Datennachrichten, die diesen Strichen
entsprechen, an die anderen Teilnehmer (Nachrichten B1 und B2, 5C und 5D).
Danach schreibt der Teilnehmer C den Buchstaben „e" unter Verwendung von einem Strich und
sendet (zumindest) eine elektronische Datennachricht, die diesen
Strich repräsentiert,
an die anderen Teilnehmer (Nachricht C1, 5E). Danach schreibt
der Teilnehmer A den Buchstaben „a" unter Verwendung von zwei Strichen
und sendet (zumindest) zwei Datennachrichten, die diese Striche
repräsentieren,
an die anderen Teilnehmer (Nachrichten A3 und A4, 5F und 5G)
und Teilnehmer B schreibt den Buchstaben „k" unter Verwendung von drei Strichen
und sendet (zumindest) drei Datennachrichten, die diese Striche
repräsentieren
an die anderen Teilnehmer (Nachrichten B3, B4 und B5, 5H, 5I und 5J).
-
In
dem in den 5A bis 5J dargestellten
Beispielen ist jeder Tintenstrich unabhängig von den anderen Strichen,
so dass die „zeitgeordnete" Zustellung der verschiedenen
Datennachrichten an die Workstations der Teilnehmer in diesem Beispiel kein
wichtiger Gesichtspunkt ist (man beachte, dass in diesem Beispiel
die Nachrichtendaten für
jeden Strich die absolute Position des Strichs auf der elektronischen
Weißwandtafel
(wahlweise mit Informationen, um eine Anpassung an den Ort, die
Auflösung, etc.
der Weißwandtafel
auf der Hardware des anderen Teilnehmers zu ermöglichen) derart, dass die Position
eines Strichs nicht von der Position eines anderen Strichs abhängt). Mit
anderen Worten, wenn der Teilnehmer B den Buchstaben „e" aus der Nachricht C1
empfängt,
nachdem er einen oder mehrere der Striche des Buchstabens „a" (Nachrichten A3
und A4) empfangen hat und/oder selbst nachdem er/sie begonnen hat,
den Buchstaben „k" zu schreiben, spielt
dies keine Rolle. Die Striche können
auf der elektronischen Weißwandtafel
eines jeden Teilnehmers in jeder Reihenfolge erscheinen und das
endgültige
Wort wird trotzdem korrekt erscheinen.
-
Auch
wenn in dem in den 5A bis 5J dargestellten
Beispiel jeder Strich als separate Datennachricht dargestellt wurde,
ist dies keine Anforderung. Jede Zahl von Strichen oder selbst ein
Teil eines einzelnen Strichs kann in einer einzelnen Datennachricht
enthalten sein, ohne von der Erfindung abzuweichen. So können z.B.
falls gewünscht,
die Striche beim Schreiben des Buchstabens „B" (5A und 5B)
an die anderen Sitzungsteilnehmer in einer einzigen Datennachricht
gesendet werden, ohne von der Erfindung abzuweichen. Als weiteres Beispiel
können
sehr lange und/oder komplizierte Striche in zwei oder mehr Datennachrichten
zur Übertragung
an die anderen Teilnehmer aufgeteilt werden, ohne von der Erfindung
abzuweichen.
-
2. Abhängige Nachrichten
-
In
manchen Fällen
werden jedoch einige Teilnehmer Nachrichten senden, die von anderen
Nachrichten abhängen
oder ihnen gegenüber
aktiv werden. So kann z.B. ein Teilnehmer eines oder mehrerer bestehender
Tintenstriche, Text, Grafik oder dergleichen ändern, Informationen hervorheben,
Informationen kursiv setzen, Informationen unterstreichen, Informationen
fett drucken, Informationen löschen,
Informationen vergrößern, Informationen
verkleinern, Informationen bewegen, Informationen kopieren oder
andere Änderungen
an ihrem Inhalt oder ihrer Eigenschaften vornehmen. Die 6A bis 6E illustrieren
ein derartiges Beispiel. 6A beginnt
mit dem Wort „Break", wie es in den 5A bis 5J geschrieben
wurde. Die Teilnehmer A, B und C haben sich entschieden, dieses
Wort zu dem Wort „Brake" abzuändern unter
Verwendung einer gemeinschaftlichen Anstrengung auf der elektronischen
Weißwandtafel 600.
Wie durch einen Vergleich der 6A und 6B dargestellt
wird, verwendet der Teilnehmer C als ersten Schritt zur Durchführung dieser Änderung
eine „Ausschneide"-Funktion, um den
Buchstaben „e" auszuschneiden (d.h.
Nachricht C2 aus 6B löschte oder schnitt Nachricht
C1 aus 5E aus). Dieser Schritt kann
durch den Teilnehmer C unter Verwendung einer geeigneten Weise zur Auswahl
des Buchstaben „e" (z.B. einer Lasso
oder Rechteckauswahl) und dem Ausführen der Ausschneideaktion
z.B. in einer herkömmlichen
Weise ausgeführt
werde. Als weitere Alternative könnte
der Buchstabe „e" von der elektronischen
Weißwandtafel unter
Verwendung einer herkömmlichen
Löschfunktion
gelöscht
werden. Die Nachricht C2 wurde an die anderen Teilnehmer in der
Sitzung gesendet, um diese Änderung
vorzunehmen. Demzufolge hängt
die Nachricht C2 in diesem Fall von der Nachricht C1 ab (d.h. die
Nachricht, die den Buchstaben „e" schreibt, muss empfangen
worden sein, bevor die Nachricht, die die Ausschneideaktion durchführt, durchgeführt werden
kann).
-
Im
nächsten
Schritt der gemeinschaftlichen Anstrengung schiebt der Teilnehmer
A die Buchstaben „ak" näher an die
Buchstaben „Br". Siehe 6C.
Auch dies kann wieder in jeder geeigneten Weise durchgeführt werden,
z.B. unter Verwendung einer Auswahlaktion (z.B. Lasso oder Rechteckauswahl
oder dergleichen) und einer Ziehaktion mit einer Maus, einem Stift
oder anderen geeigneten Benutzereingabegeräten. Diese Aktion wird an die
anderen Teilnehmer der Sitzung als Nachricht A5 übertragen. Die Nachricht A5
erfordert, dass zumindest die Nachrichten A3, A4, B3, B4 und B5
stattgefunden haben. Wahlweise kann die Nachricht A5 davon abhängen, dass
die Nachricht C2 stattgefunden hat (welche wiederum davon abhängt, dass,
wie oben erwähnt,
die Nachricht C1 stattgefunden hat), in Abhängigkeit davon, ob das System
oder Verfahren gemäß des speziellen
Beispiels in der Lage sind, überlappende
Informationen handzuhaben (z.B. unter Verwendung einer Schichtenstruktur
oder in einer anderen geeigneten Weise).
-
Im
nächsten
Schritt wird, wie in 6 dargestellt,
der Buchstabe „B" mit elektronischer
Tinte durch den Teilnehmer B unterstrichen. Diese Information wird
an die anderen Teilnehmer als Nachricht B6 übertragen. Nachricht B6 ist
wiederum unabhängig
von den anderen Nachrichten, da sie die Eigenschaften der bestehenden
Nachrichtendaten (z.B. Tintenstriche) weder ändert oder löscht, noch
in anderer Weise verändert.
Die manuelle Unterstreichung in der Art, wie sie in 6D dargestellt
ist, unterscheidet sich von einer elektronisch erzeugten Unterstreichung
als Attribut von Tinte, Text oder Grafik darin, dass die manuelle
Unterstreichung in dieser Art einfach ein weiterer Tintenstrich
ist und die Datenstruktur der Tinte oder anderen Text, der unterstrichen
wird, nicht ändert.
-
6E illustriert
eine „Einfüge"-Aktion, in der der
Teilnehmer C den Buchstaben „e", der in der Nachricht
C2 „6B" gelöscht wurde,
nachdem nunmehr verschobenen Buchstaben „k" einfügt. Diese Datennachricht wird
an die anderen Teilnehmer der Sitzung als Nachricht C3 gesendet.
Die Nachricht C3 hängt
zumindest von den vorangegangenen Ausführung C2 ab, die wiederum davon
abhängt,
dass die Nachricht C1 stattgefunden hat. Wahlweise kann die Nachricht
C3 auch von den Nachrichten A3, A4, A5, B3, B4 und B5 abhängen, abhängig davon,
ob die Systeme oder Verfahren gemäß des speziellen Beispiels
in der Lage sind, die überlappende
Information handzuhaben (z.B. unter Verwendung einer Schichtenstruktur
oder in einer anderen geeigneten Weise). Wieder können die
Systeme und Verfahren gemäß der Beispiele
der Erfindung diese Art von überlappender
Information und ihrer Anzeige in jeder geeignete Weise handhaben,
ohne von der Erfindung abzuweichen.
-
Alternativ
kann, anstatt eine Einfügeaktion zu
verwenden, wie sie als Nachricht C3 in 6E dargestellt
ist, ein Teilnehmer der Sitzung einfach einen weiteren Buchstaben „e" an die geeignete
Stelle schreiben. In diesem Fall wäre der neue Strich nicht von
irgendeinem anderen Strich abhängig,
es sei denn, eine Abhängigkeit
wäre erforderlich,
um Überlappung
oder geschichtete Information auf der elektronischen Weißwandtafel
zu handhaben, wie oben allgemein diskutiert.
-
Jede
geeignete Weise zur Handhabung der Abhängigkeitsinformation kann verwendet
werden, ohne von der Erfindung abzuweichen. So kann z.B. der Rechner
eines Telnehmers, der eine Nachricht sendet, die abhängige Information
in der oben beschriebenen allgemeinen Weise verfolgen, indem er bestimmt,
welche Datennachrichten zumindest ausgeführt sein müssen, um die durch die ausgehende Nachricht
des Teilnehmers erforderliche Aktion auszuführen. Wenn die Nachricht dann
(z.B. über
einen Broadcast) an die anderen Teilnehmer gesendet wird, kann sie
so codiert werden, dass sie die eindeutige Nachrichten-ID jeder
der anderen Nachrichten enthält,
die erforderlich sind, um die Funktion der neuerdings gesendeten
Nachricht auszuführen.
Die empfangenden Rechner können
dann die Abhängigkeitsinformation
berücksichtigen
und sicherstellen, dass alle erforderlichen „Eltern"-Nachrichten ausgeführt sind, bevor die neuerdings
empfangene Nachricht ausgeführt
wird. Eine andere Weise zur Handhabung der Abhängigkeit wird unten in Verbindung mit
den 7 bis 8 beschrieben.
-
C. Datenstrukturen von
ausgehenden Nachrichten
-
7 zeigt
allgemein eine Datenstruktur 700 für von einer Teilnehmerworkstation
ausgehenden Nachrichten, die in verschiedenen Beispielen der Systeme
und Verfahren gemäß dieser
Erfindung nützlich
ist. Die Datenstruktur 700 in diesem Beispiel enthält ein Feld,
das Daten enthält,
das die Benutzer-ID-Nummer 702 des Teilnehmers repräsentiert, der
die Nachricht überträgt. Diese
Benutzer-ID kann die eindeutige Benutzer-Kennung 402 sein, die oben in
Verbindung mit 4 diskutiert wurde und die den Benutzer
oder Teilnehmer identifiziert, der die Nachricht sendet. Zusätzlich oder
als Alternative kann die Benutzer-ID 702 auch Hardware-Informationen,
wie z.B. Informationen, die die spezielle Hardware, die die Nachricht
sendet, identifiziert, Eigenschaften der Hardware und/oder der gesendeten
Daten u.dgl. (z.B. Informationen über die Bildschirmauflösung od. dgl.,
so dass die Daten korrekt übersetzt
und an die verschiedenen an der Sitzung beteiligten Rechner abgebildet
werden können)
enthalten.
-
Ein
anderes Feld in der beispielhaften Datenstruktur 700 enthält eine
eindeutige Nachrichtenkennung 704 der gesendeten Nachricht.
Diese Nachrichtenkennung 704 kann den Nachrichtenkennungen 412a-412m und 422a-422k,
die oben in Verbindung mit 4 beschrieben
wurden, entsprechen.
-
Die
Beispieldatenstruktur 700 aus 7 enthält ein weiteres
Feld, das verschiedene Informationen 706 über die
Sitzung, auf die diese Nachricht gerichtet ist, enthält. Verschiedene
Arten von Informationen können
in diesem Datenfeld enthalten sein, ohne von der Erfindung abzuweichen.
Wie in 7 dargestellt, kann dieses Datenfeld z.B. die
eindeutige Sitzungs-ID-Nummer 708 enthalten, auf die die Nachrichtennutzlast
gerichtet ist. Dieses Datenfeld kann auch eine Liste der Teilnehmer 710 der
Sitzung enthalten (z.B. in Form der Benutzer-ID-Nummern 702 für alle Teilnehmer
der Sitzung und/oder alle Benutzer, die autorisiert sind, an der
Sitzung teilzunehmen). Ein weiterer möglicher Teil der Sitzungsinformation 706 in
der Datenstruktur 700 kann „Nachrichtenhistorien"-Information 712 enthalten.
Diese Nachrichtenhistorieninformation kann die ganzen Abhängigkeitsinformationen
(z.B. alle erforderlichen Elternnachrichten-ID-Nummern 704)
für die
vorliegende Nachricht, wie oben beschrieben, enthalten.
-
Schließlich enthält ein weiteres
Datenfeld dieser Beispieldatenstruktur 700 die eigentliche Nachrichtennutzlast 714,
die dem empfangenden Rechner die Aktion mitteilt, die als Ergebnis
dieser Nachricht auszuführen
ist. Wie oben beschrieben wurde, kann diese Nachrichtennutzlast 714 elektronische
Tinteninformation (z.B. Tintenstriche); Text; Grafi ken; Informationen
zur Änderungen
von elektronischer Tinte, Text, Grafik od.dgl.; und/oder jede andere
geeignete oder gewünschte
Information enthalten.
-
Während in
der Tat die Verfolgung der Abhängigkeiten
und Elterndatennachrichteninformation ein effektiver Weg ist um
sicherzustellen, dass keine Nachrichtenaktion ausgeführt wird,
bevor sie ausgeführt
werden sollte, kann dies zumindest in einigen Fällen schwierig (wenn nicht
unmöglich)
und/oder rechentechnisch aufwendig sein. Demzufolge kann gemäß einiger
Beispiele der Erfindung eine ausgehende Nachricht, wie die in 7 dargestellte,
eine andere Art von Nachrichtenhistorie 712 enthalten.
Zum Beispiel kann ein Rechner, der eine Nachricht 700 sendet,
die Nachrichtenidentifikationsnummern (704, 412a-412m, 422a-422k)
von zumindest der zuletzt auf diesem Rechner verarbeiteten Nachricht
einfügen.
In einigen Beispielen wird die Datenstruktur 700 die Nachrichtenidentifikationsnummern
(704, 412a-412m, 422a-422k)
der letzten 5-10 auf diesem Rechner verarbeiteten Nachrichten in
die Nachrichtenhistorie 712 einfügen, oder sogar noch mehr. Wenn
dann die empfangenden Rechner die übertragene neue Nachricht 700 empfangen,
werden sie annehmen, dass die neue Nachricht 700 von jeder
der zuletzt auf dem sendenden Rechner verarbeiteten Nachrichten
(aus der Nachrichtenhistorie 712) abhängt. Wenn der empfangende Rechner
noch nicht alle der zuletzt in der Nachrichtenhistorie 712 der Nachricht 700 verarbeiteten
Nachrichten empfangen hat, wird die neue Nachricht 700 nicht
verarbeiten, bevor alle der Nachrichten in der Nachrichtenhistorie 712 empfangen
wurden.
-
Angenommen
ein empfangender Rechner hat eine oder mehrere der Nachrichten in
der Nachrichtenhistorie 712 der neuen Nachricht 700 nicht, wird
er auf die fehlenden Nachrichten warten (wahlweise eine Anforderung
für die
Nachrichten senden, wie weiter unten detaillierter beschrieben wird). Wenn
die fehlenden Nachrichten empfangen wurden, werden die fehlenden
Nachrichten ebenfalls ein Nachrichtenhistorienfeld 712 haben
von der Zeit, zu der sie ursprünglich
gesendet wurden, und der empfangende Rechner wird die neuerdings
empfangenen und zuvor fehlenden Nachrichten nicht verarbeiten, bis
alle Nachrichten in ihrer Nachrichtenhistorie 712 ebenfalls
empfangen wurden. Auf diese Weise wird ein Rechner, der eine Nachricht 700 empfängt, die Nachrichten
und die Nachrichtenhistorien rückwärts in der
Zeit weiterhin überprüfen und
eine neuerdings empfangene Nachricht 700 nur verarbeiten,
nachdem alle Nachrichten in der Nachrichtenhistorie 712 empfangen
und verarbeitet wurden.
-
Als
weiteres Beispiel können,
alternativ oder zusätzlich
zum Senden der zuletzt auf einem gegebenen Rechner verarbeiteten
Nachrichten, die ausgehenden Nachrichtendaten 700 in ihrer
Nachrichtenhistorie 712 eine Liste von einer oder mehrerer der
zuletzt von diesem Rechner gesendeten Nachrichten enthalten. Jede
Zahl von zuvor gesendeten Nachrichten kann in der Nachrichtenhistorie 712 enthalten
sein, ohne von der Erfindung abzuweichen, inklusive z.B. 5-10 der
unmittelbar zuvor gesendeten Nachrichten. Der empfangende Rechner
kann diese Information zusätzlich
oder anstelle der oben beschriebenen Historie der zuletzt verarbeiteten
Nachrichten in der gleichen Weise verwenden, um sicherzustellen,
dass die neue Nachricht 700 nicht verarbeitet wird, bevor
alle zuvor von diesem Rechner gesendeten Nachrichten verarbeitetet
wurden.
-
Wenn
eine spätere
Nachricht eine frühere Nachricht
löscht
oder ausschneidet, brauchen Systeme oder Verfahren gemäß einiger
Beispiele dieser Erfindung wahlweise nicht auf die gelöschte Nachricht
oder die Nachricht, die sie löscht,
warten, bevor sie mit der anderen Verarbeitung fortfahren. Dieses Nachrichtenpaar
kann ignoriert werden und muss nicht empfangen und verarbeitet werden.
-
Zahlreiche
andere Wege zur Sicherstellung, dass Nachrichten in der richtigen
Reihenfolge verarbeitet werden, und die die richtigen Abhängigkeiten sicherstellen,
können
verwendet werden, ohne von der Erfindung abzuweichen. So können z.B.
wirklich unabhängige
Nachrichten als solche markiert werden, so dass Systeme und Verfahren
gemäß einiger Beispiele
dieser Erfindung wissen, dass sie sofort verarbeitet werden können, ohne
auf andere Nachrichten zu warten. Zusätzlich kann jede Anzahl von vorherigen
Nachrichten (zuvor verarbeitet und/oder zuvor gesendet) in die Nachrichtenhistorie 712 eingefügt werden,
ohne von der Erfindung abzuweichen, z.B. unter Berücksichtigung
verschiedener Faktoren, wie z.B. der Wahrscheinlichkeit, dass eine Nachricht
durch einen gegebenen Benutzer nicht empfangen wurde, Netzwerklast,
Netzwerkgeschwindigkeit, Rate der eingehenden Nachrichten, Anzahl
der Teilnehmer der Sitzung, Art der Verbindung, Wahrscheinlichkeit,
dass sich ein Benutzer von dem Netzwerk ankoppelt, etc..
-
D. Verarbeitung von eingehenden
Nachrichten
-
8 zeigt
ein Flussdiagramm, das verschiedene Aspekte der Verarbeitung von
Nachrichten in einigen Beispielen der Erfindung zeigt. Zum besseren
Verständnis
wird die Information in 8 in Verbindung mit den in 7 zur
Verfügung
gestellten Bezugszeichen diskutiert. In diesem Beispiel werden Nachrichten 700 über ein
Rechner-Rechner-Netzwerk
gesendet, z.B. unter Verwendung der Broadcasting-Möglichkeiten
von UDP. Wie dargestellt ist, beginnt der Ablauf (S800), wenn ein
Teilnehmer der Sitzung eine Broadcast-Nachricht 700 sendet,
die durch einen anderen Benutzer empfangen wird, der auf dem Netzwerk
lauscht (S802). Sich daran erinnernd, dass UDP Broadcastnachrichten
an alle Benutzer auf einem Subnetz gesendet werden, und nicht an
einen speziellen Benutzer des Subnetzes gerichtet sind, bestimmt
ein Subnetzbenutzer, der die Broadcastnachricht 700 empfängt, des
Systems und des Verfahrens gemäß dieses
Beispiels der Erfindung als nächstes,
ob er/sie auf diese Sitzungs-ID-Nummer lauscht (S804). Das kann
z.B. erreicht werden, in dem die in der Nachricht 700 enthaltene
Sitzungs-ID-Nummer 708 berücksichtigt
wird. Wenn der empfangende Benutzer auf diese Sitzungs-ID-Nummer lauscht
(Antwort ja bei S804), überprüft der Computer
des empfangenen Benutzers als nächstes,
ob alle vorhergehenden Nachrichten in der Nachrichtenhistorie 712 der
Nachricht 700 empfangen wurden (S806). Falls ja, wird die
neue Nachricht 700 verarbeitet (S808) und der Ablauf endet (S810)
(beginnt z.B. mit der Verarbeitung der nächsten Nachricht oder wartet
auf die nächste
Nachricht).
-
Wenn
im Schritt S806 festgestellt wurde, dass der empfangende Benutzer
nicht alle vorherigen Nachrichten, die in der Nachrichtenhistorie 712 der
neu empfangene Nachricht 700 vermerkt sind, empfangen hat
(Antwort „nein"), wird der Rechner des
empfangenen Benutzers eine Anforderung für jede fehlende Nachricht senden
oder übertragen (S812).
Nach einer geeigneten Wartezeit werden die Systeme und Verfahren
gemäß dieses
Beispiels der Erfindung feststellen, ob die angeforderte(n) Nachricht(en)
empfangen wurde(n) (S814). Falls nein, werden S812 und S814 wiederholt,
bis alle Nachrichten in der Nachrichtenhistorie empfangen wurden (geeignete
Zeitlimits und/oder Fehlermeldungen können vorgesehen sein, wenn
eine oder mehrere der fehlenden Nachrichten nie empfangen werden). Wenn
die eingehenden fehlenden Nachrichten empfangen wurden (Antwort „ja" bei S814), kehrt
das System nach S804 (siehe Punkt A) zurück und die Nachrichtenhistorien
der neuerdings empfangenen Nachrichten werden überprüft, um sicherzustellen, dass
alle Nachrichten in ihrer Nachrichtenhistorie empfangen wurden.
Alternativ kann Punkt A zu dem Ablauf unmittelbar vor S806 zurückkehren.
Auf diese Weise arbeitet sich der Ablauf in der Zeit zurück und beginnt
die Verarbeitung neuerdings empfangener Nachrichten nur, wenn alle
Nachrichten in ihrer Nachrichtenhistorie empfangen und verarbeitet
wurden.
-
Wenn
bei S804 der Empfänger
der eingehenden Nachricht nicht auf diese Sitzungs-ID-Nummer lauscht (Antwort „nein"), überprüfen die
Systeme und Verfahren gemäß dieses
Beispiels der Erfindung als nächstes,
ob die Teilnehmerliste 710 in der Nachricht 700 die
ID-Nummer des empfangenen Benutzers enthält (S816). Falls nein, war
diese Nachricht nicht für
den empfangenen Benutzer gedacht (S818) und die Nachricht wird durch
die Workstation des empfangenen Benutzers ignoriert. Der Ablauf
endet (S810) (z.B. kann der empfangende Benutzer mit dem Lauschen
auf neue Broadcastnachrichten fortfahren). Alternativ können die
Benutzer, die nicht an einer speziellen Sitzung beteiligt sind,
die eingehenden Nachrichten aufbewahren und in der Lage sein, Nachrichten
an neue Teilnehmer und/oder als Reaktion auf Anforderungen fehlender
Nachrichten erneut zu übertragen,
wie weiter untern detaillierter beschrieben wird.
-
Wenn
bei S816 die Teilnehmerliste 710 der eingehenden Nachricht 700 die
ID-Nummer des empfangenen Benutzers enthält (Antwort „ja"), kann der empfangene
Benutzer der Sitzung hinzugefügt werden
(S820) und die Überprüfung, um
sicherzustellen, dass alle vorherigen Nachrichten in der Nachrichtenhistorie 712 empfangen
wurden, kann beginnen (S806).
-
Bei
S812 sendet ein Empfänger
einer eingehenden neuen Nachricht 702 eine Anforderung
für eine
Nachricht in der Nachrichtenhistorie 712 der neuen Nachricht 700,
die zuvor nicht empfangen wurde. Dies kann insbesondere auftreten,
wenn UDP als Übertragungsprotokoll
verwendet wird, da wie oben erwähnt
UDP die Zustellung von Nachrichten an alle beabsichtigten Empfänger nicht
garantiert. Demzufolge müssen
Systeme und Verfahren gemäß einiger Beispiele
der Erfindung zumindest in einigen Fällen eine Nachricht an Teilnehmer übertragen,
die diese Nachricht nicht empfangen haben, als sie ursprünglich gesendet
wurde. Zusätzlich
müssen
Zuspätkommer
in einer Sitzung auf den aktuellen Stand gebracht werden, indem
sie alle vorherigen Nachrichten in der Sitzung erhalten. Unter Verwendung
des in 8 beschriebenen Ablaufs können alle Teilnehmer der Sitzung
leicht jede zuvor verpasste Nachricht erhalten, sobald sie eine
eingehende Nachricht darüber
informiert, dass sie eine Nachricht in der Nachrichtenhistorie verpasst
haben, ohne dass das System oder der Ablauf ungebührlich verlangsamt
würde.
-
Wenn
die Anforderung für
eine fehlende Nachricht übertragen
wird (S812), können
in diesem Beispiel der Erfindung alle Teilnehmer der Sitzung die Anforderung
empfangen, (z.B. als einen UDP Broadcast). Wenn alle Teilnehmer
die fehlende Nachricht erneut übertragen
würden,
würde dies
das System mit wiederholt übertragenen
Nachrichten übermäßig verstopfen,
ein Problem, das noch verschlimmert wird, wenn eine große Zahl
von Teilnehmern an einer Sitzung beteiligt sind. Demzufolge wird
in einigen Beispielen der Erfindung jeder Teilnehmer einer Sitzung
zufällig
entscheiden, ob die fehlende Nachricht zum Empfang für den Anforderer übertragen
werden soll, wenn eine derartige Anforderung empfangen wurde. Wenn
eine Sitzung z.B. sechs Teilnehmer enthält, und eine Anforderung für eine fehlende
Nachricht übertragen
wird, wird jeder der verbleibenden fünf Teilnehmer zufällig entscheiden,
ob er die fehlende Nachricht übertragen
soll (z.B. zufällig
eine Zahl zwischen 1 und 5 auswählen
und die Nachricht nur übertragen,
wenn die ausgewählte
Zahl 1 ist). Wenn niemand die Nachricht überträgt, wird eine weitere Anforderung
für eine
fehlende Nachricht herausgehen (wie oben diskutiert) und ein weiterer
Zufallsauswahlablauf wird auftreten. Dieser Ablauf kann wiederholt
werden, bis der anfordernde Teilnehmer die fehlende Nachricht erhalten
hat. Unter Verwendung dieser Art von Ablauf um fehlende Nachrichten
zur Verfügung
zu stellen, kann jeder Teilnehmer der Sitzung den anderen Teilnehmern
oder neuen Teilnehmern fehlende Nachrichten zur Verfügung stellen, wodurch
es den Teilnehmern freigestellt wird, der Sitzung beizutreten oder
sie zu verlassen, wobei zugleich alle ihre zuvor übertragenen
Daten in der Sitzung leicht verfügbar
bleiben.
-
In
einigen Beispielen dieses Aspekts der Erfindung kann die Entscheidung,
ob ein bestimmter Benutzer eine fehlende Nachricht erneut übertragen soll,
verschiedene Faktoren enthalten, z.B. die Wahrscheinlichkeit, dass
eine Nachricht in einem bestimmten Netzwerk verloren geht, Netzwerklast, Netzwerkgeschwindigkeit,
Anzahl der Teilnehmer in der Sitzung, Art der Verbindung etc.. Wenn
z.B. in einem bestimmten Netzwerk und/oder Sitzungsaufbau typischerweise
50 % der UDP Broadcastnachrichten verloren gehen und ein gegebener
Benutzer einer von fünf
Benutzern ist, der eine Anforderung für erneute Übertragung einer fehlenden
Nachricht empfangen, kann jeder spezielle Benutzer so programmiert
werden, dass er eine 2/5 Wahrscheinlichkeit für das erneute Übertragen
einer Nachricht als Antwort auf eine Anforderung der erneuten Übertragung
einer fehlenden Nachricht hat, um die Tatsache auszugleichen, dass
eine von zwei Broadcastnachrichten wahrscheinlich verloren geht.
-
Alternativ
kann, wenn ein neuer Teilnehmer in eine Sitzung kommt, zu jeder
Zeit ein Mechanismus installiert sein, um alle zuvor übertragenen Nachrichten
dem neuen Teilnehmer automatisch zur Verfügung zu stellen (z.B. jede
Nachricht wird durch den ursprünglich
sendenden Teilnehmer erneut übertragen,
durch einen oder mehrere ausgewählte Teilnehmer
und/oder in jeder anderen gewünschten
oder geeigneten Weise. Als weitere Alternative kann der ursprünglich sendende
Teilnehmer jede angeforderte fehlende Nachricht erneut übertragen,
wenn er oder sie in der Sitzung verblieben ist und zufällig ein
anderer Teilnehmer (oder in einer vorbestimmten Reihenfolge) könnte die
angeforderte fehlende Nachricht erneut übertragen, wenn der ursprünglich sendende Teilnehmer
nicht mehr in der Sitzung ist. Jede Art zur Feststellung des Teilnehmers
zur erneuten Übertragung
einer fehlenden Nachricht als Antwort auf eine Anforderung einer
fehlenden Nachricht kann verwendet werden, ohne von der Erfindung
abzuweichen.
-
E. „Ping" Daten
-
9 zeigt
eine Datenstruktur 900, die nützlich sein kann, um Systeme
und Verfahren gemäß einiger
Beispiele dieser Erfindung darin zu unterstützen, potentielle neue Teilnehmer
für eine
Sitzung zu entdecken und/oder festzustellen, dass ein Benutzer einer
bestehenden Sitzung beitreten könnte.
Wenn eine Sitzung stattfindet, werden die Teilnehmer der Sitzung
periodisch bestimmte identifizierende Daten übertragen, z.B. durch die Übertragung
der Daten auf dem Subnetz unter Verwendung der UDP Broadcast-Fähigkeiten. Diese Daten, die
in dieser Beschreibung auch „Ping
Daten" genannt werden,
informieren die anderen Benutzer des Netzwerks periodisch über bestimmte
Informationen. Ping Daten dieser Art werden herkömmlich z.B. in drahtlosen Verbindungen
und Kommunikationen verwendet.
-
In
Beispielen dieses Aspekts der vorliegenden Erfindung kann die Datenstruktur 900 verschiedene
bedeutsame Informationen bezüglich
einer Sitzung enthalten. Zunächst
kann ein Feld in der Datenstruktur 900 vorgesehen sein,
das Informationen enthält,
die einen Benutzer identifizieren, der den Ping aussendet (z.B.
eine Benutzer-ID-Nummer 902, die wie oben beschrieben den
Teilnehmer, der einen bestimmten Rechner verwendet, die Hardware,
oder beides u.dgl. beschreibt. Ein anderes Feld in der Datenstruktur 900 kann
Informationen bezüglich
der Sitzungen) 904 enthalten, an der die Workstation des Benutzers
beteiligt ist. Wie oben erwähnt,
kann jeder Computer oder jede Workstation eines Benutzers an mehr
als einer Sitzung beteiligt sein. Für jede Sitzung können die
Ping Daten verschiedene Informationen, wie z.B. eine Sitzungs-ID-Nummer 906a und 906b, eine
Sitzungsteilnehmerliste 908a und 908b (z.B. mit den
Benutzer-ID-Nummern
eines jeden Teilnehmers der Sitzung) u.dgl. enthalten.
-
Die
Ping Daten 900 können
auch Informationen enthalten bezüglich
der Nachrichtenhistorie für jede
Sitzung, an der der Benutzer beteiligt ist. Dieses Datenfeld wird
durch die Bezugsnummer 910 in 9 gezeigt.
Als Beispiel können
die Ping Daten für jede
Sitzung Daten enthalten, die die letzte Nachricht oder die zuletzt
durch diesen Computer verarbeitete Nachricht (Felder 912a und 912b)
und/oder Daten, die die letzte Nachricht oder die letzten Nachrichten, die
durch diesen Computer gesendet wurden, angeben (Felder 914a und 914b)
(z.B. in Form einer Nachrichten-ID-Nummer). Jede gewünschte Zahl von
Nachrichten kann in den Datenfeldern 912a, 912b, 914a und 914b enthalten
sein, ohne von der Erfindung abzuweichen (z.B. 5 bis 10 Nachrichten). Die
Verwendung von „Ping
Daten" hilft auf
diese Weise allen Benutzern auf dem laufenden zu bleiben und verhindert,
dass einzelne Nachrichten für
eine lange Zeit „verloren
gehen" (z.B. wenn
eine Nachricht verloren geht und eine lange Zeit vergeht, bevor
die nächste
Nachricht gesendet wird, ohne dass periodische „Ping Daten" verwendet werden,
um Nachrichten-IDs
zu senden, könnte
die verloren gegangene Nachricht für eine ausgedehnte Zeit verloren
bleiben, z.B. bis der ursprüngliche
Sender der Nachricht (oder ein anderer Teilnehmer) eine weitere
Nachricht sendet.
-
Zumindest
in einigen Beispielen der Erfindung können diese Ping-Daten in Verbindung
mit einem Ablauf verwendet werden, wie er in 10 dargestellt
ist, um auf einfache Weise Benutzer als neue Teilnehmer einer Sitzung
hinzuzufügen.
Z.B. beginnt der Ablauf aus 10 (S1000),
wenn ein Benutzer ein Netzwerk betritt, in dem eine Sitzung stattfindet. Der
neu eingetretene Benutzer wird irgendwann diese Art von Ping Daten
von Teilnehmern der Sitzung empfangen (S1002). Wenn die ID-Nummer
des Benutzers in den Ping Daten enthalten ist, die es von zumindest
einem Teilnehmer in einer Sitzung empfängt (S1004) (z.B. als Teil
einer Teilnehmerliste 908a oder 908b) (Antwort „ja"), weiß das System
des Benutzers, dass der Benutzer dieser Sitzung beitreten darf.
Der Rechner des Benutzers kann dann die Nachrichten anfordern, die
ihm aus der Nachrichtenhistorie 910, die in den Ping Daten 900 enthalten
ist, fehlen (S1006) und kann so in der Sitzung auf den aktuellen
Stand gebracht werden (z.B. durch den in Verbindung mit 8 beschriebenen
Ablauf). Wenn gewünscht,
kann dem Benutzer die Wahl gegeben werden, zu entscheiden, ob er/sie
einer Sitzung beitreten möchte,
z.B. durch eine Frage oder eine Dialogbox oder in irgendeiner anderen
geeigneten Weise. Der Ablauf aus 10 kann
dann zu Ende gehen (S1008) und das System des Benutzers kann auf
zusätzliche
Ping- und/oder Nachrichtendaten lauschen.
-
Wenn
der Ablauf bei S1004 feststellt, dass die ID-Nummer des Benutzers
in den Teilnehmerlisten 908a oder 908b in den
empfangenen Pingdaten 900 nicht enthalten ist (Antwort „nein"), kann dieser Ablauf
zu Ende gehen (S1008), den Schritt 1006 überspringen,
und das System kann fortfahren, auf zusätzliche Ping und/oder Nachrichtendaten
zu lauschen.
-
11 enthält ein Flussdiagramm,
das einen weiteren Ablauf beschreibt, durch den ein Benutzer als
potentieller Teilnehmer in einer Sitzung entdeckt und in die Sitzung
eingeladen werden kann. Zu Beginn des Ablaufs (S1100) betritt ein
Benutzer, der nicht an einer bestimmten Sitzung beteiligt ist, ein Netzwerk,
auf dem eine Sitzung stattfindet (S1102). Diese Tatsache kann durch
Teilnehmer der Sitzung erkannt werden, z.B. wenn der neu hinzugetretene Computer
des Benutzers Ping Daten 900 überträgt (z.B. über einen UDP Broadcast). Wenn
der neu hinzugetretene Benutzer nicht an irgendeiner Sitzung beteiligt
ist, können
die Ping Daten 900 auf die Benutzer-ID-Nummer 902 beschränkt sein,
wie in 9 gezeigt. Wenn einer oder mehrere Teilnehmer
der Sitzung diese Ping-Daten-Information des neu hinzugetretenen
Benutzers empfangen, kann das System oder Verfahren gemäß dieses
Beispiels einen oder mehrere der bestehenden Teilnehmer fragen,
ob der neu hinzugetretene Benutzer eingeladen werden soll, der Sitzung
beizutreten (S1104). Wenn die Teilnehmer entscheiden, den Neuling
in die Sitzung einzuladen (Antwort „ja") kann die Benutzer-ID-Nummer des Neulings
einer Teilnehmerliste der Sitzung hinzugefügt werden (S1106). Dann können Ping-Daten 900 mit
der Benutzer-ID-Nummer des Neulings in den Feldern 908a oder 908b gesendet
werden (S1108). Als Alternative wird auch die nächste Datennachricht 700 in
der Sitzung die Benutzer-ID des Neulings auf der Teilnehmerliste 710 enthalten. Wenn
der Neuling diese Ping-Daten 900 und/oder Nachrichtendaten 700 empfängt, wird
er seine Benutzer-ID-Nummer
in den Ping-Daten 900 und/oder Nachrichtendaten 700 bemerken
und der Ablauf aus 8 und/oder 10 kann
stattfinden. Der Einladungsablauf aus 11 beendet
dann S1110. Wahlweise kann der neue Benutzer eingeladen werden, der
Sitzung beizutreten, wie oben in Verbindung mit 10 beschrieben
wurde.
-
Wenn
die Teilnehmer in der Sitzung bei S1104 entscheiden, den Neuling
nicht in die Sitzung einzuladen (Antwort „nein"), werden S1106 und S1108 übersprungen
und der Ablauf endet (S11109). Die Ping-Daten 900 können auch
verwendet werden, um es anderen zu erlauben festzustellen, wenn
ein bestimmter Benutzer eine Sitzung verlassen hat. Wenn z.B die
Ping-Daten 900 eines Sitzungsteilnehmers innerhalb eines
vorbestimmten Zeitintervalls nicht empfangen wurden (z.B. vier mal
die Pingdatenübertra gungsfrequenz),
können
die anderen Teilnehmer daraus schließen, dass dieser Teilnehmer die
Sitzung verlassen hat. Wenn gewünscht,
können in
einigen Beispielsystemen und Verfahren die IDs der ehemaligen Teilnehmer
von der Sitzungsteilnehmerliste gestrichen werden. Wahlweise kann
das System die verbleibenden Teilnehmer der Sitzung fragen, ob der
ehemalige Teilnehmer von der Teilnehmer-ID-Liste der Sitzung gestrichen
werden soll.
-
F. Widersprüchliche
Nachrichten
-
Die
Systeme und Verfahren gemäß zumindest
einiger Beispiele der Erfindung werden Protokolle und Abläufe enthalten,
um gleichzeitige, nahezu gleichzeitige und widersprüchliche
Anweisungen zu behandeln. Unweigerlich werden sich in gemeinschaftlichen
Systemen und Verfahren dieser Art mit mehreren Benutzern, die unabhängig voneinander
in der Lage sind, Eingaben hinzuzufügen, einige Nachrichtendaten,
die von den verschiedenen Teilnehmern gesendet wurden, widersprechen.
So kann z.B. ein Teilnehmer versuchen, einen Tintenstrich, Striche,
Text oder Grafik zu genau der gleichen Zeit von der elektronischen
Weißwandtafel
auszuschneiden, zu der ein anderer Teilnehmer versucht, die Farbe, Größe oder
andere Eigenschaft von genau dem Strich, den Strichen, Text oder
Grafik zu ändern.
-
Diese
Situation kann in jeder geeigneten Weise gehandhabt werden, ohne
von der Erfindung abzuweichen. Wenn z.B. alle Workstations der Sitzung
auf einem gemeinsamen Netzwerk arbeiten, das eine gemeinsame zentrale
Uhr verwendet, kann jede Nachricht mit einem Übertragungszeitstempel auf
Basis dieser zentralen Uhr versehen werden, und die Reihenfolge
der Nachrichtenverarbeitung könnte auf
diesem Zeitstempel basieren. Für
zwei oder mehr Nachrichten, die genau zu der gleichen Zeit übertragen
wurden, kann eine hierarchische Reihenfolge von irgendeiner Art
verwendet werden, um festzustellen, welche Nachricht den Vorrang
hat. Z.B. kann eine alphabetische und/oder numerische hierarchische
Reihenfolge auf Basis der Benutzer-ID-Nummer für jeden an der Sitzung teilnehmenden
Benutzer verwendet werden. Als weiteres Beispiel könnte die Reihenfolge
auf Basis der Zeit, zu der die sich widersprechenden Teilnehmer
der Sitzung beigetreten sind, hergestellt werden. Viele andere Möglichkeiten inklusive
einer zufälligen
Auswahl einer der Nachrichten kann ebenfalls verwendet werden, ohne
von der Erfindung abzuweichen.
-
Da
Nachrichten über
ein Rechner-Rechner-Netzwerk in zumindest einigen Beispielen der
Erfindung übertragen
werden können,
können
zwei sich widersprechende gleichzeitige Nachrichten auf den Workstations
einiger Teilnehmer in der falschen Reihenfolge empfangen werden,
was zu einer Verarbeitung der Nachricht mit der niedrigeren Rangstufe führt, bevor
die Workstation des Benutzers überhaupt weiß, dass
eine Nachricht mit einer höheren
Rangstufe existiert. Nehmen wir z.B. an, dass ein Teilnehmer A eine
Nachricht A10 mit der Anweisung, einen Tintenstrich zu löschen, zu
genau dem gleichen Zeitpunkt sendet, zu dem der Teilnehmer B die
Nachricht B10 sendet, mit der der gleiche Tintenstrich vergrößert werden
soll. Diese beiden Nachrichten sind widersprüchlich. Nehmen wir weiter an,
dass aufgrund des Rangfolgeprotokolls die Nachricht A10 Vorrang hat
gegenüber
der Nachricht B10 (z.B. basierend auf einer alphabetischen/numerischen
Reihenfolge der widersprüchlichen
Nachrchten-IDs oder der widersprüchlichen
Sender IDs). Da jeder der Teilnehmer A und B mit allen Teilnehmern
in diesem Beispiel in direkter Weise kommuniziert, kann der Teilnehmer
C (sowie auch andere) die Nachricht B10 vor der Nachricht A10 empfangen.
Zu dem Zeitpunkt, zu dem die Nachricht B10 empfangen wird, kann
die Workstation des Teilnehmers C nichts über die Nachricht A10 wissen
und wenn alle vorhergehenden Nachrichten in der Nachrichtenhistorie
von B10 bei der Workstation des Teilnehmers 10 vorhanden sind, wird
diese Workstation die Nachricht B10 verarbeiten und erst später die
Nachricht A10 empfangen. In diesem Fall, wenn sie die Nachricht
A10 empfängt,
kann die Workstation des Teilnehmers C eine „Rückgängigmachen"-Funktion ausführen, um alle Nachrichten rückgängig zu
machen, bis die Nachricht B10 rückgängig gemacht
ist. Dann wird die Nachricht A10 auf dem Rechner des Teilnehmers
C verarbeitet und die Nachricht B10 wird verworfen (sowie auch jede
andere Nachricht verworfen wird, die von der Nachricht B10 abhängt). Die
anderen „rückgängig" gemachten Nachrichten,
die nicht von der Nachricht B10 abhängen, werden auf der Workstation
des Teilnehmers C erneut in der ursprünglichen oder in der Reihenfolge des
Zeitstempels verarbeitet.
-
Natürlich kann
jeder geeignete Ablauf oder Protokoll zur Verarbeitung von widersprüchlichen Nachrichten
verwendet werden, ohne von der Erfindung abzuweichen.
-
B. Einrichten einer neuen
Sitzung
-
Eine
neue Sitzung kann in jeder gewünschten
oder geeigneten Weise gestartet werden, ohne von der vorliegenden
Erfindung abzuweichen. Beim Starten eines elektronischen Weißwandtafelanwendungsprogramms
oder eines anderen Anwendungsprogramms könnte zum Beispiel das Programm
den startenden Teilnehmer auffordern, Namen oder Benutzer-ID-Nummern
der gewünschten
oder autorisierten Teilnehmer einzugeben. Als anderes Beispiel können, wenn
ein Anwendungsprogramm dieser Art gestartet wird, potentielle Teilnehmer
in der Sitzung identifiziert werden und über ihr Ping-Daten, wie oben
beschrieben, hinzugefügt
werden. Als weiteres Beispiel könnte,
wenn ein Programm dieser Art gestartet wird, der startende Teilnehmer
auf ein Menü der
verfügbaren
oder potentiellen Teilnehmer zugreifen und mögliche Teilnehmer aus dieser
Auflistung auswählen.
Diese Möglichkeiten
sind lediglich Beispiele. Kombinationen dieser Möglichkeiten und/oder andere
Möglichkeiten
können
verwendet werden, ohne von der Erfindung abzuweichen.
-
H. Sicherheit
-
Verschiedene
Beispiele der vorliegenden Erfindung verwenden, wie oben beschrieben
wurde, UDP Broadcasts, um Nachrichten und/oder Ping-Daten an Teilnehmer
der Sitzung zu übertragen.
Wie oben erwähnt, übertragen
UDP-Broadcasts Daten ohne Unterscheidung an alle Benutzer auf dem
Subnetz (und kann auf andere Subnetze überbrückt werden), selbst wenn zumindest
einige dieser Teilnehmer nicht an der Sitzung beteiligt werden sollen. Während diese
Funktion dahingehend vorteilhaft ist, dass sie es den Benutzern
erlaubt, einer Sitzung ungehindert beizutreten und sie zu verlassen,
birgt sie auch ein mögliches
Sicherheitsrisiko, da die Datennachrichten in der Sitzung auch anderen
gezeigt werden.
-
Dieser
Tatsache kann in jeder geeigneten Weise begegnet werden, ohne von
der Erfindung abzuweichen. So kann z.B. Verschlüsselung, Verwürfelung
und/oder ein anderes geeignetes Sicherheitsverfahren verwendet werden,
um unautorisierten Zugriff auf eine Sitzung und/oder Nachrichtendaten
zu verhindern. Als anderes Beispiel kann zumindest in einigen Beispielen
der Erfindung eine sicherere und direktere Kommunikation verwendet
werden, um zu verhindern, dass zumindest einige der Nachrchten und/oder
Ping-Daten allgemein übertragen
werden. Jede andere geeignete Sicherheitstechnik, inklusive der
herkömmlich
im Stand der Technik bekannten Techniken können verwendet werden, ohne
von der Erfindung abzuweichen.
-
V. Schlussbemerkung
-
Verschiedene
Beispiele der vorliegenden Erfindung wurden obenstehend beschrieben
und es versteht sich, dass die vorliegende Erfindung in ihrem Umfang
alle Kombinationen und Unterkombinationen dieser Beispiele umfasst.
Zusätzlich
wird der Fachmann erkennen, dass die obigen Beispiele einfach verschiedene
Aspekte der Erfindung veranschaulichen. Während z.B. viele Aspekte der
Erfindung in Bezug auf eine „elektronische
Weißwandtafelsitzung" oder eine andere
gemeinschaftliche Sitzung beschrieben wurden, wird der Fachmann
erkennen, dass die Erfindung nicht auf diese Art gemeinschaftlicher
Sitzungen beschränkt
ist. Im Gegenteil können Aspekte
der Erfindung allgemein auf verschiedene Arten der Kommunikation
zwischen verschiedenen Benutzern angewendet werden. Ebenso können verschiedene Änderungen
und Abwandlungen vorgenommen werden, ohne vom Umfang der Erfindung, wie
er in den beigefügten
Ansprüchen
definiert wird, abzuweichen.