(57)【要約】【課題】  ピアツーピアネットワークを介する、任意選択で協調セッション（たとえば「電子ホワイトボード」セッション）の参加者への一時的接続を介する、メッセージを通信するのに有用なシステムおよび方法を提供する。【解決手段】  上記のシステムおよび方法の例に、たとえば接続の一過性（たとえば無線接続）のゆえに参加者がセッションへの接続を失うかセッションから離れる時であっても、参加者の間でデータが失われず、接続が失われずに、参加者が簡単にセッションに出入りできるようにするデータ転送用のセッションを確立することが含まれる。これらの例示のシステムおよび方法を用いると、セッションの参加者が、進行中のセッションで前に送信されたデータに簡単にアクセスでき、追い付けるようになる。さまざまな開示されるデータ構造は、メッセージを通信するさまざまなシステムおよび方法でも有用である。【選択図】  図８
2004334847.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークでデータを転送する方法であって、
データ転送するために、複数の参加者を含むセッションを確立するステップと、
前記セッションにかかわる参加者からのメッセージをブロードキャストするステップであって、前記メッセージは、少なくとも、ブロードキャストする参加者の識別子、メッセージ識別子、セッション情報、およびメッセージペイロードを含むステップと、
前記ブロードキャストされるデータを受信するユーザが前記セッションの参加者であるかどうかを判定するステップと、
前記ユーザが前記セッションの参加者であるとき、前記ユーザについて前記メッセージを処理するステップと
を備えることを特徴とする方法。
【請求項２】
前記ユーザが前記セッションの参加者であるかどうかを判定するステップは、
（ａ）前記ユーザが前記セッションでアクティブであるかどうかを判定するステップ、または（ｂ）前記ユーザがセッション参加者リストに含まれるかどうかを判定するステップ
の少なくとも１つを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記ユーザは前記セッション参加者リストに含まれるが前記セッションで既にアクティブではないと判定されたとき、前記ユーザを前記セッションに追加することを特徴とする請求項２に記載の方法。
【請求項４】
前記ユーザについて前記メッセージを処理するステップの前に、前記方法は、
前記ユーザが前記セッション内のすべての前のメッセージを受信したかどうかを判定するステップ
をさらに備えることを特徴とする請求項１に記載の方法。
【請求項５】
前記セッション内で前記ユーザによって前に受信されなかった任意の前のメッセージを入手するステップ
をさらに含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記受信されなかった前のメッセージは、前記セッションの少なくとも１人の参加者からのブロードキャストを介して入手されることを特徴とする請求項５に記載の方法。
【請求項７】
前記セッション参加者は、１つまたは複数の前記受信されなかった前のメッセージをブロードキャストするかどうかをランダムに決定することを特徴とする請求項６に記載の方法。
【請求項８】
前記ユーザが前記セッション内のすべての前のメッセージを受信していないと判定されたとき、前記方法は、
（ａ）前記ユーザによって、少なくとも１つの未受信メッセージに関する要求を送信するステップと、
（ｂ）前記セッションの少なくとも１人の参加者によって、前記ユーザに前記少なくとも１つの未受信メッセージをブロードキャストするステップと、
（ｃ）前記セッション内のすべてのメッセージは前記ユーザによって受信されるまで（ａ）および（ｂ）を繰り返すステップと
をさらに備えることを特徴とする請求項４に記載の方法。
【請求項９】
前記セッションの各参加者は、前記ユーザによって要求された前記未受信メッセージの１つまたは複数をブロードキャストするかどうかをランダムに決定することを特徴とする請求項８に記載の方法。
【請求項１０】
前記セッションは、ピアツーピア通信を用いることを特徴とする請求項１に記載の方法。
【請求項１１】
前記セッションの前記参加者は、共通サーバに動作可能に接続されないことを特徴とする請求項１に記載の方法。
【請求項１２】
前記セッション参加者または前記ユーザの少なくとも１人は、無線接続を介して前記ネットワークに接続されることを特徴とする請求項１に記載の方法。
【請求項１３】
前記ユーザが前記セッションの参加者であるかどうかの前記判定は、
前記ユーザが前記ネットワークに存在することの指示を受信するステップと、
前記ユーザを前記セッションに追加するステップと
を含むことを特徴とする請求項１に記載の方法。
【請求項１４】
前記ユーザを前記セッションの参加者リストに追加するステップ
をさらに備えることを特徴とする請求項１３に記載の方法。
【請求項１５】
前記指示の受信に応答して、前記方法は、
前記ユーザを前記セッションに追加するかどうかを少なくとも１人のセッション参加者に問い合わせるステップ
をさらに備えることを特徴とする請求項１３に記載の方法。
【請求項１６】
前記指示の受信に応答して、前記方法は、
前記セッションに参加するように前記ユーザを勧誘するステップ
をさらに備えることを特徴とする請求項１３に記載の方法。
【請求項１７】
前記ユーザが前記セッションの参加者であるかどうかの前記判定は、
前記ユーザを前記セッションに追加するかどうかを少なくとも１人のセッション参加者に照会するステップ
を含むことを特徴とする請求項１に記載の方法。
【請求項１８】
前記メッセージペイロードは、電子インクデータを含むことを特徴とする請求項１に記載の方法。
【請求項１９】
前記セッションは、複数のセッション参加者がその上で新しいメッセージを追加し、既存メッセージを削除し、または既存メッセージを修正することができる仮想ホワイトボードを含むことを特徴とする請求項１に記載の方法。
【請求項２０】
前記ユーザが前記セッションの参加者であるかどうかの前記判定は、
前記セッションに参加するように前記ユーザを勧誘するステップと、
前記勧誘が受け入れられるときに前記ユーザを前記セッションの参加者リストに追加するステップと
を含むことを特徴とする請求項１に記載の方法。
【請求項２１】
前記メッセージは、ユーザデータグラムプロトコルを使用してブロードキャストされることを特徴とする請求項１に記載の方法。
【請求項２２】
セッションが発生しているネットワークにアクセスするステップであって、前記ネットワークは、前記セッション内でアクティブでないユーザによってアクセスされ、前記セッションは、メッセージデータを含むメッセージを送信し、かつ受信することができる複数の参加者を含むステップと、
前記ユーザを前記セッションに参加者として追加するかどうかを判定するステップと、
前記ユーザを前記セッションに参加者として追加するとき、前記セッション中に前に送信されたすべてのメッセージを前記ユーザに送信するステップと
を備えることを特徴とする方法。
【請求項２３】
前記ユーザを前記セッションに参加者として追加するかどうかの前記判定は、
前記ユーザが前記セッションの参加者リストに含まれるかどうかを判定するステップと、
前記ユーザが前記参加者リストに含まれるとき、前記ユーザを参加者として前記セッションに追加するステップと
を含むことを特徴とする請求項２２に記載の方法。
【請求項２４】
前記ユーザが前記参加者リストに含まれないとき、前記ユーザを前記セッションに追加するかどうかを少なくとも１人のセッション参加者に問い合わせることを特徴とする請求項２３に記載の方法。
【請求項２５】
前記ユーザを前記セッションに参加者として追加するかどうかの前記判定は、
前記ユーザが前記セッションの参加者リストに含まれるかどうかを判定するステップと、
前記ユーザが前記参加者リストに含まれないとき、前記ユーザを前記セッションに追加するかどうかを少なくとも１人のセッション参加者に問い合わせるステップと
を含むことを特徴とする請求項２２に記載の方法。
【請求項２６】
前記ユーザを前記セッションに参加者として追加するかどうかの前記判定は、
前記セッションに参加するように前記ユーザを勧誘するステップと、
前記勧誘が受け入れられるときに前記セッションに前記ユーザを追加するステップと
を含むことを特徴とする請求項２２に記載の方法。
【請求項２７】
前記セッション中に前に送信されたすべてのメッセージを送信するステップは、
（ａ）前記ユーザによって、少なくとも１つの未受信メッセージに関する要求を送信するステップと、
（ｂ）前記セッションの少なくとも１人の参加者によって、前記少なくとも１つの未受信メッセージを前記ユーザに送信するステップと
（ｃ）前記セッション中に前に送信されたすべてのメッセージが前記ユーザによって受信されるまで、（ａ）および（ｂ）を繰り返すステップと
を含むことを特徴とする請求項２２に記載の方法。
【請求項２８】
前記セッションは、ピアツーピア通信を用いることを特徴とする請求項２２に記載の方法。
【請求項２９】
前記セッションの前記参加者は、共通サーバに動作可能に接続されないことを特徴とする請求項２２に記載の方法。
【請求項３０】
前記セッション参加者または前記ユーザの少なくとも１人は、無線接続を介して前記ネットワークに接続されることを特徴とする請求項２２に記載の方法。
【請求項３１】
前記メッセージの少なくとも一部は、ユーザデータグラムプロトコルを使用してブロードキャストされることを特徴とする請求項２２に記載の方法。
【請求項３２】
前記メッセージの少なくとも一部は、電子インクデータを含むことを特徴とする請求項２２に記載の方法。
【請求項３３】
セッションの複数の参加者の間でメッセージを通信する方法であって、
少なくとも第１参加者ワークステーションおよび第２参加者ワークステーションにピアツーピアの方法で接続するステップであって、各参加者ワークステーションは、前記セッション内の他の参加者ワークステーションにピアツーピアの方法でメッセージデータをブロードキャストし、前記セッション内の他の参加者ワークステーションからブロードキャストされたメッセージデータをピアツーピアの方法で受信することができるステップと、
前記第１参加者ワークステーションによって第１メッセージをブロードキャストするステップと、
少なくとも前記第２参加者ワークステーションによって前記第１メッセージを受信するステップと、
前記第２参加者ワークステーションから、前記第１参加者ワークステーションからブロードキャストされたときに前記第１メッセージを受信しなかった前記セッションの少なくとも１つの他の参加者ワークステーションに、前記第１メッセージをブロードキャストするステップと
を備えることを特徴とする方法。
【請求項３４】
新しい参加者ワークステーションを前記セッションに追加するステップと、
前記第２参加者ワークステーションから、または前記第１参加者ワークステーション以外の前記セッション内に存在する参加者ワークステーションから、前記新しい参加者ワークステーションのために前記第１メッセージを入手するステップと
をさらに備えることを特徴とする請求項３３に記載の方法。
【請求項３５】
前記第１メッセージは、ユーザデータグラムプロトコルを使用してブロードキャストされることを特徴とする請求項３３に記載の方法。
【請求項３６】
前記第１メッセージは、電子インクデータを含むことを特徴とする請求項３３に記載の方法。
【請求項３７】
前記第１参加者ワークステーションは、前記第１メッセージが前記第２参加者ワークステーションによってブロードキャストされる前に前記セッションから離れることを特徴とする請求項３３に記載の方法。
【請求項３８】
前記参加者ワークステーションは、共通サーバに動作可能に接続されないことを特徴とする請求項３３に記載の方法。
【請求項３９】
ネットワークを介して受信されるデータを処理するシステムであって、複数の参加者の間のデータ転送を伴うセッションは前記ネットワーク上で発生し、前記システムは、
前記セッションにかかわる参加者から、少なくとも、ブロードキャストする参加者の識別子、メッセージ識別子、セッション情報、およびメッセージペイロードを含むブロードキャストメッセージを受信するように適合された受信器と、
前記メッセージを受信するユーザが前記セッションの参加者であるかどうかを判定し、前記ユーザが前記セッションの参加者であるときに前記メッセージを処理するようにプログラムされ、適合されたプロセッサと
を備えることを特徴とするシステム。
【請求項４０】
前記プロセッサは、（ａ）前記ユーザが前記セッションのアクティブな参加者であるかどうかを判定すること、または（ｂ）前記ユーザが前記セッションの参加者リストに含まれるかどうかを判定することの少なくとも１つによって前記ユーザは前記セッションの参加者であるかどうかを判定することを特徴とする請求項３９に記載のシステム。
【請求項４１】
前記プロセッサは、前記メッセージを処理する前に、前記ユーザが前記セッション内のすべての前のメッセージを受信したかどうかをさらに判定することを特徴とする請求項３９に記載のシステム。
【請求項４２】
前記ユーザによって前に受信されなかった前記セッション内の少なくとも１つの前のメッセージに関する要求を送信するように適合されたブロードキャストシステムをさらに備えることを特徴とする請求項４１に記載のシステム。
【請求項４３】
前記セッションは、ピアツーピア通信を用いることを特徴とする請求項３９に記載のシステム。
【請求項４４】
前記セッション内のデータ転送は、共通サーバを使用しないことを特徴とする請求項３９に記載のシステム。
【請求項４５】
前記受信器は、無線接続を介して前記ネットワーク上で前記メッセージペイロードを受信することを特徴とする請求項３９に記載のシステム。
【請求項４６】
前記メッセージペイロードは、電子インクデータを含むことを特徴とする請求項３９に記載のシステム。
【請求項４７】
前記セッションは、複数のセッション参加者がその上で新しいメッセージを追加し、既存メッセージを削除し、または既存メッセージを修正することができる仮想ホワイトボードを構成することを特徴とする請求項３９に記載のシステム。
【請求項４８】
前記メッセージは、ユーザデータグラムプロトコルを使用してブロードキャストされることを特徴とする請求項３９に記載のシステム。
【請求項４９】
メッセージデータを送信し、受信することができる複数の参加者を含むセッションが行われているネットワークにアクセスするように適合された接続システムと、
ワークステーションのユーザが前記セッションの参加者であるかどうかを判定するようにプログラムされ、適合されたプロセッサと、
前記ユーザが前記セッションの参加者であると判定されたとき、前記セッション中に送信されるメッセージデータを受信するように適合されたメッセージ受信システムと
を備えることを特徴とするワークステーション。
【請求項５０】
前記プロセッサは、前記ユーザが前記セッションの参加者リストに含まれるかどうかを判定することによって、前記ユーザが前記セッションの参加者であるかどうかを判定することを特徴とする請求項４９に記載のワークステーション。
【請求項５１】
少なくとも１つの前に受信されなかったメッセージに関する要求をブロードキャストするように適合されたブロードキャストシステム
をさらに備えることを特徴とする請求項４９に記載のワークステーション。
【請求項５２】
前記セッションは、ピアツーピア通信を用いることを特徴とする請求項４９に記載のワークステーション。
【請求項５３】
前記メッセージデータは、共通サーバを介して前記セッションのすべての参加者に転送されないことを特徴とする請求項４９に記載のワークステーション。
【請求項５４】
前記接続システムは、無線接続を介して前記ネットワークに接続することを特徴とする請求項４９に記載のワークステーション。
【請求項５５】
前記メッセージ受信システムは、ユーザデータグラムプロトコルを使用してブロードキャストされるメッセージを受信するように適合されることを特徴とする請求項４９に記載のワークステーション。
【請求項５６】
前記メッセージデータの少なくとも一部は、電子インクデータを含むことを特徴とする請求項４９に記載のワークステーション。
【請求項５７】
セッションの複数の参加者の間でメッセージを通信するシステムであって、
ピアツーピアネットワーク内で接続される複数の参加者ワークステーションであって、前記参加者ワークステーションの少なくとも一部は、前記ネットワークを介して前記セッション内の他の参加者ワークステーションにメッセージデータをブロードキャストすること、および、前記ネットワークを介して前記セッション内の他の参加者ワークステーションからのブロードキャストされたデータを受信することができる参加者ワークステーションを備え、
前記参加者ワークステーションの１つは、自由に前記セッションから退出することができ、前記退出する参加者ワークステーションによって前記セッションから退出する前にブロードキャストされた前記メッセージデータは、必要な場合、他の参加者ワークステーションが、前記退出する参加者ワークステーションによってブロードキャストされた前記メッセージデータを前に受信した残りの参加者ワークステーションから入手することができる
ことを特徴とするシステム。
【請求項５８】
新しい参加者ワークステーションは、前記セッションに自由に入り、１つまたは複数の参加者ワークステーションから前のメッセージデータを入手することができることを特徴とする請求項５７に記載のシステム。
【請求項５９】
前記メッセージデータは、ユーザデータグラムプロトコルを使用してブロードキャストされることを特徴とする請求項５７に記載のシステム。
【請求項６０】
前記メッセージデータの少なくとも一部は、電子インクデータを含むことを特徴とする請求項５７に記載のシステム。
【請求項６１】
前記複数の参加者ワークステーションは、メッセージデータ転送のために共通サーバに接続されないことを特徴とする請求項５７に記載のシステム。
【請求項６２】
セッションの参加者にメッセージデータを送信するためのデータ構造を記憶したコンピュータ可読媒体であって、前記データ構造は、
メッセージＩＤを表すデータを含む第１データフィールドと、
セッション情報を表すデータを含む第２データフィールドと、
メッセージペイロードを表すデータを含む第３データフィールドと
を含むことを特徴とするコンピュータ可読媒体。
【請求項６３】
前記セッション情報を表す前記データは、セッションＩＤ、セッション参加者リスト、およびセッションメッセージヒストリからなる群から選択される少なくとも１つのメンバを表すデータを含むことを特徴とする請求項６２に記載のコンピュータ可読媒体。
【請求項６４】
前記セッション情報を表す前記データは、少なくとも（ａ）セッションＩＤ、（ｂ）セッション参加者リスト、および（ｃ）セッションメッセージヒストリを表すデータを含むことを特徴とする請求項６２に記載のコンピュータ可読媒体。
【請求項６５】
前記データ構造は、
前記メッセージデータをブロードキャストする参加者の識別子を表すデータを含む第４データフィールド
をさらに含むことを特徴とする請求項６２に記載のコンピュータ可読媒体。
【請求項６６】
前記データ構造は、ユーザデータグラムプロトコルを使用するブロードキャスト用のフォーマットであることを特徴とする請求項６２に記載のコンピュータ可読媒体。
【請求項６７】
前記メッセージペイロードは、電子インクデータを含むことを特徴とする請求項６２に記載のコンピュータ可読媒体。
【請求項６８】
複数の参加者を含むデータ転送セッションにユーザがかかわるときに前記ユーザの識別データをネットワークに送信するためのデータ構造を記憶したコンピュータ可読媒体であって、前記データ構造は、
前記ユーザの識別を表すデータを含む第１データフィールドと、
前記データ転送セッションに関する識別情報を表すデータを含む第２データフィールドと、
前記セッションにおける前記ユーザのヒストリを表すデータを含む第３データフィールドと
を含むことを特徴とするコンピュータ可読媒体。
【請求項６９】
前記データ転送セッションに関する前記識別情報を表す前記データは、セッションＩＤおよびセッション参加者リストからなる群から選択される少なくとも１つのメンバを表すデータを含むことを特徴とする請求項６８に記載のコンピュータ可読媒体。
【請求項７０】
前記データ転送セッションに関する前記識別情報を表す前記データは、少なくともセッションＩＤおよびセッション参加者リストを表すデータを含むことを特徴とする請求項６８に記載のコンピュータ可読媒体。
【請求項７１】
前記ユーザのヒストリを表すデータは、セッションＩＤ、前記セッション内で前記ユーザによって処理された少なくとも最後のメッセージを識別するメッセージＩＤリスト、および前記セッション内で前記ユーザによって送信された少なくとも最後のメッセージを識別するメッセージＩＤリストからなる群から選択される少なくとも１つのメンバを表すデータを含むことを特徴とする請求項６８に記載のコンピュータ可読媒体。
【請求項７２】
前記ユーザのヒストリを表す前記データは、セッションＩＤおよび前記セッション内で前記ユーザによって処理された少なくとも最後のメッセージを識別するメッセージＩＤリストを少なくとも表すデータを含むことを特徴とする請求項６８に記載のコンピュータ可読媒体。
【請求項７３】
前記データ構造は、ユーザデータグラムプロトコルを使用するブロードキャスト用のフォーマットであることを特徴とする請求項６８に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全般的にはピアツーピアネットワーク（ｐｅｅｒ−ｔｏ−ｐｅｅｒ  ｎｅｔｗｏｒｋ）を介してメッセージを通信するシステム、方法、およびデータ構造に関する。そのようなシステム、方法、およびデータ構造は、たとえば、「電子ホワイトボード（ｅｌｅｃｔｒｏｎｉｃ  ｗｈｉｔｅｂｏａｒｄ）」セッションまたは類似物などの協調セッションに参加するために、一時的な（ｔｒａｎｓｉｅｎｔ）接続を介してメッセージを通信するのに使用することができる。
【背景技術】
【０００２】
さまざまな協調アプリケーションが周知であり、これによって、異なるワークステーションのユーザが、電子データおよび情報を同時に共用でき、同一の情報を同時に見ることができ、リアルタイムでその情報を変更でき、変更された情報を見ることができるようになる（「電子ホワイトボード」セッション、「ＮｅｔＭｅｅｔｉｎｇ（登録商標）」セッション（「ＮｅｔＭｅｅｔｉｎｇ（登録商標）」は米国ワシントン州レッドモンドのＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ社の登録商標である）、「ＷｅｂＥｘ（登録商標）」セッション（「ＷｅｂＥｘ（登録商標）」は米国カリフォルニア州サンノゼのＷｅｂＥｘ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｉｎｃ．社の登録商標である）に類似する）。そのようなアプリケーションでは、通常は、共通サーバが使用され、すべての参加者が、共通サーバを介してアプリケーションおよび電子ホワイトボードセッションに接続される。したがって、さまざまなセッション参加者が、データの追加、削除、および／または他の修正を行うデータメッセージを送信する際に、サーバは、そのメッセージを処理し、その結果を参加者に使用可能にする。
【０００３】
多くの場合、２つまたはそれ以上のセッション参加者が、システムの既存データに関して、おそらくは衝突する着信メッセージを電子ホワイトボードセッションに送信する。そのような場合、サーバは、どの着信データメッセージが処理されるかならびに着信信号の処理順序を判定し、ある所定のプロトコル（通常は受信の時刻）に従って、衝突し、かつ／または一貫性がない着信メッセージデータ命令を解決する。
【０００４】
別法では、いくつかの場合、共通サーバに接続するのではなく、セッション内のある参加者のマシンが、事実上の「サーバ」として指定される。その場合、この参加者のマシンによって、衝突するまたは着信のメッセージデータが解決される（やはり、通常は、そのマシンに着信するデータメッセージの時刻に基づいて）。
【０００５】
実際のサーバまたは事実上のサーバを使用するそのような使用可能な電子ホワイトボードセッションは、有用であるが、有用性を制限するある種の不利益をこうむる。たとえば、電子ホワイトボードセッションをセットアップし、セッションに参加するのに必要な情報について潜在的な参加者に知らせることは、特に多数の参加者が加わる必要があるかその可能性がある場合、時間がかかり、混乱を招くプロジェクトになる可能性がある。ユーザは、通常は、前に入手したパスワードおよび他の接続情報を使用して、セッションにログインする必要がある。少なくともいくつかの場合、電子ホワイトボードセッションをセットアップする当事者が、ログイン情報を受け取り、これにアクセスできなければならない人を判定することが、困難である場合がある。このセキュリティは、機密通信のためにいくつかの情況で必要になる可能性があるが、この事前の計画によって、特に即座にセッションが必要である場合、電子ホワイトボード通信を使用することが不便になり、ときには不可能になる。さらに、潜在的な参加者が、必要なログイン情報を受け取らないか突き止めることができない場合、その人は、セッションに参加できないか、参加がかなり遅れる可能性がある。さらに、多数のユーザが、さまざまなタイプのセッションに使用されるサーバを知らない可能性があり、これによって、セッションに参加する能力が妨げられる。
【０００６】
多くの通信が、このレベルのセキュリティを必要としない。たとえば、ローカルサブネットまたはイントラネットを介して通信する、会社の施設内に配置された単一の会社の従業員は、通常の電子ホワイトボード通信の追加のログイン機能およびセキュリティ機能を必要としない場合がある。
【０００７】
さらに、なんらかの理由で伝送が中断される場合、単一のサーバ（実際のサーバまたは事実上のサーバ）を使用することによって、データ転送が困難になる可能性がある。伝送の中断は、特に無線接続などの一時的接続を介してシステムに接続されるユーザに関して、頻繁に発生する。無線接続（または他の接続）の中断によって、ユーザがセッションに再ログインする必要が生じ、遅延および通信の問題が引き起こされる可能性がある。さらに、事実上のサーバとして働くマシンのユーザが、なんらかの理由でセッションから離れる場合、これによって、他の残りのユーザに関して中断および／またはセッション障害がもたらされる可能性がある。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
したがって、当技術分野には、上で説明したさまざまな短所の１つまたは複数を防ぐ、複数のユーザが協調の方法（たとえば電子ホワイトボードセッション）でデータメッセージを互いに確実に通信できるようにするアプリケーションの必要がある。そのようなシステムによって、参加者がセッションに自由に出入りできるようになると同時に、後から来る参加者および／または他の参加者がセッションを離れた後に来る参加者を含む、セッションへのすべての参加者へのすべてのメッセージデータの信頼性のある伝送が可能にならなければならない。
【課題を解決するための手段】
【０００９】
本発明の諸態様は、ピアツーピアネットワークを介する、任意選択で協調セッション（たとえば「電子ホワイトボード」セッション）の参加者への一時的接続を介する、メッセージ通信に有用なシステム、方法、およびデータ構造に関する。一態様では、本発明は、たとえば接続の一過性のゆえに参加者がセッションへの接続を失うかセッションから離れるときであっても、参加者の間でデータが失われず、接続が失われずに、参加者が簡単にセッションに出入りできるようにするデータ転送用のセッションを確立するシステムおよび方法に関する。別の態様では、本発明は、参加者が、進行中のセッションに簡単にアクセスでき、前に伝送されたデータに追い付けるようにするシステムおよび方法に関する。さまざまなデータ構造も、メッセージを通信するさまざまなシステムおよび方法で有用である。そのようなデータ構造は、セッションの参加者へのメッセージペイロードのブロードキャスト（ｂｒｏａｄｃａｓｔ）に使用することができる。他の有用なデータ構造に、任意選択でユーザが複数の参加者を含むデータ転送セッションにかかわるときの、ネットワークを介するユーザの識別データのブロードキャストに関するデータを含めることができる。メッセージペイロードおよびユーザ識別データをブロードキャストすることによって、ネットワーク上の他のユーザが、進行中のセッションにかかわり、セッションに参加しなければならないかどうかを簡単に判定することができる。
【００１０】
本発明の上記および他の目的、特徴、および長所は、添付図面と共に解釈される下記の詳細な説明から簡単に明白になり、完全に理解される。
【発明を実施するための最良の形態】
【００１１】
上で説明したように、本発明の諸態様は、無線接続などの一時的接続を使用して一緒に接続されるワークステーションの間の通信を含む、ピアツーピアネットワークを介するメッセージの通信のシステム、方法、およびデータ構造に関する。以下の説明は、読者を助けるためにサブセクションに分割される。サブセクションには、用語、本発明のさまざまな態様の全般的な説明、ハードウェアの例、本発明によるシステム、方法、およびデータ構造の例、および結論が含まれる。
【００１２】
Ｉ．用語
本明細書で、下記の用語が使用される。  
用語「メッセージ」、「メッセージデータ」、または「データメッセージ」は、全般的に、本明細書で交換可能に使用される。これらの用語は、あるマシンから、他のマシンによる受信のために送信されるすべてのデータを意味する。用語「メッセージペイロード」は、全般的に、データメッセージのうちで、セッションの他のユーザに転送される情報を含む部分を指す。
【００１３】
「ユーザ」は、従来のサブネット接続、イントラネット接続、またはインターネット接続を介するなど、ある方法で通信ネットワークに接続された当事者を意味する。接続は、有線接続、無線接続、または当技術分野で既知の従来の接続など、あらゆる従来の接続とすることができる。
【００１４】
「セッション」は、通信ネットワークを介して互いに通信する複数のネットワークユーザの出会いを意味する。セッションにかかわるユーザは、共通のサブネット上、異なるサブネット上、またはその両方に位置することができる。通信は、視覚的、聴覚的、またはこの組合せとすることができる。
【００１５】
「参加者（パーティシパント）」は、セッションにかかわるユーザを意味する。
【００１６】
「マシン」は、通信ネットワークを介する通信に使用されるすべての装置を指す。「マシン」には、コンピュータ端末またはワークステーション、デスクトップＰＣ、ペンベースまたはスタイラスベースのＰＣ、ノートブックコンピュータ、および／またはラップトップコンピュータ、パームトップ機、ＰＤＡ、電話機、および類似物が含まれるが、必ずしもこれに制限されない。
【００１７】
「コンピュータ可読媒体」は、コンピュータシステムのユーザによってアクセスできるすべての使用可能媒体を意味する。制限ではなく例として、「コンピュータ可読媒体」に、コンピュータ記憶媒体および通信媒体を含めることができる。「コンピュータ記憶媒体」には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報の記憶のすべての方法または技術で実施された、揮発性および不揮発性の、取外し可能および取外し不能の媒体が含まれる。「コンピュータ記憶媒体」には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術；ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）、または他の光学記憶装置；磁気カセット、磁気テープ、磁気ディスク記憶装置、または他の磁気記憶装置；あるいは所望の情報の記憶に使用でき、コンピュータによってアクセスできるすべての他の媒体が含まれるが、これに制限はされない。「通信媒体」によって、通常は、搬送波または他のトランスポート機構などの変調されたデータ信号内で、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータが実施され、通信媒体には、すべての情報配布媒体が含まれる。用語「変調されたデータ信号」は、信号内で情報をエンコードするような方法で１つまたは複数の特性を設定または変更された信号を意味する。制限ではなく例として、通信媒体に、有線ネットワークまたは直接配線接続などの有線媒体と、音響、ＲＦ、赤外線、および他の無線媒体などの無線媒体が含まれる。上記のいずれかの組合せも、「コンピュータ可読媒体」の範囲に含まれなければならない。
【００１８】
ＩＩ．本発明のさまざまな態様の全般的な説明
本発明の諸態様は、ピアツーピアネットワークを介するメッセージの通信に有用なシステム、方法、およびデータ構造に関する。そのようなシステム、方法、およびデータ構造は、たとえば、協調セッションにピアツーピアの方法で参加するための一時的接続を介するメッセージの通信に使用することができる。
【００１９】
本発明の１つのより特定の態様は、ネットワーク上でデータを転送する方法に関する。本発明のこの態様には、（ａ）データ転送するために、複数の参加者を含むセッションを確立することと、（ｂ）前記セッションにかかわる参加者からのメッセージをブロードキャストすることであって、前記メッセージは、少なくとも、ブロードキャストする参加者の識別子、メッセージ識別子、セッション情報、およびメッセージペイロードを含む、ブロードキャストすることと、（ｃ）前記ブロードキャストされるメッセージを受信するユーザは前記セッションの参加者であるかどうかを判定することと、（ｄ）前記ユーザは前記セッションの参加者であるとき、前記ユーザについて前記メッセージを処理することとが含まれる。前記ユーザが前記セッションの参加者であるかどうかを判定することは、本発明の少なくともいくつかの例で、（ａ）前記ユーザは前記セッションでアクティブであるかどうかを判定すること、または（ｂ）前記ユーザはセッション参加者リストに含まれるかどうかを判定することを含めることができる。他の参加者へのデータ転送に悪影響を及ぼさずに、参加者をセッションに自由に追加することができ、かつ／または参加者がセッションから自由に離れることができる。
【００２０】
本発明によるいくつかの例示的方法では、新たに入手されたメッセージを前記ユーザまたは参加者のために処理することの前に、前記方法は、さらに、前記ユーザまたは参加者は前記セッション内のすべての前のメッセージを受信したかどうかを判定することを含む。未受信メッセージが発見される場合、これらのメッセージを、ユーザまたは参加者のために入手することができる。未受信メッセージは、任意の適切な方法で入手することができる。たとえば、セッションの別の参加者からのブロードキャストを介して、任意選択でメッセージを必要とするユーザまたは参加者が不足（missing）メッセージを要求した後に、そのメッセージを入手することができる。本発明のこの態様のいくつかの例で、セッション参加者は、不足メッセージ要求を受信するとき、１つまたは複数の未受信の前のメッセージを送信するかどうかをランダムに決定する。メッセージ要求および不足メッセージの送信は、ユーザがメッセージヒストリ内のすべてのメッセージを受信するまで繰り返すことができる。
【００２１】
ユーザがセッションの参加者であるかどうかの判定は、本発明から逸脱せずに、任意の適切な方法で達成することもできる。たとえば、ユーザの識別（たとえばＩＤ番号）を、セッションへの参加を許可される全ユーザのマスタリスティングに対して検査することができる。別の例として、１つまたは複数の既存セッション参加者が、新規ユーザが存在するかネットワーク上で求めに応じられることの表示を受信することができ、任意選択で新規ユーザをセッションに追加しなければならないかどうかをセッションの１つまたは複数の参加者に尋ねた後に、そのユーザをセッションに追加することができる。さらに別の例として、新規ユーザが存在するかネットワーク上で求めに応じられることの表示を受信した後に、この方法に、さらに、セッションに参加するように新規ユーザを勧誘する（任意選択で、その勧誘を発行しなければならないかどうかをセッションの少なくとも１人の参加者に尋ねた後に）ことと、勧誘が受け入れられる場合に限ってその人を追加することを含めることができる。
【００２２】
本発明の別の態様は、進行中のセッションへのアクセスを得る方法に関する。本発明のこの態様のいくつかの例の方法に、（ａ）セッションが行われているネットワークにアクセスすることであって、前記ネットワークは、前記セッション内でアクティブでないユーザによってアクセスされ、前記セッションは、メッセージデータを送信し、受信することができる複数の参加者を含むことと、（ｂ）前記ユーザを前記セッションに参加者として追加するかどうかを判定することと、（ｃ）前記ユーザは前記セッションに参加者として追加されるとき、前記セッション中に前に送信されたすべてのメッセージを前記ユーザにブロードキャストすることとが含まれる。ユーザをセッションに追加するかどうかの判定は、上で説明したさまざまな方法を含む任意の適切な方法で達成することができる。
【００２３】
本発明のさらなる態様は、セッションの複数の参加者の間でメッセージを通信する方法に関する。本発明のこの態様のいくつかの例に、（ａ）少なくとも第１参加者ワークステーションおよび第２参加者ワークステーションにピアツーピアの方法で接続することであって、各参加者ワークステーションは、前記セッション内の他の参加者ワークステーションにピアツーピアの方法でメッセージデータをブロードキャストすることができ、前記セッション内の他の参加者ワークステーションからブロードキャストされたメッセージデータをピアツーピアの方法で受信することができることと、（ｂ）前記第１参加者ワークステーションによって第１メッセージをブロードキャストすることと、（ｃ）少なくとも前記第２参加者ワークステーションによって前記第１メッセージを受信することと、（ｄ）前記第１参加者ワークステーションからブロードキャストされたときに前記第１メッセージを受信しなかった、前記セッションの少なくとも１つの他の参加者ワークステーションに前記第２参加者ワークステーションから前記第１メッセージをブロードキャストすることとが含まれる。さらに、本発明のこれらの態様の少なくともいくつかの例で、新しい参加者ワークステーションをセッションに追加することができ、これらの新たに追加されるワークステーションは、セッションから離れたワークステーションからのメッセージを含むそのセッションの以前のメッセージを、セッションにかかわるままである参加者ワークステーションから入手することができる。
【００２４】
本発明のさらに別の態様は、ネットワーク上の複数の参加者の間でのデータ転送を伴うセッション中にネットワークを介して受信されるデータを処理するシステムに関する。そのようなシステムに、本発明の少なくともいくつかの例で、（ａ）前記セッションにかかわる参加者からのブロードキャストメッセージを受信するように適合された受信器であって、前記メッセージは、少なくとも、ブロードキャストする参加者の識別子、メッセージ識別子、セッション情報、およびメッセージペイロードを含む受信器と、（ｂ）前記メッセージを受信するネットワークユーザが前記セッションの参加者であるかどうかを判定し、前記ユーザが前記セッションの参加者であるときに前記メッセージを処理するようにプログラムされ、適合されたプロセッサとが含まれる。前記プロセッサは、少なくともいくつかの例で、（ａ）前記ユーザは前記セッションのアクティブな参加者であるかどうかを判定すること、または（ｂ）前記ユーザは前記セッションの参加者リストに含まれるかどうかを判定することの少なくとも１つによって前記ユーザは前記セッションの参加者であるかどうかを判定することができる。前記メッセージを処理する前に、前記プロセッサは、さらに、前記ユーザが前記セッション内のすべての前のメッセージを受信したかどうかを判定することができ、メッセージが受信されていない場合、ブロードキャストシステムをアクティブ化して、セッションの前に受信されなかったメッセージの要求を送信することができる。
【００２５】
本発明のさらに別の態様は、上で説明した発明による方法を含むさまざまな情報を実施するのに有用なワークステーションに関する。本発明のこの態様によるいくつかの例のワークステーションに、（ａ）その上でセッションが行われているネットワークにアクセスするように適合された接続システムであって、前記セッションは、メッセージデータを送信し、受信することができる複数の参加者を含む接続システムと、（ｂ）前記ワークステーションのユーザが前記セッションの参加者であるかどうかを判定するようにプログラムされ、適合されたプロセッサと、（ｃ）前記ユーザが前記セッションの参加者であると判定されたとき、前記セッション中に送信されるメッセージデータを受信するように適合されたメッセージ受信システムとを含めることができる。
【００２６】
本発明の他の例は、セッションの複数の参加者の間でメッセージを通信するシステムに関する。そのようなシステムに、本発明の少なくともいくつかの例で、ピアツーピアネットワーク内で接続される複数の参加者ワークステーションであって、前記参加者ワークステーションの少なくともいくつかは、前記ネットワークを介して前記セッション内の他の参加者ワークステーションにメッセージデータをブロードキャストすることと、前記ネットワークを介して前記セッション内の他の参加者ワークステーションからのブロードキャストされたメッセージデータを受信することとができる、複数の参加者ワークステーションを含めることができる。いくつかの例によるシステムで、さまざまな個々の参加者ワークステーションが、自由に前記セッションから退出することができ、前記退出する参加者ワークステーションによって前記セッションから退出する前にブロードキャストされた前記メッセージデータを、必要な場合、他の参加者ワークステーションによって、そのメッセージデータを前に受信した残りの参加者ワークステーションから入手することができる。既存のセッションから離れることのほかに、新しい参加者ワークステーションは、前記セッションに自由に入ることができ、前記セッションに残っている１つまたは複数の参加者ワークステーションから前のメッセージデータ（それ以降に前記セッションから離れたワークステーションからのメッセージデータを含む）を入手することができる。
【００２７】
本発明の別の例示的な態様では、サブネット上のマシンおよび／またはセッションから着信メッセージデータを受信するマシンは、セッションに能動的に参加していないものであっても、着信メッセージデータを受信し、ログ記録し、維持することができる。したがって、本発明の少なくともいくつかの例で、特定のセッションにかかわらないマシンであっても、セッションに新たに到着する参加者にデータを再ブロードキャストし、かつ／またはセッション内の不足メッセージ要求に応答することができる。
【００２８】
本発明の態様は、セッションの参加者にメッセージデータを送信するためのデータ構造を記憶されたコンピュータ可読媒体にも関する。いくつかの例で、このデータ構造に、（ａ）メッセージＩＤを表すデータを含む第１データフィールドと、（ｂ）セッション情報を表すデータを含む第２データフィールドと、（ｃ）メッセージペイロードを表すデータを含む第３データフィールドとを含めることができる。前記セッション情報を表す前記データは、本発明の少なくともいくつかの例で、セッションＩＤ、セッション参加者リスト、およびセッションメッセージヒストリからなる群から選択される少なくとも１つのメンバを表すデータを含むことができる。さらなる追加の例で、データ構造に、さらに、前記メッセージデータをブロードキャストする参加者の識別子を表すデータを含む第４データフィールドを含めることができる。
【００２９】
本発明による少なくともいくつかのシステムおよび方法に有用な別の例のデータ構造に、任意選択でユーザが複数の参加者を含むデータ転送セッションに参加するとき、ネットワークにユーザの識別データを転送するためのデータ構造を含めることができる。少なくともいくつかの例で、このデータ構造に、（ａ）ユーザの識別を表すデータを含む第１データフィールドと、（ｂ）前記データ転送セッションに関する識別情報を表すデータを含む第２データフィールドと、（ｃ）前記セッション内の前記ユーザのヒストリを表すデータを含む第３データフィールドとを含めることができる。前記データ転送セッションに関する前記識別情報を表す前記データは、たとえば、セッションＩＤおよびセッション参加者リストからなる群から選択される少なくとも１つのメンバを表すデータを含むことができる。前記ユーザのヒストリを表す前記データは、たとえば、セッションＩＤ、前記セッション内の前記ユーザのワークステーションによって処理された少なくとも最後のメッセージを識別するメッセージＩＤリスト、および前記セッション内の前記ユーザによって送信された少なくとも最後のメッセージを識別するメッセージＩＤリストからなる群から選択される少なくとも１つのメンバを表すデータを含むことができる。
【００３０】
本発明によるさまざまなシステム、方法、およびデータ構造は、本発明から逸脱せずに、すべてのメッセージデータの通信に使用することができる。いくつかの例で、メッセージデータに、電子インクデータ、テキストデータ、グラフィックスなどを含めることができる。別の例で、セッションを、複数のセッション参加者がメッセージデータの追加、削除、または修正を行える「仮想ホワイトボード」セッションの形式とすることができる（たとえば、各参加者の個々のコンピュータ画面に、メッセージデータのレンダリングを表示することができ、参加者が、データに追加し、データから削除し、かつ／またはデータを修正することができ、ある参加者によって行われた追加、削除、および／または修正が、他の参加者の画面にも表示される）。また、さまざまなセッション参加者へのメッセージデータの送信に任意の適切なプロトコルを使用することができるが、本発明のいくつかの例で、メッセージが、ユーザデータグラムプロトコル（「ＵＤＰ」）および／または転送制御プロトコル（「ＴＣＰ」）を使用してブロードキャストされる。以下で、本発明によるシステム、方法、およびコンピュータ可読媒体を詳細に説明する。
【００３１】
ＩＩＩ．ハードウェアの例
図１に、本発明のさまざまな態様を実施するのに使用することができる汎用デジタルコンピューティング環境の概略図を示す。図１では、コンピュータ１００に、処理ユニット１１０、システムメモリ１２０、およびシステムバス１３０が含まれ、システムバス１３０によって、システムメモリ１２０を含むさまざまなシステムコンポーネントが、処理ユニット１１０に結合される。システムバス１３０は、メモリバスまたはメモリコントローラ、周辺バス、およびさまざまなバスアーキテクチャのいずれかを使用するローカルバスを含む複数のタイプのバス構造のいずれかとすることができる。システムメモリ１２０には、読取専用メモリ（ＲＯＭ）１４０およびランダムアクセスメモリ（ＲＡＭ）１５０を含めることができる。
【００３２】
起動中などにコンピュータ１００内の要素の間で情報を転送するのを助ける基本ルーチンを含む基本入出力システム１６０（ＢＩＯＳ）が、ＲＯＭ１４０に記憶される。コンピュータ１００には、ハードディスク（図示せず）から読み取り、これに書き込むハードディスクドライブ１７０、取外し可能磁気ディスク１９０から読み取り、これに書き込む磁気ディスクドライブ１８０、ＣＤ  ＲＯＭまたは他の光学媒体などの取外し可能光ディスク１９９から読み取り、これに書き込む光ディスクドライブ１９１も含めることができる。ハードディスクドライブ１７０、磁気ディスクドライブ１８０、および光ディスクドライブ１９１は、それぞれ、ハードディスクドライブインターフェース１９２、磁気ディスクドライブインターフェース１９３、光ディスクドライブインターフェース１９４によってシステムバス１３０に接続される。これらのドライブおよびそれに関連するコンピュータ可読媒体によって、パーソナルコンピュータ１００のコンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの不揮発性ストレージがもたらされる。磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ、ランダムアクセスメモリ（ＲＡＭ）、読取専用メモリ（ＲＯＭ）、および類似物など、コンピュータによってアクセス可能なデータを記憶できる他のタイプのコンピュータ可読媒体をも、例示的オペレーティング環境で使用できることを、当業者は理解するであろう。
【００３３】
オペレーティングシステム１９５、１つまたは複数のアプリケーションプログラム１９６、他のプログラムモジュール１９７、およびプログラムデータ１９８を含む複数のプログラムモジュールを、ハードディスク１７０、磁気ディスク１９０、光ディスク１９９、ＲＯＭ１４０、またはＲＡＭ１５０に記憶することができる。ユーザは、キーボード１０１およびポインティングデバイス１０２（マウスなど）などの入力装置を介して、コンピュータ１００にコマンドおよび情報を入力することができる。他の入力装置（図示せず）に、マイクロホン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナ、または類似物を含めることができる。上記および他の入力装置は、しばしば、システムバス１３０に結合されるシリアルポートインターフェース１０６を介して処理ユニット１１０に接続されるが、パラレルポート、ゲームポート、またはｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ（ＵＳＢ）および類似物などの他のインターフェースによっても接続することができる。さらに、これらの装置を、適当なインターフェース（図示せず）を介してシステムバス１３０に直接に結合することができる。
【００３４】
モニタ１０７または他のタイプの表示装置も、ビデオアダプタ１０８などのインターフェースを介してシステムバス１３０に接続される。モニタ１０７に加えて、パーソナルコンピュータには、通常、スピーカおよびプリンタなどの他の周辺出力装置（図示せず）が含まれる。一例では、ペンディジタイザ１６５および付随するペンまたはスタイラス１６６が、手書き入力をデジタル的に取り込むために設けられる。ペンディジタイザ１６５とシリアルポートインターフェース１０６との間の接続が図１に示されているが、実際には、当技術分野で既知のように、ペンディジタイザ１６５を、処理ユニット１１０に直接に結合することができ、あるいは、パラレルポートまたは別のインターフェースおよびシステムバス１３０を介するなど、任意の適切な方法で処理ユニット１１０に結合することができる。さらに、ディジタイザ１６５は、図１ではモニタ１０７と別に図示されているが、ディジタイザ１６５の使用可能な入力領域を、モニタ１０７の表示領域と共存させることができる。さらに、ディジタイザ１６５は、モニタ１０７と一体化することができ、モニタ１０７にオーバーレイされるか、そうでなければ付加される別々の装置として存在することができる。
【００３５】
コンピュータ１００は、リモートコンピュータ１０９などの１つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク化された環境で動作することができる。リモートコンピュータ１０９は、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の一般的なネットワークノードとすることができ、リモートコンピュータ１０９には、通常は、コンピュータ１００に関して上で説明した要素の多数またはすべてが含まれるが、図１には、図を単純にするためにメモリストレージデバイス１１１だけが図示されている。図１に示された論理接続には、ローカルエリアネットワーク（ＬＡＮ）１１２および広域ネットワーク（ＷＡＮ）１１３が含まれる。有線接続および無線接続の両方を使用する、そのようなネットワーキング環境は、オフィス、会社全体のコンピュータネットワーク、イントラネット、およびインターネットでありふれたものである。
【００３６】
ＬＡＮネットワーキング環境で使用されるとき、コンピュータ１００は、ネットワークインターフェースまたはネットワークアダプタ１１４を介してローカルエリアネットワーク１１２に接続される。ＷＡＮネットワーキング環境で使用されるとき、パーソナルコンピュータ１００に、通常は、インターネットなどの広域ネットワーク１１３を介する通信リンクを確立する、モデム１１５または他の手段が含まれる。モデム１１５は、コンピュータ１００の内蔵または外付けとすることができるが、シリアルポートインターフェース１０６によってシステムバス１３０に接続することができる。ネットワーク化された環境では、パーソナルコンピュータ１００に関して図示されたプログラムモジュールまたはその一部を、リモートメモリストレージデバイスに記憶することができる。
【００３７】
図示のネットワーク接続が例であり、コンピュータの間の通信リンクを確立する他の技法を使用できることを理解されたい。ＴＣＰ／ＩＰ、Ｅｔｈｅｒｎｅｔ（登録商標）、ＦＴＰ、ＨＴＴＰ、ＵＤＰ、および類似物などのさまざまな周知のプロトコルのいずれかの存在が想定され、このシステムは、ユーザがウェブベースサーバからウェブページを検索できるようにするために、ユーザ−サーバ構成で動作することができる。さまざまな従来のウェブブラウザのいずれかを使用して、ウェブページのデータを表示し、操作することができる。
【００３８】
図１の環境に、例示的環境が示されているが、他のコンピューティング環境も使用できることを理解されたい。たとえば、本発明の１つまたは複数の例で、図１に示され、上で説明されたさまざまな態様のすべてより少ない態様を有する環境を使用することができ、これらの態様が、当業者に明白なさまざまな組合せおよびサブコンビネーションに現れない場合がある。
【００３９】
図２に、本発明のさまざまな態様に従って使用することができるペンベースパーソナルコンピュータ（ＰＣ）２０１を示す。図１のシステムの特徴、サブシステム、および機能のいずれかまたはすべてを、図２のコンピュータに含めることができる。ペンベースのパーソナルコンピュータシステム２０１には、たとえば、液晶ディスプレイ（ＬＣＤ）画面など、複数のウィンドウ２０３が表示される、ディジタイジングフラットパネルディスプレイなどの大きいディスプレイ表面２０２が含まれる。スタイラス２０４を使用して、ユーザが、ディジタイジングディスプレイ領域で選択し、強調表示し、書き込むことができる。適切なディジタイジングディスプレイパネルの例に、Ｍｕｔｏｈ  Ｃｏ．社またはＷａｃｏｍ  Ｔｅｃｈｎｏｌｏｇｙ  Ｃｏ．社から入手可能なペンディジタイザなどの電磁ペンディジタイザが含まれる。たとえば光学ディジタイザなどの他のタイプのペンディジタイザも使用することができる。データを操作し、テキストを入力し、スプレッドシート、ワードプロセッシングプログラム、および類似物などの作成、編集、および修正などの普通のコンピュータアプリケーションタスクを実行するために、ペンベースコンピューティングシステム２０１によって、スタイラス２０４を使用して行われるジェスチャが解釈される。
【００４０】
スタイラス２０４に、その機能を補足するためにボタンまたは他の特徴を装備させることができる。一例では、スタイラス２０４を、「鉛筆」または「ペン」として実施することができ、この場合、一端が、書込部分を構成し、他端が、「消しゴム」端を構成し、この他端が、ディスプレイ上で移動されるとき、ディスプレイ上で、電子インクのうちの消去される部分が示される。マウス、トラックボール、キーボード、または類似物などの他のタイプの入力装置も使用することができる。さらに、ユーザ自身の指を使用して、接触感知ディスプレイまたは近接感知ディスプレイ上で、表示されたイメージの諸部分を選択または指示することができる。その結果、本明細書で使用される用語「ユーザ入力装置」は、広義の定義を有することが意図され、周知の入力装置に対する多数の変形形態が含まれる。
【００４１】
本発明のいくつかの例で、複数のユーザが、ピアツーピアネットワークを介して互いに通信する。これらのユーザは、いくつかの例で、すべての参加者がデータを見ることができ、表示できる方法で、ある参加者からのデータメッセージが別の参加者に通信されるセッション（たとえば、「電子ホワイトボード」セッションまたは別のタイプの協調セッション）に参加することができる。
【００４２】
図３Ａおよび３Ｂに、本発明のある例で行うことができる、互いに通信する参加者Ａ〜Ｊの例を示す。本発明によるいくつかの例のシステムおよび方法では、参加者Ａ〜Ｊのすべてに共通サーバに接続させるかまたは参加者のワークステーションの１つを事実上のサーバとして指定するのではなく、参加者Ａ〜Ｊが、たとえば図１および２に示されたものに類似する汎用コンピュータを有するワークステーションを使用して、ピアツーピアネットワークを介して通信する。この方法での通信は、当技術分野で既知のように、さまざまな通常の方法を含む任意の適切な方法で処理することができる。図示の例では、各参加者が、自分のメッセージデータをピアツーピアネットワークを介して送信し（たとえばブロードキャストまたは指示された送信によって）、その結果、他の参加者が、そのデータを受信するようになる。図３Ａに、参加者Ａがデータメッセージを参加者Ｂ〜Ｊにブロードキャストした例を示す。次に、図３Ｂで、参加者Ｃが、参加者Ａ、Ｂ、およびＤ〜Ｊにデータメッセージをブロードキャストした。これと同一の方法で、ネットワーク上のすべての参加者Ａ〜Ｊ（および、実際にネットワークのすべてのユーザ）が、通信を送信し、ネットワークの他の参加者（およびユーザ）から通信を受信することができる。
【００４３】
適当なシステムまたはプロトコルを使用して、本発明から逸脱せずに、参加者およびネットワークのユーザの間でメッセージを伝送することができる。たとえば、メッセージデータを、ＴＣＰまたはＵＤＰを使用して、ネットワークを介してセッションのさまざまな参加者に向けることができる。ＴＣＰによって、共通サブネット上のユーザおよび異なるサブネットに位置するユーザの両方への順序通りのデータパケットの配送が保証されるので、ＴＣＰメッセージ伝送が有利である（たとえば、インターネットまたは他の通信ネットワークを介する配送）。ＵＤＰでは、メッセージ配送または順序通りのメッセージ配送が保証されない。
【００４４】
別の例として、本発明のいくつかの例によるシステムおよび方法によって、ＵＤＰのブロードキャスト機能を使用し、所与のサブネット上のすべてのユーザにメッセージデータをブロードキャストすることができる（ＴＣＰでは、ブロードキャスト送信がサポートされない）。メッセージデータが、セッションの参加者のリストによりエンコードされる場合、ネットワーク上のユーザは、着信メッセージデータを調べ、そのメッセージデータを含むセッションに参加しているかどうかを判定し、参加者である場合にセッションに参加し、かつ／またはメッセージペイロードを処理することができる。この方法でのデータ転送に関するＵＤＰブロードキャストメッセージの使用を、下で詳細に説明する。
【００４５】
このタイプのＵＤＰブロードキャストは、一般に、共通サブネットに位置するユーザへの送信に制限される。しかし、ブリッジングシステムおよび方法を使用して、本明細書に記載のＵＤＰブロードキャストメッセージのすべてを、他のサブネット上のユーザにブリッジすることができる。本発明から逸脱せずに、任意の適切なブリッジするシステムおよび方法を使用することができるが、適切なブリッジするシステムおよび方法が、発明者Philip SuおよびRobert Jarrettの名義で２００３年４月に出願された「Bridging Subnet Broadcasts Across Subnet Boundaries」という名称の米国特許出願（整理番号第００３７９７．００５０７号）に記載されている。この出願は、参照によってその全体を本明細書に組み込まれる。
【００４６】
しかし、上で注記したように、ＵＤＰブロードキャストは、このプロトコルで配送が保証されず、かつ／またはすべてのユーザへのメッセージデータパケットの順序通りの配送が保証されないという点で、制限を有する。しかし、本発明によるいくつかの例のシステムおよび方法では、システムおよび方法によって、参加者のメッセージが不足しているかどうかを判定する方法を提供し、最初に送信されたときにメッセージを受信しなかったユーザに、不足しているメッセージを再送信する方法を提供することによって、この制限が克服される。本発明のこれらの態様によって、セッションに後から参加するユーザまたは偶然にセッションから脱落したユーザが、簡単に「追いつき（catch up）」、前にセッション中に送信された不足しているメッセージデータを受信できるようになる。本発明のこれらの態様も、下で詳細に説明する。
【００４７】
ＩＶ．本発明によるシステム、方法、およびデータ構造の例
Ａ．いくつかの例で維持されるデータ
図４に、本発明によるシステムおよび方法のいくつかの例でユーザワークステーションまたは他の適当な記憶システムによって維持することができるいくつかの情報およびデータ４００を全体的に示す。各ユーザおよび／またはコンピュータワークステーションが、ネットワーク上の他のユーザに対してユーザおよび／またはワークステーションハードウェアを識別する固有の識別番号４０２によって識別される。このユーザ識別番号によって、コンピュータシステムにログオンした当事者および／またはハードウェア自体が具体的に識別される。
【００４８】
各ユーザは、潜在的に、図４では符号４０４ａ（セッション１）から４０４ｎ（セッションｎ）によって示される、任意の数の異なる協調セッションにかかわることができる。各セッション４０４ａから４０４ｎを、固有の識別番号（図４では４０６ａから４０６ｎ）によって識別することができ、ワークステーションまたは他の記憶システムによって、セッションごとに個々の参加者リスト（図４では４０８ａから４０８ｎ）を維持することができる。あるセッションの参加者リスト４０８ａから４０８ｎに、単純に、そのセッションにかかわる参加者ごとおよび／またはセッションに参加することを許可されるユーザごとに固有のユーザＩＤ番号４０２を含めることができる。
【００４９】
各セッションに、セッションに含まれるメッセージのリスティングも含めることができる。図４では、セッション１（４０４ａ）のメッセージに、符号４１０ａから４１０ｍが割り当てられ、セッションｎ（４０４ｎ）のメッセージに、符号４２０ａから４２０ｋが割り当てられている。特定のセッションに含めることができるメッセージの数には、制限がない。各メッセージ（４１０ａから４１０ｍおよび４２０ａから４２０ｋ）に、それ自体の固有の識別子が含まれる（メッセージ４１０ａから４１０ｍに対してそれぞれ識別子４１２ａから４１２ｍ、メッセージ４２０ａから４２０ｋに対してそれぞれ識別子４２２ａから４２２ｋ）。さらに、各メッセージ（４１０ａから４１０ｍおよび４２０ａから４２０ｋ）に、それに関連するメッセージペイロード（メッセージ４１０ａから４１０ｍに対してそれぞれメッセージペイロード４１４ａから４１４ｍ、メッセージ４２０ａから４２０ｋに対してそれぞれメッセージペイロード４２４ａから４２４ｋ）が含まれる。メッセージペイロードには、電子インクストローク、テキスト情報、グラフィカル情報、インク、テキストまたはグラフィックスを削除し、移動し、かつ／または修正する命令、および類似物など、任意の適切なデータを含めることができる。
【００５０】
ユーザＩＤ４０２、セッションＩＤ４０６ａから４０６ｎ、メッセージＩＤ４１２ａから４１２ｍおよび４２２ａから４２２ｋの固有の識別子は、当技術分野で既知の普通の方法で割り当てることができる。たとえば、グローバル固有識別番号（「ＧＵＩＤ」）を、これらの値のそれぞれに割り当てることができる。
【００５１】
Ｂ．電子ホワイトボード
１．独立メッセージ
図５Ａから５Ｊに、本発明の少なくともいくつかの例による、仮想ホワイトボードまたは電子ホワイトボードを介するセッションまたは他の協調セッションの複数の参加者の間で交換することができるデータメッセージの例を示す。図５Ａから５Ｊのそれぞれに、メッセージデータが交換される際に参加者のワークステーションのディスプレイ画面に表示することができる例の電子ホワイトボード５００を示す。参加者を、図３Ａおよび３Ｂに関して説明した方法でメッセージデータを転送するのにＵＤＰブロードキャスト伝送を使用するピアツーピアネットワークに一緒に接続することができる。本発明から逸脱せずに、参加者を、同一の場所または異なる場所に位置するものとすることができる。
【００５２】
図５Ａから５Ｊに、電子ホワイトボードに単語「Ｂｒｅａｋ」を書く際の参加者Ａ〜Ｃによる協調作業に関連する電子インクストロークを示す。少なくとも参加者Ａ〜Ｃは、ある時にセッションにかかわり、そのセッション中に、この単語が、電子ホワイトボードに書かれるが、本発明から逸脱せずに、他者が、このセッションにかかわることができ、かつ／または参加者Ａ〜Ｃが、いつでもこのセッションから離れることができる。電子インクデータは、当技術分野で既知の普通の方法を含む任意の適切な方法で収集することができ、この電子インクデータを、たとえば、図４のメッセージペイロード４１４ａから４１４ｍとして供給することができる。メッセージペイロードには、インクストローク中にペンが接触する電子ホワイトボードの点（または、ペン方向変化の位置および新しいペン方向）、電子ホワイトボード上のストローク位置、ストロークの色、他のストローク特性（太字、斜体、強調表示、下線付きなど）、および類似物を含むが必ずしもこれに制限されない電子インクのさまざまな特徴を表すデータを含めることができる。
【００５３】
図５Ａおよび５Ｂに示されているように、参加者Ａは、自分のコンピュータワークステーションに表示される電子ホワイトボード５００を使用して、文字「Ｂ」を書いた。この例の電子ペンの各ストロークが、少なくとも１つの個々のデータメッセージ（メッセージＡ１およびメッセージＡ２）を構成し、このデータメッセージが、参加者Ａのコンピュータから、たとえば、ＵＤＰブロードキャスト、ＴＣＰ伝送、または他の適切な伝送プロトコルを介して、セッションの他の参加者に送信される。参加者Ａが文字「Ｂ」を完成した後に、類似する方法で、参加者Ｂが、自分のコンピュータワークステーションで２つの電子インクストロークを使用して文字「ｒ」を書き、これらのストロークに対応する（少なくとも）２つのデータメッセージ（図５Ｃおよび５ＤのメッセージＢ１およびＢ２）を、他の参加者に送信する。次に、参加者Ｃが、１ストロークを使用して文字「ｅ」を書き、このストロークを表す（少なくとも）１つの電子データメッセージ（図５ＥのメッセージＣ１）を他の参加者に送信する。その後、参加者Ａが、２ストロークを使用して文字「ａ」を書き、このストロークを表す（少なくとも）２つのデータメッセージ（図５Ｆおよび５ＧのメッセージＡ３およびＡ４）を他の参加者に送信し、参加者Ｂが、３ストロークを使用して文字「ｋ」を書き、このストロークを表す（少なくとも）３つのデータメッセージ（図５Ｈ、５Ｉ、および５ＪのメッセージＢ３、Ｂ４、およびＢ５）を他の参加者に送信する。
【００５４】
図５Ａから５Ｊに示された例では、インクストロークのそれぞれが、他のストロークと独立であり、したがって、各参加者のワークステーションへのさまざまなデータメッセージの「時間順の」配送は、この例では重要な問題ではない（特筆すべきことに、この例の各ストロークのメッセージデータに、電子ホワイトボード上のストロークの絶対位置が含まれ（任意選択で、他の参加者のハードウェアのホワイトボードの位置、解像度などと一致させるための適当なマッピングを可能にする情報を伴う）、あるストロークの位置が、別のストロークの位置に依存しない）。言い換えると、参加者Ｂが、文字「ａ」からの１つまたは複数のストローク（メッセージＡ３および／またはＡ４）を受け取った後に、かつ／または文字「ｋ」を書き始めた後に、メッセージＣ１からの文字「ｅ」を受け取る場合、問題がない。ストロークは、任意の順序で各参加者の電子ホワイトボードに表示される可能性があり、それでも、最後の単語が、正しく表示される。
【００５５】
また、図５Ａ〜５Ｊに示された例に、別々のデータメッセージからなるものとして各ストロークが示されているが、これは要件ではない。本発明から逸脱せずに、任意の数のストロークまたは単一ストロークの一部を、単一のデータメッセージに含めることができる。たとえば、本発明から逸脱せずに、必要に応じて、文字「Ｂ」を書くことに含まれるストローク（図５Ａおよび５Ｂ）を、単一のデータメッセージで他のセッション参加者に送信することができる。別の例として、本発明から逸脱せずに、非常に長いストロークおよび／または複雑なストロークを複数のデータメッセージに分割して、他の参加者に送信することができる。
【００５６】
２．依存メッセージ
しかし、いくつかの場合、ある参加者が、他のメッセージに作用するか他のメッセージに依存するメッセージを送信する。たとえば、参加者が、１つまたは複数の既存のインクストローク、テキスト、グラフィックス、または類似物の色を変更するか、情報を強調表示する、情報を斜体にする、情報に下線を付ける、情報を太字にする、情報を削除する、情報を拡大する、情報を縮小する、情報を移動する、情報をコピーする、あるいは内容または特性に対する他の変更を行う場合がある。図６Ａから６Ｅに、そのような一例を示す。図６Ａは、図５Ａから５Ｊで書かれたように単語「Ｂｒｅａｋ」で始まる。参加者Ａ、Ｂ、およびＣが、電子ホワイトボード６００での協調作業を使用して、この単語を単語「Ｂｒａｋｅ」に変更すると決定した。この変更の最初のステップとして、図６Ａおよび６Ｂを比較するとわかるように、参加者Ｃが、「切り取り」機能を使用して、文字「ｅ」を切り取った（すなわち、図６ＢからのメッセージＣ２によって、図５ＥのメッセージＣ１が削除されるか切り取られた）。このステップは、参加者Ｃによって、文字「ｅ」を選択し（たとえばなげなわまたは箱選択）、切り取り動作を実行する適切な方法、たとえば従来の方法を使用して実行することができる。別の代替案として、文字「ｅ」を、従来の消去機能を使用してホワイトボードから消去することができる。メッセージＣ２が、セッションの他の参加者に送信されて、この変更が行われた。したがって、この例のメッセージＣ２は、メッセージＣ１に依存する（すなわち、文字「ｅ」を書き込むメッセージが、切り取り動作を実行するメッセージを実行する前に受信されなければならない）。
【００５７】
協調作業の次のステップは、参加者Ａが、文字「ａｋ」を文字「Ｂｒ」の近くに移動することである。図６Ｃを参照されたい。やはり、これは、任意の適切な方法、たとえば、マウス、ペン、または他の適切なユーザ入力装置による選択アクション（たとえばなげなわまたは箱選択あるいは類似物）およびドラッグアクションを使用して達成することができる。このアクションは、セッションの他の参加者に、メッセージＡ５として送信される。メッセージＡ５は、少なくともメッセージＡ３、Ａ４、Ｂ３、Ｂ４、およびＢ５が行われていることを必要とする。任意選択で、メッセージＡ５が、この特定の例によるシステムまたは方法がオーバーラップする情報を処理できるかどうか（たとえば、レイヤ構造を使用するか他の適切な方法で）に応じて、メッセージＣ２（上で注記したように、メッセージＣ１が行われたことに依存する）が行われていることに依存するものとすることができる。
【００５８】
次のステップで、図６Ｄに示されているように、参加者Ｂによって、電子インクを使用して、文字「Ｂ」に下線が付けられる。この情報は、メッセージＢ６として他の参加者に送信される。メッセージＢ６は、やはり、他のすべてのメッセージに依存しない。というのは、このメッセージで、既存のメッセージデータ（たとえばインクストローク）の特性の修正、削除、そうでなければ変更が行われないからである。図６Ｄに示された方法で手作業で下線を付けることは、この方法で手作業で下線を付ける際のインク、テキスト、またはグラフィックに対するモディファイヤが、単に別のインクストロークであり、下線を付けられるインクまたは他のテキストのデータ構造を修正しないので、電子的に生成される下線付けの使用と区別される。
【００５９】
図６Ｅに、参加者Ｃが、移動された文字「ｋ」の後に、メッセージＣ２（図６Ｂ）で削除された文字「ｅ」を貼り付ける「貼付け」動作を示す。このデータメッセージは、メッセージＣ３としてセッションの他の参加者に送信される。メッセージＣ３は、少なくともメッセージＣ２の以前の実行に依存し、メッセージＣ２自体は、メッセージＣ１が行われていることに依存する。任意選択で、メッセージＣ３は、この特定の例によるシステムまたは方法が、オーバーラップする情報を処理できるかどうか（たとえば、レイヤ構造を使用するか他の適切な方法で）に応じて、メッセージＡ３、Ａ４、Ａ５、Ｂ３、Ｂ４、およびＢ５が行われていることに依存するものとすることができる。やはり、本発明から逸脱せずに、本発明の例によるシステムおよび方法によって、このタイプのオーバーラップする情報およびその表示を、適切な方法で処理することができる。
【００６０】
代替案として、貼付けアクションを使用するのではなく、図６ＥにメッセージＣ３として示されたように、セッションの参加者が、単純に、適当な位置で別の文字「ｅ」を再度書くことができる。この場合には、新しいストロークは、上で全般的に述べたように電子ホワイトボードでオーバーラップする情報または階層化された情報を処理するのに依存性が必要でない限り、他のストロークに依存しない。
【００６１】
本発明から逸脱せずに、依存性情報を処理する任意の適切な方法を使用することができる。たとえば、メッセージを送信する参加者のマシンは、参加者の発信メッセージによって要求されるアクションを実行するために最低限でも実行されなければならないデータメッセージを判定することによって、上で説明した一般的な方法での依存情報を追跡することができる。その後、メッセージデータが他の参加者に送信される（たとえばブロードキャストされる）とき、新たにブロードキャストされるメッセージによって要求される機能を実行するのに必要なすべての他のメッセージの固有のメッセージＩＤを含むようにそのメッセージデータをエンコードすることができる。受信するマシンは、依存性情報を調べ、新たに受信されたメッセージを実行する前に、すべての必要な「親」メッセージが実行されることを保証することができる。依存性を処理する別の方法を、下で図７〜８に関して説明する。
【００６２】
Ｃ．発信メッセージのデータ構造
図７に、本発明によるシステムおよび方法のさまざまな例で有用な、参加者のワークステーションからの発信メッセージのデータ構造７００を全体的に示す。この例のデータ構造７００には、メッセージを送信する参加者のユーザＩＤ番号７０２を表すデータを含むフィールドが含まれる。このユーザＩＤは、図４に関して上で説明した固有のユーザ識別子４０２とすることができ、これによって、メッセージを送信する特定のユーザまたは参加者を識別することができる。さらに、または代替として、ユーザＩＤ７０２に、メッセージを送信する特定のハードウェアを識別する情報、ハードウェアの特性、および／または送信されるデータ、あるいは類似物（たとえば、データを正確に変換し、セッションに含まれるさまざまなマシンにマッピングできるようにするための、ディスプレイ解像度情報または類似物）などのハードウェア情報を含めることができる。
【００６３】
例のデータ構造７００の別のフィールドに、送信されるメッセージの固有のメッセージ識別子７０４が含まれる。このメッセージ識別子７０４は、図４に関して上で説明したメッセージ識別子４１２ａ〜４１２ｍおよび４２２ａ〜４２２ｋに対応するものとすることができる。
【００６４】
図７の例のデータ構造７００には、この新しいメッセージが向けられるセッションに関するさまざまな情報７０６を含む別のフィールドが含まれる。本発明から逸脱せずに、さまざまなタイプの情報をこのデータフィールドに含めることができる。たとえば、図７に示されているように、このデータフィールドに、メッセージペイロードが向けられる固有のセッションＩＤ番号７０８を含めることができる。また、このデータフィールドに、セッションの参加者のリスト７１０を含めることもできる（たとえば、セッションのすべての参加者および／またはセッションへの参加を許可されるすべてのユーザのユーザＩＤ番号７０２の形式で）。データ構造７００のセッション情報７０６の別の可能な部分に、「メッセージヒストリ」情報７１２を含めることができる。このメッセージヒストリ情報に、上で説明したように、この現在のメッセージのすべての依存性情報を含めることができる（たとえば、必要な親のメッセージＩＤ番号７０４のすべて）。
【００６５】
最後に、この例のデータ構造７００の別のデータフィールドに、実際のメッセージペイロード７１４が含まれ、このメッセージペイロード７１４によって、受信するマシンに、このメッセージの結果として行われるアクションが示される。上で説明したように、このメッセージペイロード７１４に、電子インク情報（たとえば、インクストローク）；テキスト；グラフィックス；電子インク、テキスト、グラフィックス、または類似物を修正する情報；および／または他の適切なまたは所望の情報を含めることができる。
【００６６】
依存性情報および親データメッセージ情報を実際に追跡することが、必要になるまでメッセージアクションが処理されないことを保証する効果的な方法であるが、これを行うことは、少なくともいくつかの場合、困難（不可能でないとしても）および／または計算的に高価である。したがって、本発明のいくつかの例によれば、図７に示されたものなどの発信メッセージに、ある他のタイプのメッセージヒストリ７１２を含めることができる。例として、メッセージ７００を送出するマシンによって、少なくともそのマシンで処理された最後のメッセージのメッセージ識別番号（７０４、４１２ａ〜４１２ｍ、および４２２ａ〜４２２ｋ）を含めることができる。いくつかの例で、データ構造７００のメッセージヒストリ７１２に、そのマシンで処理された最後の５〜１０個のメッセージのメッセージ識別番号（７０４、４１２ａ〜４１２ｍ、および４２２ａ〜４２２ｋ）が含まれる。次に、受信側のマシンは、送信された新しいメッセージ７００を受信するとき、新しいメッセージ７００が、送信側のマシンで処理された最後のメッセージのそれぞれ（メッセージヒストリ７１２から）に依存すると仮定する。受信側のマシンは、まだメッセージ７００のメッセージヒストリ７１２で最後に処理されたメッセージのすべてを受信していない場合、メッセージヒストリ７１２のすべてのメッセージを受信するまで、新しいメッセージ７００を処理しない。
【００６７】
受信側のマシンが、新しいメッセージ７００のメッセージヒストリ７１２のメッセージの１つまたは複数を有しないと仮定すると、受信側のマシンは、不足しているメッセージを待つ（任意選択で、下で詳細に説明するように、メッセージに関する要求を送信する）。不足しているメッセージが受信されるとき、不足しているメッセージも、最初に送信された時からのメッセージヒストリフィールド７１２を有し、受信側のマシンは、この新たに受信されたメッセージおよび前の不足メッセージを、それらのメッセージヒストリ７１２のすべてのメッセージが受信されるまで処理しない。この方法で、メッセージ７００を受信するマシンは、時間的に後ろに向かってメッセージおよびメッセージヒストリの検査を続け、メッセージヒストリ７１２内のすべてのメッセージが受信され、処理された後に限って、新たに受信されたメッセージ７００を処理する。
【００６８】
別の例として、所与のマシンで処理された最後のメッセージの送信の代替としてまたは追加して、発信メッセージデータ７００のメッセージヒストリ７１２に、この特定のマシンによって送信された最後から１つまたは複数のメッセージのリストを含めることができる。本発明から逸脱せずに、たとえば直前に送信された５〜１０個のメッセージを含む、任意の数の前に送信されたメッセージは、メッセージヒストリ７１２を含めることができる。受信側のマシンによって、上で説明した最後に処理されたメッセージヒストリに追加してまたはその代わりにこの情報が使用されて、同一の方法で、このマシンによって前に送信されたすべてのメッセージが処理されるまで、新しいメッセージ７００が処理されないことが保証される。
【００６９】
任意選択で、必要に応じて、後のメッセージによって前のメッセージが削除されるか切り取られる場合、本発明のいくつかの例によるシステムおよび方法では、他の処理に関して進行する前に、削除されるメッセージまたはそれを削除するメッセージを待つ必要がない。このメッセージの対を無視し、受信されず処理されないままにすることができる。
【００７０】
メッセージが正しい順序で処理されることを保証し、正しい依存性を保証するさまざまな他の方法を、本発明から逸脱せずに使用することができる。たとえば、本発明から逸脱せずに、真に独立のメッセージを、それとしてマークすることができ、その結果、本発明のいくつかの例によるシステムおよび方法によって、他のメッセージを待たずにそれらを即座に処理できることが理解されるようになる。さらに、本発明から逸脱せずに、任意の数の前のメッセージ（前に処理され、かつ／または前に送られた）をメッセージヒストリ７１２に含めることができ、たとえば、メッセージが所与のユーザによって受信されない可能性、ネットワークトラフィック、ネットワーク速度、着信メッセージの速度、セッションの参加者の数、接続のタイプ、ネットワークからのユーザ切断の可能性などのさまざまな要求を考慮に入れることができる。
【００７１】
Ｄ．着信メッセージの処理
図８に、本発明のいくつかの例のメッセージ処理のさまざまな態様を示す流れ図を示す。理解の助けとして、図８の情報を、図７で示した符号に関して説明する。この例では、メッセージ７００が、たとえばＵＤＰのブロードキャスト能力を使用して、ピアツーピアネットワークを介してブロードキャストされる。図からわかるように、この処理は、セッションの参加者がブロードキャストメッセージ７００を送信するときに開始され（Ｓ８００）、このメッセージは、ネットワークでリスン（ｌｉｓｔｅｎ）しているユーザによって受信される（Ｓ８０２）。ＵＤＰブロードキャストメッセージが、サブネット上のすべてのユーザに送信され、サブネットの特定のユーザに向けらるのでないことを想起すると、本発明のこの例によるシステムおよび方法内のブロードキャストメッセージ７００を受信するサブネットユーザは、次に、自分がこのセッションＩＤ番号をリスンしているかどうかを判定する（Ｓ８０４）。これは、たとえば、メッセージ７００に含まれるセッションＩＤ番号７０８を調べることによって達成することができる。受信ユーザが、このセッションＩＤ番号をリスンしている場合には（Ｓ８０４の回答Ｙｅｓ）、受信ユーザのコンピュータによって、次に、メッセージ７００のメッセージヒストリ７１２内のすべての前のメッセージが受信されているかどうかが判定される（Ｓ８０６）。そうである場合には、新しいメッセージ７００を処理し（Ｓ８０８）、処理が終了する（Ｓ８１０）（たとえば、次のメッセージの処理を開始するか、次のメッセージを待つ）。
【００７２】
Ｓ８０６で、受信ユーザが新たに受信されたメッセージ７００のメッセージヒストリ７１２に示されるすべての前のメッセージを受信していないと判定される場合には（回答「Ｎｏ」）、受信ユーザのマシンによって、不足メッセージに関する要求が送信またはブロードキャストされる（Ｓ８１２）。次に、適切な待機時間の後に、本発明のこの例によるシステムおよび方法では、要求されたメッセージが受信されたかどうかが判定される（Ｓ８１４）。そうでない場合には、メッセージヒストリのすべてのメッセージが受信されるまで、Ｓ８１２およびＳ８１４を繰り返す（１つまたは複数の不足メッセージが絶対に受信されない場合、適当なタイムアウトおよび／またはエラーメッセージを提供することができる）。着信する不足メッセージが受信されたときに（Ｓ８１４の回答「Ｙｅｓ」）、このシステムは、Ｓ８０４に戻り（丸囲みのＡを参照されたい）、新たに受信されたメッセージのメッセージヒストリが検査されて、メッセージヒストリのすべてのメッセージが受信されたことが保証される。その代わりに、丸囲みのＡによって、Ｓ８０６の直前の手順に戻ることができる。この方法では、処理が、時間的に逆に働き、メッセージヒストリ内のすべてのメッセージが受信され、処理されたときに限って、新たに受信されるメッセージの処理が開始される。
【００７３】
Ｓ８０４で、着信メッセージ受信側が、このセッションＩＤ番号をリスンしていない場合に（回答「Ｎｏ」）、本発明のこの例のシステムおよび方法では、次に、メッセージ７００の参加者リスト７１０に受信側ユーザのＩＤ番号が含まれるかどうかを判定するための検査を行う（Ｓ８１６）。そうでない場合には、このメッセージは、受信側ユーザに宛てられたものではなく（Ｓ８１８）、メッセージは、受信側ユーザのワークステーションによって無視される。手順が終了する（Ｓ８１０）（たとえば、受信側ユーザが、新しいブロードキャストメッセージのリスンを継続することができる）。代替案として、下で詳細に説明するように、特定のセッションにかかわらないユーザが、着信メッセージを維持し、新しい参加者へのメッセージの再ブロードキャストの求めに応じ、かつ／または不足メッセージ要求に応答することができる。
【００７４】
Ｓ８１６で、着信メッセージ７００の参加者リスト７１０に、受信側ユーザのＩＤ番号が含まれる場合（回答「Ｙｅｓ」）、受信側ユーザを、セッションに追加することができ（Ｓ８２０）、メッセージヒストリ７１２に含まれるすべての前のメッセージが受信済みであることを保証する検査を開始することができる（Ｓ８０６）。
【００７５】
Ｓ８１２で、着信する新しいメッセージ７００の受信側は、新しいメッセージ７００のメッセージヒストリ７１２内の前に受信されなかったメッセージに関する要求をブロードキャストする。これは、特にＵＤＰが伝送プロトコルとして使用されるときに行うことができる。というのは、上で注記したように、ＵＤＰによって、すべての所期の受信側へのメッセージの配布が保証されないからである。したがって、本発明のいくつかの例によるシステムおよび方法では、少なくともいくつかの場合、最初に送信されたときにメッセージを受信しなかった参加者にメッセージをブロードキャストする必要が生じる。さらに、セッションに後から来る人は、セッションのすべての前のメッセージを入手することによって、最新の状態にされる必要がある。図８で説明した手順を使用することによって、セッションのすべての参加者が、システムまたは手順を不当に低速にせずに、メッセージヒストリで不足メッセージがあることが着信メッセージによって知らされるや否や、前の不足メッセージを簡単に入手することができる。
【００７６】
不足メッセージに関する要求がブロードキャストされるときに（Ｓ８１２）、本発明のこの例では、セッションのすべての参加者が、この要求を受信する可能性がある（たとえばＵＤＰブロードキャストとして）。すべての参加者が、不足メッセージを再ブロードキャストする場合、これによって、反復されるブロードキャストメッセージでシステムの動きが不当に妨げられ、これは、多数の参加者がセッションに含まれるときに悪化する問題である。したがって、本発明のいくつかの例では、セッションの各参加者は、要求者による受信のために不足メッセージを再ブロードキャストするかどうかを、そのような要求の受信時に、ランダムに決定する。たとえば、セッションに６人の参加者が含まれる場合、不足メッセージ要求がブロードキャストされるとき、残りの５人の参加者のそれぞれは、不足メッセージを再ブロードキャストするかどうかをランダムに決定する（たとえば、１と５の間の数をランダムに選択し、選択された数が１である場合にメッセージを送信する）。どれもがメッセージを送信しない場合、別の不足メッセージ要求が出され（上で説明したように）、別のランダムな選択手順が行われる。この手順は、要求元の当事者が不足メッセージを受信するまで繰り返すことができる。不足メッセージを供給する、このタイプの手順を使用することによって、セッションのすべての参加者が、他の参加者または新しい参加者に不足メッセージを供給でき、参加者がセッションに自由に出入りできると同時に、前に送信されたデータのすべてが、セッションのすべての参加者から入手可能に保たれる。
【００７７】
本発明のこの態様のいくつかの例で、特定のユーザが不足メッセージを再ブロードキャストするかどうかの判定で、たとえば、特定のネットワークでメッセージが失われる可能性、ネットワークトラフィック、ネットワーク速度、セッションの参加者の数、接続のタイプなどを含むさまざまな要因を考慮することができる。たとえば、特定のネットワークおよび／またはセッションの設定で、通常は５０％のＵＤＰブロードキャストメッセージが失われ、所与のユーザが、不足メッセージ再ブロードキャスト要求を受信する５つのユーザの１つである場合、すべての特定のユーザが、不足メッセージ再ブロードキャスト要求に応答してメッセージを再ブロードキャストする２／５の確率を有するようにプログラムして、２つのブロードキャストメッセージの１つが失われる可能性が高いという事実を補償することができる。
【００７８】
代替案として、新しい参加者がセッションに入るとき、いつでも、その新しい参加者にすべての前に送信されたメッセージを自動的に供給する機構を実施することができる（たとえば、最初の送信側参加者によって、１つまたは複数の選択された参加者によって、および／または他の所望のまたは適切な方法で、各メッセージを再送信する）。別の代替案として、元の送信側参加者が、セッションに留まっている場合、要求されたすべての不足メッセージを再送信することができ、元の送信側参加者がセッションに留まってない場合、ランダムな（またはある所定の順序で）別の当事者が、要求された不足メッセージを再送信することができる。不足メッセージ要求に応答して不足メッセージを再送信する参加者を決定する任意の方法を、本発明から逸脱せずに使用することができる。
【００７９】
Ｅ．「ピン（ｐｉｎｇ）」データ
図９に、セッションの潜在的な新しい参加者の発見および／またはユーザが既存セッションに参加できることの発見において、本発明のいくつかの例によるシステムおよび方法を援助するのに有用である可能性があるデータ構造９００を示す。セッションが進行中であるとき、セッションの参加者は、たとえばＵＤＰブロードキャスト機能を使用してサブネット上でデータをブロードキャストすることによって、ある識別データを周期的に送信する。このデータを、本明細書では「ｐｉｎｇデータ」とも称するが、このデータによって、ネットワークの他のユーザが、ある情報について周期的に知らされる。このタイプのｐｉｎｇデータは、たとえば無線接続および無線通信で、便利に使用される。
【００８０】
本発明のこの態様の例では、データ構造９００に、セッションに関するさまざまな重要な情報を含めることができる。第１に、ピンを送出するユーザを識別する情報を含むフィールドを、データ構造９００に設けることができる（たとえば、特定のマシンを使用する当事者、ハードウェア、その両方、または類似物を識別できる、上で説明したユーザＩＤ番号９０２）。データ構造９００の別のフィールドに、このユーザワークステーションがかかわるセッションに関する情報９０４を含めることができる。上で注記したように、各ユーザのコンピュータまたはワークステーションが、複数のセッションにかかわることができる。セッションごとに、ｐｉｎｇデータに、セッションＩＤ番号情報９０６ａおよび９０６ｂ、セッション参加者リスト９０８ａおよび９０８ｂ（たとえば、セッションの各参加者のユーザＩＤ番号を含む）、および類似物などのさまざまな情報を含めることができる。
【００８１】
ｐｉｎｇデータ９００に、ユーザがかかわるセッションごとのメッセージヒストリに関する情報も含めることができる。このデータフィールドを、図９の符号９１０に示す。例として、セッションごとに、ｐｉｎｇデータに、このコンピュータによって処理された最後の１つまたは複数のメッセージ（フィールド９１２ａおよび９１２ｂ）を示すデータおよび／またはこのコンピュータによって送信された最後の１つまたは複数のメッセージ（フィールド９１４ａおよび９１４ｂ）（たとえばメッセージＩＤ番号の形式で）を示すデータを含めることができる。本発明から逸脱せずに、たとえば５〜１０個のメッセージなど、任意の所望の数のメッセージを、データフィールド９１２ａ、９１２ｂ、９１４ａ、および９１４ｂに含めることができる。この方法での「ｐｉｎｇデータ」の使用によって、すべてのユーザが最新に保たれ、個々のメッセージが長期間にわたって「失われる」ことがなくなる（たとえば、メッセージが失われ、周期的な「ｐｉｎｇデータ」を使用してメッセージＩＤを送らずに次のメッセージが送信される前に長い時間が経過した場合、失われたメッセージが、長い期間にわたって、たとえば元のメッセージ送信側（または別の参加者）が別のメッセージを送信するまで、失われたままになる可能性がある）。
【００８２】
本発明の少なくともいくつかの例で、このｐｉｎｇデータを、図１０に示されたものに類似する手順と共に使用して、新しい参加者としてユーザをセッションに簡単に追加することができる。たとえば、図１０の手順は、ユーザが、セッションが行われているネットワークに入るときに開始される（Ｓ１０００）。新たに入るユーザは、最終的に、セッションの参加者からこのタイプのｐｉｎｇデータを受信する（Ｓ１００２）。ユーザのＩＤ番号が、セッションの少なくとも１人の参加者から受信したｐｉｎｇデータに含まれる場合に（Ｓ１００４）（たとえば、参加者リスト９０８ａまたは９０８ｂの一部として）（回答「Ｙｅｓ」）、ユーザのシステムは、そのユーザがこのセッションに参加できることを知る。ユーザのマシンは、ｐｉｎｇデータ９００に含まれるメッセージヒストリ９１０から不足しているメッセージを要求することができ（Ｓ１００６）、たとえば図８に関して説明した手順によって、セッション内で最新の状態になることができる。必要に応じて、ユーザに、たとえば質問またはダイアログボックスあるいは他の適切な方法を介して、ユーザがセッションへの参加を望むかどうかを決定するオプションを与えることができる。次に、図１０の手順が終了し（Ｓ１００８）、ユーザのシステムは、追加のピンおよび／またはメッセージデータをリスンすることができる。
【００８３】
Ｓ１００４で、ユーザのＩＤ番号が、受信されたｐｉｎｇデータ９００の参加者リスト９０８ａまたは９０８ｂに存在しないと判定される場合には（回答「Ｎｏ」）、この手順を終了することができ（Ｓ１００８）、Ｓ１００６をスキップし、システムは、追加のピンおよび／またはメッセージデータのリスンを継続することができる。
【００８４】
図１１に、セッションの潜在的な参加者としてのユーザを、発見し、セッションに勧誘することができる別の手順を示す流れ図が含まれる。この手順が開始されるときに（Ｓ１１００）、特定のセッションにかかわらないユーザが、セッションが行われているネットワークに入る（Ｓ１１０２）。この事実を、たとえば新たに入るユーザのコンピュータがｐｉｎｇデータ９００をブロードキャストする（たとえばＵＤＰブロードキャストを介して）とき、セッションの参加者によって認識することができる。新たに入るユーザが、どのセッションにもかかわっていない場合、ｐｉｎｇデータ９００を、図９に示されたユーザＩＤ番号９０２に制限することができる。セッションの１つまたは複数の参加者が、この新たに入るユーザのｐｉｎｇデータ情報を受信するとき、この例によるシステムまたは方法では、１つまたは複数の既存の参加者に、新たに入るユーザをセッションに参加するように勧誘しなければならないかどうかのプロンプトを出すことができる（Ｓ１１０４）。参加者が、新しいユーザをセッションに勧誘すると決定する場合（回答「Ｙｅｓ」）、新しいユーザのユーザＩＤ番号を、セッションの参加者リストに追加することができる（Ｓ１１０６）。その後、新しいユーザのユーザＩＤ番号をフィールド９０８ａまたは９０８ｂに含むｐｉｎｇデータ９００を送信することができる（Ｓ１１０８）。代替案としては、セッションの次のデータメッセージ７００の参加者リスト７１０に、新しいユーザのユーザＩＤも含まれる。新しいユーザは、このｐｉｎｇデータ９００および／またはメッセージデータ７００を受信するとき、このｐｉｎｇデータ９００および／またはメッセージデータ７００の自分のユーザＩＤ番号に留意し、図８および／または１０の手順に続くことができる。その後、図１１の勧誘する手順が終了するＳ１１１０。任意選択で、新しいユーザを、図１０に関して上で説明したように、セッションに参加するように勧誘することができる。
【００８５】
Ｓ１１０４で、セッションの参加者が、新しいユーザをセッションに勧誘しないと決定する場合（回答「Ｎｏ」）、Ｓ１１０６およびＳ１１０８がスキップされ、手順が終了するＳ１１１０。ｐｉｎｇデータ９００を使用して、特定のユーザがセッションから離れる時を他者に判定させることができる。たとえば、セッション参加者のｐｉｎｇデータ９００が、所定の時間インターバル（たとえばｐｉｎｇデータ送信頻度の４倍）以内に受信されない場合、他の参加者が、この参加者がセッションから離れたと判定することができる。必要に応じて、いくつかの例のシステムおよび方法で、この前者の参加者ＩＤを、セッション参加者リストから除去することができる。任意選択で、システムによって、セッションの残りの参加者に、前者の参加者をこのセッションの参加者ＩＤリストから除去するかどうかをたずねるプロンプトを出すことができる。
【００８６】
Ｆ．衝突するメッセージ
本発明の少なくともいくつかの例によるシステムおよび方法には、同時の、ほぼ同時の、および衝突する命令を処理するプロトコルおよび手順が含まれる。不可避的に、このタイプの協調システムおよび協調方法には、入力を独立に追加できる複数のユーザが含まれ、さまざまな当事者によって送信されるメッセージデータのいくつかが、衝突する。たとえば、ある参加者が、電子ホワイトボードからのインクストローク、ストローク、テキスト、またはグラフィックスを、別の参加者がその同一のストローク、ストローク、テキスト、またはグラフィックスのいくつかまたはすべての色、サイズ、または別の特性を変更しようとするのと正確に同時に、切り取ろうとする可能性がある。
【００８７】
本発明から逸脱せずに、この状況を任意の適切な方法で処理することができる。たとえば、セッションのすべてのワークステーションが、共通の中央クロックを使用する共通のネットワーク上で動作している場合、この中央クロックに基づいて、各メッセージに送信タイムスタンプを用いてスタンプすることができ、メッセージ処理の順序を、このタイムスタンプに基づくものとすることができる。正確に同一の時刻に送信される２つまたはそれ以上のメッセージについて、ある種の階層的順序付けを使用して、どのメッセージが優先されるかを決定することができる。たとえば、セッションにかかわる参加者ごとのユーザＩＤ番号に基づいて、アルファベット順および／または数値順の階層順序付けを使用することができる。別の例として、衝突する参加者がセッションに入った時刻に基づく階層を確立することができる。他のメッセージに対するあるメッセージのランダムな選択を含む多数の他の可能性も、本発明から逸脱せずに使用することができる。
【００８８】
メッセージを、本発明の少なくともいくつかの例でピアツーピアネットワークを介してブロードキャストすることができるので、２つの衝突する同時メッセージが、参加者のワークステーションのいくつかで誤った順序で受信される可能性があり、これによって、上位階層のメッセージが存在することを参加者のワークステーションが知る前の、下位階層のメッセージの処理がもたらされる。たとえば、参加者Ｂが、同一のインクストロークの拡大を指示するメッセージＢ１０を送信するのと正確に同一の瞬間に、参加者Ａが、そのインクストロークの削除を指示するメッセージＡ１０を送信すると仮定する。この２つのメッセージは、衝突する。次に、階層プロトコルのゆえに（たとえば、衝突するメッセージＩＤまたは衝突する送信側ユーザＩＤのアルファベット順／数値順に基づいて）、メッセージＡ１０がメッセージＢ１０より優先されると仮定する。この例では、参加者ＡおよびＢのそれぞれが、ピアツーピアの方法で他のすべての参加者と通信するので、参加者Ｃ（ならびに他の参加者）が、メッセージＡ１０の前にメッセージＢ１０を受信する可能性がある。メッセージＢ１０が受信される時、参加者Ｃのワークステーションは、メッセージＡ１０について何も知らず、メッセージＢ１０のヒストリのすべての以前のメッセージが参加者Ｃのワークステーションに存在する場合、そのワークステーションは、メッセージＢ１０を処理し、その後、メッセージＡ１０を受信する。その場合、メッセージＡ１０を受信するとき、参加者Ｃのワークステーションは、「元に戻す」機能を実行して、メッセージＢ１０が元に戻されるまで、すべての処理されたメッセージを元に戻すことができる。その後、メッセージＡ１０が、参加者Ｃのワークステーションで処理され、メッセージＢ１０が、破棄される（メッセージＢ１０に依存する他のすべてのメッセージも）。他の、メッセージＢ１０に依存しない「元に戻された」メッセージは、もう一度、元の順序またはタイムスタンプの順序で、参加者Ｃのワークステーションによって処理される。
【００８９】
もちろん、本発明から逸脱せずに、衝突するメッセージを処理する他の適切な手順およびプロトコルを使用することができる。
【００９０】
Ｇ．新しいセッションの確立
本発明から逸脱せずに、所望の方法または適切な方法で新しいセッションを開始することができる。たとえば、電子ホワイトボードアプリケーションプログラムまたは他のアプリケーションプログラムを起動するとき、そのプログラムによって、起動する当事者に、所望の参加者または許可される参加者の名前またはユーザＩＤ番号を入力するプロンプトを出すことができる。別の例として、このタイプのアプリケーションプログラムが起動されるとき、上で説明したように、セッションの潜在的な参加者を、そのｐｉｎｇデータを介して識別し、追加することができる。さらに別の例として、このタイプのプログラムが起動されるとき、起動する当事者が、求めに応じることができる参加者または潜在的な参加者のメニューにアクセスし、このリスティングから可能な参加者を選択することができる。これらのオプションは、単なる例である。これらの可能性および／または他の可能性の組合せを、本発明から逸脱せずに使用することができる。
【００９１】
Ｈ．セキュリティ
上で説明したように、本発明のさまざまな例で、ＵＤＰブロードキャストを使用して、メッセージおよび／またはｐｉｎｇデータをセッションの参加者に転送する。上で注記したように、ＵＤＰブロードキャストデータは、サブネット上のユーザの少なくとも一部がセッションにかかわることを意図されていない場合であっても、サブネット上のすべてのユーザに（およびブリッジ可能な他のサブネットに）無差別に送信される。この特徴は、ユーザがセッションに自由に出入りできるようにすることができるという点で有利であるが、セッションのメッセージデータが他者に露出されるので、潜在的なセキュリティリスクも提示される。
【００９２】
この事実に、本発明から逸脱せずに任意の適切な方法で対処することができる。たとえば、暗号化、スクランブル、および／または他の適切なセキュリティ方法を使用して、セッションおよび／またはメッセージデータへの許可されないアクセスを防ぐことができる。別の例として、本発明の少なくともいくつかの例で、よりセキュアで直接の通信を使用して、少なくともいくつかのメッセージおよび／またはｐｉｎｇデータのブロードキャストを防ぐことができる。本発明から逸脱せずに、当技術分野で従来から既知の技法を含む任意の他の適切なセキュリティ技法を使用することができる。
【００９３】
Ｖ．結論
本発明のさまざまな例を上で説明したが、当業者は、本発明の範囲内にこれらの例のすべての組合せおよびサブコンビネーションが含まれることを理解するであろう。さらに、当業者は、上の例が、単に本発明のさまざまな態様を例示するものであることを理解するであろう。たとえば、本発明の多数の態様を、「電子ホワイトボードセッション」または他の協調セッションに関して説明したが、当業者は、本発明がこれらのタイプの協調セッションに制限されないことを理解するであろう。そうではなく、本発明の諸態様は、異なるユーザの間のさまざまなタイプの通信にあまねく適用することができる。また、さまざまな変更および修正を、請求項で定義される本発明の趣旨および範囲から逸脱せずに行うことができる。
【図面の簡単な説明】
【００９４】
【図１】本発明のある態様を実施することができる汎用デジタルコンピューティング環境を示す概略図である。
【図２】本発明のある態様を実施することができるペンベースのパーソナルコンピューティング（ＰＣ）環境を示す図である。
【図３Ａ】本発明のある例によるシステムおよび方法で使用することができるピアツーピア接続ネットワークを全体的に示す図である。
【図３Ｂ】本発明のある例によるシステムおよび方法で使用することができるピアツーピア接続ネットワークを全体的に示す図である。
【図４】本発明のいくつかの例によるシステムおよび方法を使用してさまざまな個々の参加者によって維持することができるデータおよび情報を全体的に示す図である。
【図５Ａ】本発明のいくつかの例のさまざまな特徴を説明するのに有用な、本発明によるシステムおよび方法を介して転送可能なデータメッセージの例を示す図である。
【図５Ｂ】本発明のいくつかの例のさまざまな特徴を説明するのに有用な、本発明によるシステムおよび方法を介して転送可能なデータメッセージの例を示す図である。
【図５Ｃ】本発明のいくつかの例のさまざまな特徴を説明するのに有用な、本発明によるシステムおよび方法を介して転送可能なデータメッセージの例を示す図である。
【図５Ｄ】本発明のいくつかの例のさまざまな特徴を説明するのに有用な、本発明によるシステムおよび方法を介して転送可能なデータメッセージの例を示す図である。
【図５Ｅ】本発明のいくつかの例のさまざまな特徴を説明するのに有用な、本発明によるシステムおよび方法を介して転送可能なデータメッセージの例を示す図である。
【図５Ｆ】本発明のいくつかの例のさまざまな特徴を説明するのに有用な、本発明によるシステムおよび方法を介して転送可能なデータメッセージの例を示す図である。
【図５Ｇ】本発明のいくつかの例のさまざまな特徴を説明するのに有用な、本発明によるシステムおよび方法を介して転送可能なデータメッセージの例を示す図である。
【図５Ｈ】本発明のいくつかの例のさまざまな特徴を説明するのに有用な、本発明によるシステムおよび方法を介して転送可能なデータメッセージの例を示す図である。
【図５Ｉ】本発明のいくつかの例のさまざまな特徴を説明するのに有用な、本発明によるシステムおよび方法を介して転送可能なデータメッセージの例を示す図である。
【図５Ｊ】本発明のいくつかの例のさまざまな特徴を説明するのに有用な、本発明によるシステムおよび方法を介して転送可能なデータメッセージの例を示す図である。
【図６Ａ】本発明のいくつかの例のさまざまな特徴を説明するのに有用な、本発明によるシステムおよび方法を介して転送可能なデータメッセージの例を示す図である。
【図６Ｂ】本発明のいくつかの例のさまざまな特徴を説明するのに有用な、本発明によるシステムおよび方法を介して転送可能なデータメッセージの例を示す図である。
【図６Ｃ】本発明のいくつかの例のさまざまな特徴を説明するのに有用な、本発明によるシステムおよび方法を介して転送可能なデータメッセージの例を示す図である。
【図６Ｄ】本発明のいくつかの例のさまざまな特徴を説明するのに有用な、本発明によるシステムおよび方法を介して転送可能なデータメッセージの例を示す図である。
【図６Ｅ】本発明のいくつかの例のさまざまな特徴を説明するのに有用な、本発明によるシステムおよび方法を介して転送可能なデータメッセージの例を示す図である。
【図７】本発明によるシステムおよび方法のいくつかの例で有用な、発信ブロードキャストデータメッセージのデータ構造の例を示す図である。
【図８】本発明によるある方法の例を示す流れ図である。
【図９】本発明によるシステムおよび方法のいくつかの例で有用な、発信ユーザ識別メッセージのデータ構造の例を示す図である。
【図１０】セッションへの参加者としての新規ユーザの追加の方法の例を示す流れ図である。
【図１１】セッションへの参加者としての新規ユーザの追加の他の方法の例を示す流れ図である。
【符号の説明】
【００９５】
４０２  識別番号
４０４ａ〜４０４ｎ  セッション
４０６ａ〜４０６ｎ  識別番号
４０８ａ〜４０８ｎ  参加者リスト
４１０ａ〜４１０ｍ  メッセージ
４１２ａ〜４１２ｍ  識別子
４１４ａ〜４１４ｍ  メッセージペイロード
４２０ａ〜４２０ｋ  メッセージ
４２２ａ〜４２２ｋ  識別子
４２４ａ〜４２４ｋ  メッセージペイロード
【図１】
2004334847.tif 000003
【図２】
2004334847.tif 000004
【図３Ａ】
2004334847.tif 000005
【図３Ｂ】
2004334847.tif 000006
【図４】
2004334847.tif 000007
【図５Ａ】
2004334847.tif 000008
【図５Ｂ】
2004334847.tif 000009
【図５Ｃ】
2004334847.tif 000010
【図５Ｄ】
2004334847.tif 000011
【図５Ｅ】
2004334847.tif 000012
【図５Ｆ】
2004334847.tif 000013
【図５Ｇ】
2004334847.tif 000014
【図５Ｈ】
2004334847.tif 000015
【図５Ｉ】
2004334847.tif 000016
【図５Ｊ】
2004334847.tif 000017
【図６Ａ】
2004334847.tif 000018
【図６Ｂ】
2004334847.tif 000019
【図６Ｃ】
2004334847.tif 000020
【図６Ｄ】
2004334847.tif 000021
【図６Ｅ】
2004334847.tif 000022
【図７】
2004334847.tif 000023
【図８】
2004334847.tif 000024
【図９】
2004334847.tif 000025
【図１０】
2004334847.tif 000026
【図１１】
2004334847.tif 000027