(57)【要約】【課題】ネットワーク構成の動的な変化に、より好適に対応できるようにする。【解決手段】サーバとして動作するノード１がグループから離脱するとき、ノード２、およびノード３に対して、その旨を通知するメッセージが送信される。このとき、ノード２、およびノード３の状態は、サーバ候補に遷移される。ノード２、およびノード３からは、それぞれのサーバ候補としての優先順位を含むメッセージがノード１に対して送信される。メッセージに含まれる優先順位に基づいて、ノード１により、サーバとして新たにネットワークを管理するノードが選択される。本発明は、各種のネットワークを介して通信可能なパーソナルコンピュータなどの情報処理装置に適用することができる。【選択図】      図１
2004199349.tif 000002
【特許請求の範囲】
【請求項１】
情報管理装置と、前記情報管理装置により管理される通信グループに参加する情報処理装置からなる通信システムにおいて、
前記情報管理装置は、
前記通信グループに参加する前記情報処理装置のリストを含む第１のメッセージを、所定の周期で前記情報処理装置に対して送信する第１の送信手段と、
前記通信グループの管理を終了するとき、前記通信グループに参加する前記情報処理装置に対して、その旨を通知する第２のメッセージを送信する第２の送信手段と、
前記第２の送信手段により前記第２のメッセージが送信されることに応じて、前記情報処理装置から送信されてくる、前記通信グループにおける前記情報処理装置の優先順位を含む第３のメッセージを受信する第１の受信手段と、
前記第１の受信手段により受信された前記第３のメッセージに含まれる前記優先順位に基づいて、前記通信グループを新たに管理する前記情報管理装置となる前記情報処理装置を選択する選択手段と
を備え、
前記第１の送信手段は、前記選択手段により選択された前記情報処理装置により、新たに管理される前記通信グループに参加する前記情報処理装置の前記リストを含む前記第１のメッセージを送信する
ことを特徴とし、
前記情報処理装置は、
前記第１のメッセージを受信する第２の受信手段と、
前記情報管理装置から、前記第２のメッセージが送信されてきたとき、前記第３のメッセージを送信する第３の送信手段と、
前記第３の送信手段により送信された前記第３のメッセージに含まれる前記優先順位に基づいて、自分自身が、前記通信グループを新たに管理する前記情報管理装置として現在の前記情報管理装置により選択されたことが前記第１のメッセージの前記リストにより表されているとき、前記通信グループを管理する管理手段と
を備えることを特徴とする通信システム。
【請求項２】
情報管理装置と、前記情報管理装置により管理される通信グループに参加する情報処理装置からなる通信システムの通信方法において、
前記情報管理装置の通信方法は、
前記通信グループに参加する前記情報処理装置のリストを含む第１のメッセージを、所定の周期で前記情報処理装置に対して送信する第１の送信ステップと、
前記通信グループの管理を終了するとき、前記通信グループに参加する前記情報処理装置に対して、その旨を通知する第２のメッセージを送信する第２の送信ステップと、
前記第２の送信ステップの処理により前記第２のメッセージが送信されることに応じて、前記情報処理装置から送信されてくる、前記通信グループにおける前記情報処理装置の優先順位を含む第３のメッセージを受信する第１の受信ステップと、
前記第１の受信ステップの処理により受信された前記第３のメッセージに含まれる前記優先順位に基づいて、前記通信グループを新たに管理する前記情報管理装置となる前記情報処理装置を選択する選択ステップと
を含み、
前記選択ステップの処理により選択された前記情報処理装置により、新たに管理される前記通信グループに参加する前記情報処理装置の前記リストを含む前記第１のメッセージが、前記第１の送信ステップの処理により送信される
ことを特徴とし、
前記情報処理装置の通信方法は、
前記第１のメッセージを受信する第２の受信ステップと、
前記情報管理装置から、前記第２のメッセージが送信されてきたとき、前記第３のメッセージを送信する第３の送信ステップと、
前記第３の送信ステップの処理により送信された前記第３のメッセージに含まれる前記優先順位に基づいて、自分自身が、前記通信グループを新たに管理する前記情報管理装置として現在の前記情報管理装置により選択されたことが前記第１のメッセージの前記リストにより表されているとき、前記通信グループを管理する管理ステップと
を含むことを特徴とする通信方法。
【請求項３】
情報処理装置が参加する通信グループを管理する情報管理装置において、
前記通信グループに参加する前記情報処理装置のリストを含む第１のメッセージを、所定の周期で前記情報処理装置に対して送信する第１の送信手段と、
前記通信グループの管理を終了するとき、前記通信グループに参加する前記情報処理装置に対して、その旨を通知する第２のメッセージを送信する第２の送信手段と、
前記第２の送信手段により前記第２のメッセージが送信されることに応じて、前記情報処理装置から送信されてくる、前記通信グループにおける前記情報処理装置の優先順位を含む第３のメッセージを受信する受信手段と、
前記受信手段により受信された前記第３のメッセージに含まれる前記優先順位に基づいて、前記通信グループを新たに管理する前記情報管理装置となる前記情報処理装置を選択する選択手段と
を備え、
前記第１の送信手段は、前記選択手段により選択された前記情報処理装置により、新たに管理される前記通信グループに参加する前記情報処理装置の前記リストを含む前記第１のメッセージを送信する
ことを特徴とする情報管理装置。
【請求項４】
前記受信手段は、前記通信グループに参加する全ての前記情報処理装置から送信されてくる前記第３のメッセージを受信し、
前記選択手段は、前記第３のメッセージに含まれる前記優先順位に基づいて、前記通信グループに参加する全ての前記情報処理装置の中から、前記通信グループを新たに管理する前記情報管理装置となる前記情報処理装置を選択する
ことを特徴とする請求項３に記載の情報管理装置。
【請求項５】
前記優先順位は、前記情報処理装置において生成された所定の乱数に基づいて決定される
ことを特徴とする請求項３に記載の情報管理装置。
【請求項６】
前記優先順位は、前記情報処理装置の属性に応じて、所定の範囲の順位が決定される
ことを特徴とする請求項３に記載の情報管理装置。
【請求項７】
情報処理装置が参加する通信グループを管理する情報管理装置の情報管理方法において、
前記通信グループに参加する前記情報処理装置のリストを含む第１のメッセージを、所定の周期で前記情報処理装置に対して送信する第１の送信ステップと、
前記通信グループの管理を終了するとき、前記通信グループに参加する前記情報処理装置に対して、その旨を通知する第２のメッセージを送信する第２の送信ステップと、
前記第２の送信ステップの処理により前記第２のメッセージが送信されることに応じて、前記情報処理装置から送信されてくる、前記通信グループにおける前記情報処理装置の優先順位を含む第３のメッセージを受信する受信ステップと、
前記受信ステップの処理により受信された前記第３のメッセージに含まれる前記優先順位に基づいて、前記通信グループを新たに管理する前記情報管理装置となる前記情報処理装置を選択する選択ステップと
を含み、
前記選択ステップの処理により選択された前記情報処理装置により、新たに管理される前記通信グループに参加する前記情報処理装置の前記リストを含む前記第１のメッセージが、前記第１の送信ステップの処理により送信される
ことを特徴とする情報管理方法。
【請求項８】
情報処理装置が参加する通信グループを管理する処理をコンピュータに実行させるプログラムにおいて、
前記通信グループに参加する前記情報処理装置のリストを含む第１のメッセージを、所定の周期で前記情報処理装置に対して送信する第１の送信ステップと、
前記通信グループの管理を終了するとき、前記通信グループに参加する前記情報処理装置に対して、その旨を通知する第２のメッセージを送信する第２の送信ステップと、
前記第２の送信ステップの処理により前記第２のメッセージが送信されることに応じて、前記情報処理装置から送信されてくる、前記通信グループにおける前記情報処理装置の優先順位を含む第３のメッセージを受信する受信ステップと、
前記受信ステップの処理により受信された前記第３のメッセージに含まれる前記優先順位に基づいて、前記通信グループを新たに管理する情報管理装置となる前記情報処理装置を選択する選択ステップと
を含み、
前記選択ステップの処理により選択された前記情報処理装置により、新たに管理される前記通信グループに参加する前記情報処理装置の前記リストを含む前記第１のメッセージが、前記第１の送信ステップの処理により送信される
ことを特徴とするコンピュータが読み取り可能なプログラム。
【請求項９】
情報管理装置により管理される通信グループに参加する情報処理装置において、
前記情報管理装置により所定の周期で送信される、前記通信グループに参加する前記情報処理装置のリストを含む第１のメッセージを受信する受信手段と、
前記情報管理装置から、前記通信グループの管理を終了することを通知する第２のメッセージが送信されてきたとき、前記通信グループにおける自分自身の優先順位を含む第３のメッセージを送信する送信手段と、
前記送信手段により送信された前記第３のメッセージに含まれる前記優先順位に基づいて、自分自身が、前記通信グループを新たに管理する前記情報管理装置として、現在の前記情報管理装置により選択されたことが前記第１のメッセージの前記リストにより表されているとき、前記通信グループを管理する管理手段と
を備えることを特徴とする情報処理装置。
【請求項１０】
所定の乱数を生成する生成手段をさらに備え、
前記優先順位は、前記生成手段により生成された前記乱数に基づいて決定される
ことを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
前記優先順位は、前記情報処理装置の属性に応じて、所定の範囲の順位が決定される
ことを特徴とする請求項９に記載の情報処理装置。
【請求項１２】
情報管理装置により管理される通信グループに参加する情報処理装置の情報処理方法において、
前記情報管理装置により所定の周期で送信される、前記通信グループに参加する前記情報処理装置のリストを含む第１のメッセージを受信する受信ステップと、
前記情報管理装置から、前記通信グループの管理を終了することを通知する第２のメッセージが送信されてきたとき、前記通信グループにおける自分自身の優先順位を含む第３のメッセージを送信する送信ステップと、
前記送信ステップの処理により送信された前記第３のメッセージに含まれる前記優先順位に基づいて、自分自身が、前記通信グループを新たに管理する前記情報管理装置として、現在の前記情報管理装置により選択されたことが前記第１のメッセージの前記リストにより表されているとき、前記通信グループを管理する管理ステップと
を含むことを特徴とする情報処理方法。
【請求項１３】
情報管理装置により管理される通信グループに参加する処理をコンピュータに実行させるプログラムにおいて、
前記情報管理装置により所定の周期で送信される、前記通信グループに参加する情報処理装置のリストを含む第１のメッセージを受信する受信ステップと、
前記情報管理装置から、前記通信グループの管理を終了することを通知する第２のメッセージが送信されてきたとき、前記通信グループにおける自分自身の優先順位を含む第３のメッセージを送信する送信ステップと、
前記送信ステップの処理により送信された前記第３のメッセージに含まれる前記優先順位に基づいて、自分自身が、前記通信グループを新たに管理する前記情報管理装置として、現在の前記情報管理装置により選択されたことが前記第１のメッセージの前記リストにより表されているとき、前記通信グループを管理する管理ステップと
を含むことを特徴とするコンピュータが読み取り可能なプログラム。
【請求項１４】
情報管理装置により管理される通信グループに参加する情報処理装置において、
前記情報管理装置により前記通信グループの管理が終了されたことを検出する検出手段と、
前記検出手段により、前記情報管理装置が前記通信グループの管理を終了したことが検出されたとき、前記通信グループにおける自分自身の第１の優先順位を含むメッセージを、前記通信グループに参加する他の情報処理装置に送信する送信手段と、
前記他の情報処理装置から送信されてくる、前記他の情報処理装置の、前記通信グループにおける第２の優先順位が含まれる他のメッセージを受信する受信手段と、
前記第１の優先順位が、前記受信手段により受信された前記他のメッセージに含まれる前記第２の優先順位よりも高いとき、前記通信グループを新たに管理する管理手段と
を備えることを特徴とする情報処理装置。
【請求項１５】
情報管理装置により管理される通信グループに参加する情報処理装置の情報処理方法において、
前記情報管理装置により前記通信グループの管理が終了されたことを検出する検出ステップと、
前記検出ステップの処理により、前記情報管理装置が前記通信グループの管理を終了したことが検出されたとき、前記通信グループにおける自分自身の第１の優先順位を含むメッセージを、前記通信グループに参加する他の情報処理装置に送信する送信ステップと、
前記他の情報処理装置から送信されてくる、前記他の情報処理装置の、前記通信グループにおける第２の優先順位が含まれる他のメッセージを受信する受信ステップと、
前記第１の優先順位が、前記受信ステップの処理により受信された前記他のメッセージに含まれる前記第２の優先順位よりも高いとき、前記通信グループを新たに管理する管理ステップと
を含むことを特徴とする情報処理方法。
【請求項１６】
情報管理装置により管理される通信グループに参加する処理をコンピュータに実行させるプログラムにおいて、
前記情報管理装置により前記通信グループの管理が終了されたことを検出する検出ステップと、
前記検出ステップの処理により、前記情報管理装置が前記通信グループの管理を終了したことが検出されたとき、前記通信グループにおける自分自身の第１の優先順位を含むメッセージを、前記通信グループに参加する他の情報処理装置に送信する送信ステップと、
前記他の情報処理装置から送信されてくる、前記他の情報処理装置の、前記通信グループにおける第２の優先順位が含まれる他のメッセージを受信する受信ステップと、
前記第１の優先順位が、前記受信ステップの処理により受信された前記他のメッセージに含まれる前記第２の優先順位よりも高いとき、前記通信グループを新たに管理する管理ステップと
を含むことを特徴とするコンピュータが読み取り可能なプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、通信システムおよび方法、情報管理装置および方法、情報処理装置および方法、並びにプログラムに関し、ネットワークの動的な変化に、より好適に対応できるようにする通信システムおよび方法、情報管理装置および方法、情報処理装置および方法、並びにプログラムに関する。
【０００２】
【従来の技術】
近年、IEEE(Institute of Electrical and Electronics Engineers)802.11bに準拠した無線LAN(Local Area Network)やBluetooth（登録商標）に代表される各種の無線通信技術に対応した機器が急速に普及しつつある。
【０００３】
また、そのような無線通信により実現されるネットワークにおいて、固定のサーバが設けられていない場合であっても、集合した複数の端末のうちの1台がサーバとなり、他の端末との間でサーバ・クライアントモデルのアプリケーションを実行する技術が各種提案されている。
【０００４】
この場合、サーバから提供されるサービスをクライアントが利用し続けるためには、例えば、サーバ機能を提供していた端末が、他の端末に対して何の予告もなくネットワークから離脱した場合に対応するための技術が必要となる。
【０００５】
そこで、そのような技術として、例えば、下記特許文献１には、全てのクライアントにおいて、サーバ候補である端末の情報が記述されたリストを管理し、サーバ機能を提供していた端末がネットワークから離脱した場合であっても、他のクライアントがサーバ機能を引き継ぐことができる技術が開示されている。
【０００６】
【特許文献１】
特開２０００−２１５１７７号公報
【０００７】
【発明が解決しようとする課題】
しかしながら、例えば、特許文献１に開示されている技術によっては、複数の端末が同時に通信不可能な状態になった場合（サーバが通信不可能な状態になると同時に、サーバを引き継ぐ端末も通信不可能な状態になった場合）に、サーバの引き継ぎをスムーズに行うことが困難であるという課題があった。
【０００８】
この課題は、ネットワークのユビキタス化が進み、容易に、かつ、任意のタイミングで、様々な機器と通信を行うことができるようになるにつれ、さらに顕著なものになるおそれがある。例えば、そのような環境においては、それぞれの端末のユーザは、自分自身の端末が通信可能な状態か、不可能な状態かを意識することなく、移動しながら好みの場所で通信を行おうとすることが予想され、その結果、複数の端末が同時に通信不可能になるなど、ネットワークの構成が頻繁に変化することになる。
【０００９】
本発明はこのような状況に鑑みてなされたものであり、ネットワークの動的な変化に、より好適に対応できるようにするものである。
【００１０】
【課題を解決するための手段】
本発明の通信システムの情報管理装置は、通信グループに参加する情報処理装置のリストを含む第１のメッセージを、所定の周期で情報処理装置に対して送信する第１の送信手段と、通信グループの管理を終了するとき、通信グループに参加する情報処理装置に対して、その旨を通知する第２のメッセージを送信する第２の送信手段と、第２の送信手段により第２のメッセージが送信されることに応じて、情報処理装置から送信されてくる、通信グループにおける情報処理装置の優先順位を含む第３のメッセージを受信する第１の受信手段と、第１の受信手段により受信された第３のメッセージに含まれる優先順位に基づいて、通信グループを新たに管理する情報管理装置となる情報処理装置を選択する選択手段とを備え、第１の送信手段は、選択手段により選択された情報処理装置により、新たに管理される通信グループに参加する情報処理装置のリストを含む第１のメッセージを送信することを特徴とする。
【００１１】
また、本発明の通信システムの情報処理装置は、第１のメッセージを受信する第２の受信手段と、情報管理装置から、第２のメッセージが送信されてきたとき、第３のメッセージを送信する第３の送信手段と、第３の送信手段により送信された第３のメッセージに含まれる優先順位に基づいて、自分自身が、通信グループを新たに管理する情報管理装置として現在の情報管理装置により選択されたことが第１のメッセージのリストにより表されているとき、通信グループを管理する管理手段とを備えることを特徴とする。
【００１２】
本発明の通信システムの通信方法は、通信グループに参加する情報処理装置のリストを含む第１のメッセージを、所定の周期で情報処理装置に対して送信する第１の送信ステップと、通信グループの管理を終了するとき、通信グループに参加する情報処理装置に対して、その旨を通知する第２のメッセージを送信する第２の送信ステップと、第２の送信ステップの処理により第２のメッセージが送信されることに応じて、情報処理装置から送信されてくる、通信グループにおける情報処理装置の優先順位を含む第３のメッセージを受信する第１の受信ステップと、第１の受信ステップの処理により受信された第３のメッセージに含まれる優先順位に基づいて、通信グループを新たに管理する情報管理装置となる情報処理装置を選択する選択ステップとを含み、選択ステップの処理により選択された情報処理装置により、新たに管理される通信グループに参加する情報処理装置のリストを含む第１のメッセージが、第１の送信ステップの処理により送信されることを特徴とする。
【００１３】
また、本発明の通信システムの通信方法は、第１のメッセージを受信する第２の受信ステップと、情報管理装置から、第２のメッセージが送信されてきたとき、第３のメッセージを送信する第３の送信ステップと、第３の送信ステップの処理により送信された第３のメッセージに含まれる優先順位に基づいて、自分自身が、通信グループを新たに管理する情報管理装置として現在の情報管理装置により選択されたことが第１のメッセージのリストにより表されているとき、通信グループを管理する管理ステップとを含むことを特徴とする。
【００１４】
本発明の情報管理装置は、通信グループに参加する情報処理装置のリストを含む第１のメッセージを、所定の周期で情報処理装置に対して送信する第１の送信手段と、通信グループの管理を終了するとき、通信グループに参加する情報処理装置に対して、その旨を通知する第２のメッセージを送信する第２の送信手段と、第２の送信手段により第２のメッセージが送信されることに応じて、情報処理装置から送信されてくる、通信グループにおける情報処理装置の優先順位を含む第３のメッセージを受信する受信手段と、受信手段により受信された第３のメッセージに含まれる優先順位に基づいて、通信グループを新たに管理する情報管理装置となる情報処理装置を選択する選択手段とを備え、第１の送信手段が、選択手段により選択された情報処理装置により、新たに管理される通信グループに参加する情報処理装置のリストを含む第１のメッセージを送信することを特徴とする。
【００１５】
受信手段は、通信グループに参加する全ての情報処理装置から送信されてくる第３のメッセージを受信し、選択手段は、第３のメッセージに含まれる優先順位に基づいて、通信グループに参加する全ての情報処理装置の中から、通信グループを新たに管理する情報管理装置となる情報処理装置を選択するようにすることができる。
【００１６】
優先順位は、情報処理装置において生成された所定の乱数に基づいて決定されるようにすることができる。
【００１７】
また、優先順位は、情報処理装置の属性に応じて、所定の範囲の順位が決定されるようにすることができる。
【００１８】
本発明の情報管理装置の情報管理方法は、通信グループに参加する情報処理装置のリストを含む第１のメッセージを、所定の周期で情報処理装置に対して送信する第１の送信ステップと、通信グループの管理を終了するとき、通信グループに参加する情報処理装置に対して、その旨を通知する第２のメッセージを送信する第２の送信ステップと、第２の送信ステップの処理により第２のメッセージが送信されることに応じて、情報処理装置から送信されてくる、通信グループにおける情報処理装置の優先順位を含む第３のメッセージを受信する受信ステップと、受信ステップの処理により受信された第３のメッセージに含まれる優先順位に基づいて、通信グループを新たに管理する情報管理装置となる情報処理装置を選択する選択ステップとを含み、選択ステップの処理により選択された情報処理装置により、新たに管理される通信グループに参加する情報処理装置のリストを含む第１のメッセージが、第１の送信ステップの処理により送信されることを特徴とする。
【００１９】
本発明の第１のプログラムは、通信グループに参加する情報処理装置のリストを含む第１のメッセージを、所定の周期で情報処理装置に対して送信する第１の送信ステップと、通信グループの管理を終了するとき、通信グループに参加する情報処理装置に対して、その旨を通知する第２のメッセージを送信する第２の送信ステップと、第２の送信ステップの処理により第２のメッセージが送信されることに応じて、情報処理装置から送信されてくる、通信グループにおける情報処理装置の優先順位を含む第３のメッセージを受信する受信ステップと、受信ステップの処理により受信された第３のメッセージに含まれる優先順位に基づいて、通信グループを新たに管理する情報管理装置となる情報処理装置を選択する選択ステップとを含み、選択ステップの処理により選択された情報処理装置により、新たに管理される通信グループに参加する情報処理装置のリストを含む第１のメッセージが、第１の送信ステップの処理により送信されることを特徴とする。
【００２０】
本発明の第１の情報処理装置は、情報管理装置により所定の周期で送信される、通信グループに参加する情報処理装置のリストを含む第１のメッセージを受信する受信手段と、情報管理装置から、通信グループの管理を終了することを通知する第２のメッセージが送信されてきたとき、通信グループにおける自分自身の優先順位を含む第３のメッセージを送信する送信手段と、送信手段により送信された第３のメッセージに含まれる優先順位に基づいて、自分自身が、通信グループを新たに管理する情報管理装置として現在の情報管理装置により選択されたことが第１のメッセージのリストにより表されているとき、通信グループを管理する管理手段とを備えることを特徴とする。
【００２１】
所定の乱数を生成する生成手段をさらに備えるようにすることができる。このとき、優先順位は、生成手段により生成された乱数に基づいて決定される。
【００２２】
優先順位は、情報処理装置の属性に応じて、所定の範囲の順位が決定されるようにすることができる。
【００２３】
本発明の第１の情報処理装置の情報処理方法は、情報管理装置により所定の周期で送信される、通信グループに参加する情報処理装置のリストを含む第１のメッセージを受信する受信ステップと、情報管理装置から、通信グループの管理を終了することを通知する第２のメッセージが送信されてきたとき、通信グループにおける自分自身の優先順位を含む第３のメッセージを送信する送信ステップと、送信ステップの処理により送信された第３のメッセージに含まれる優先順位に基づいて、自分自身が、通信グループを新たに管理する情報管理装置として現在の情報管理装置により選択されたことが第１のメッセージのリストにより表されているとき、通信グループを管理する管理ステップとを含むことを特徴とする。
【００２４】
本発明の第２のプログラムは、情報管理装置により所定の周期で送信される、通信グループに参加する情報処理装置のリストを含む第１のメッセージを受信する受信ステップと、情報管理装置から、通信グループの管理を終了することを通知する第２のメッセージが送信されてきたとき、通信グループにおける自分自身の優先順位を含む第３のメッセージを送信する送信ステップと、送信ステップの処理により送信された第３のメッセージに含まれる優先順位に基づいて、自分自身が、通信グループを新たに管理する情報管理装置として現在の情報管理装置により選択されたことが第１のメッセージのリストにより表されているとき、通信グループを管理する管理ステップとを含むことを特徴とする。
【００２５】
本発明の第２の情報処理装置は、情報管理装置により通信グループの管理が終了されたことを検出する検出手段と、検出手段により、情報管理装置が通信グループの管理を終了したことが検出されたとき、通信グループにおける自分自身の第１の優先順位を含むメッセージを、通信グループに参加する他の情報処理装置に送信する送信手段と、他の情報処理装置から送信されてくる、他の情報処理装置の、通信グループにおける第２の優先順位が含まれる他のメッセージを受信する受信手段と、第１の優先順位が、受信手段により受信された他のメッセージに含まれる第２の優先順位よりも高いとき、通信グループを新たに管理する管理手段とを備えることを特徴とする。
【００２６】
本発明の第２の情報処理装置の情報処理方法は、情報管理装置により通信グループの管理が終了されたことを検出する検出ステップと、検出ステップの処理により、情報管理装置が通信グループの管理を終了したことが検出されたとき、通信グループにおける自分自身の第１の優先順位を含むメッセージを、通信グループに参加する他の情報処理装置に送信する送信ステップと、他の情報処理装置から送信されてくる、他の情報処理装置の、通信グループにおける第２の優先順位が含まれる他のメッセージを受信する受信ステップと、第１の優先順位が、受信ステップの処理により受信された他のメッセージに含まれる第２の優先順位よりも高いとき、通信グループを新たに管理する管理ステップとを含むことを特徴とする。
【００２７】
本発明の第３のプログラムは、情報管理装置により通信グループの管理が終了されたことを検出する検出ステップと、検出ステップの処理により、情報管理装置が通信グループの管理を終了したことが検出されたとき、通信グループにおける自分自身の第１の優先順位を含むメッセージを、通信グループに参加する他の情報処理装置に送信する送信ステップと、他の情報処理装置から送信されてくる、他の情報処理装置の、通信グループにおける第２の優先順位が含まれる他のメッセージを受信する受信ステップと、第１の優先順位が、受信ステップの処理により受信された他のメッセージに含まれる第２の優先順位よりも高いとき、通信グループを新たに管理する管理ステップとを含むことを特徴とする。
【００２８】
本発明の通信システムおよび方法においては、通信グループに参加する情報処理装置のリストを含む第１のメッセージが、所定の周期で情報処理装置に対して送信され、通信グループの管理を終了するとき、通信グループに参加する情報処理装置に対して、その旨を通知する第２のメッセージが送信される。また、第２のメッセージが送信されることに応じて、情報処理装置から送信されてくる、通信グループにおける情報処理装置の優先順位を含む第３のメッセージが受信され、受信された第３のメッセージに含まれる優先順位に基づいて、通信グループを新たに管理する情報管理装置となる情報処理装置が選択される。そして、選択された情報処理装置により、新たに管理される通信グループに参加する情報処理装置のリストを含む第１のメッセージが送信される。
【００２９】
また、本発明の通信システムおよび方法においては、第１のメッセージが受信され、情報管理装置から、第２のメッセージが送信されてきたとき、第３のメッセージが送信される。第３のメッセージに含まれる優先順位に基づいて、自分自身が、通信グループを新たに管理する情報管理装置として現在の情報管理装置により選択されたことが第１のメッセージのリストにより表されているとき、通信グループが管理される。
【００３０】
本発明の第１の情報処理装置および方法、並びにプログラムにおいては、情報管理装置により所定の周期で送信される、通信グループに参加する情報処理装置のリストを含む第１のメッセージが受信され、情報管理装置から、通信グループの管理を終了することを通知する第２のメッセージが送信されてきたとき、通信グループにおける自分自身の優先順位を含む第３のメッセージが送信される。また、送信された第３のメッセージに含まれる優先順位に基づいて、自分自身が、通信グループを新たに管理する情報管理装置として現在の情報管理装置により選択されたことが第１のメッセージのリストにより表されているとき、通信グループが管理される。
【００３１】
本発明の第２の情報処理装置および方法、並びにプログラムにおいては、情報管理装置により通信グループの管理が終了されたことが検出され、情報管理装置が通信グループの管理を終了したことが検出されたとき、通信グループにおける自分自身の第１の優先順位を含むメッセージが、通信グループに参加する他の情報処理装置に送信される。また、他の情報処理装置から送信されてくる、他の情報処理装置の、通信グループにおける第２の優先順位が含まれる他のメッセージが受信され、第１の優先順位が、他のメッセージに含まれる第２の優先順位よりも高いとき、通信グループが新たに管理される。
【００３２】
【発明の実施の形態】
図１は、本発明を適用した通信システムの構成例を示す図である。
【００３３】
ネットワーク４は、IEEE(Institute of Electrical and Electronics Engineers)802.11bに準拠した無線LAN(Local Area Network)やBluetooth（登録商標）のPAN(Personal Area Network)プロファイルなどにより実現される無線ネットワーク、或いは、有線のネットワークであり、このネットワーク４を介して、各種の機器の間で通信が行われる。
【００３４】
図１の例においては、ネットワーク４には、パーソナルコンピュータやPDA(Personal Digital Assistants)などよりなるノード１乃至ノード３が接続されている。
【００３５】
ノード１乃至ノード３のそれぞれは、例えば、ネットワーク４に接続された他のノードに対して所定のサービスを提供する「サーバ」と、サーバが提供するサービスを利用する「クライアント」の両方の機能を有する。以下、適宜、サーバの機能を実現する、後述する「正式サーバ」の状態を有するノード（情報管理装置）を単にサーバと称し、クライアントの機能を実現するノード（情報処理装置）を単にクライアントと称する。
【００３６】
所定のサーバと、そのサーバにより提供されるサービスを利用するクライアントにより「グループ」が構成される。所定のノードがグループに所属し、サーバにより提供されるサービスが利用可能になったとき、そのノードは、「グループ」に参加した状態となる。
【００３７】
図１の例においては、ノード１乃至ノード３によりグループが構成され、ノード１がサーバとして提供する所定のサービスを、クライアントとしてのノード２、およびノード３が利用している。
【００３８】
なお、サーバは、サーバ機能と同時に、クライアントの機能を実現することも可能である。また、図１においては、ノード１乃至ノード３の３つのノードが図示されているが、これ以外にも、さらに多数のノードがネットワーク４に適宜接続される。
【００３９】
図２は、図１のノード１の構成例を示すブロック図である。
【００４０】
ノード１は、例えば、演算処理部１１と通信部１２から構成される。
【００４１】
演算処理部１１は、例えば、パーソナルコンピュータのCPU(Central Processing Unit)などにより構成され、通信部１２は、IEEE802.11a，802.11bに準拠した無線通信機能を備えるLANインタフェースボードなどにより構成される。
【００４２】
通信部１２は、ネットワーク４に接続され、演算処理部１１の制御に基づいて、それぞれのノードとの間でIPマルチキャストの通信を行う。通信部１２により取得された、他のノードから送信されてきたデータは、演算処理部１１に出力される。
【００４３】
なお、図２は、ノード１を実現するための最小限の構成について図示したものであり、ノード１は、例えば、図３に示されるように、マウスやキーボードなどよりなる入力部、および、ディスプレイやスピーカなどよりなる出力部などを含む、ユーザインタフェース部１３を備えるようにすることもできる。
【００４４】
図４は、図２のノード１の機能構成例を示すブロック図である。図４の各機能部は、図２の演算処理部１１により所定のプログラムが実行されて実現される。
【００４５】
通信機能部２１は、図２の通信部１２を制御し、ネットワーク４上に存在する他のノードと通信する機能を有する。通信機能部２１により、グループ管理機能部２２、サーバ機能部２３、クライアント機能部２４に対して通信機能が提供される。
【００４６】
具体的には、通信機能部２１は、グループ管理機能部２２、サーバ機能部２３、クライアント機能部２４に対して、「ノードID」と称される識別子により指定されたノードに任意のメッセージを送信する機能、および、所定のノードから送信されてきたメッセージを受信する機能を提供する。
【００４７】
通信機能部２１からは、例えば、他のノードに対して所定のメッセージがマルチキャスト送信される。ここで、マルチキャスト送信とは、同一のサービスに参加している、または、参加しようとしているコンピュータ（ノード）全てに、同一のメッセージを送信することをいう。
【００４８】
グループ管理機能部２２は、同一のネットワーク（例えば、ネットワーク４）に接続された、他のノードと各種のメッセージを交換することにより、グループを形成し、維持する機能を有する。グループ管理機能部２２は、例えば、メッセージ管理部２２Ａ、状態管理部２２Ｂ、および、リスト管理部２２Ｃを有している。
【００４９】
グループ管理機能部２２のメッセージ管理部２２Ａは、メッセージの生成、および、メッセージの送受信を管理する。
【００５０】
グループ管理機能部２２の状態管理部２２Ｂは、ノード１が参加しているグループにおける自分自身の状態を管理する。グループ管理機能部２２により管理される状態には、例えば、「初期状態」、「サーバ候補Ａ」、「サーバ候補Ｂ」、「正式サーバ」、「未参加」、「参加」、「離脱」の７つの状態があり、そのときの状況に応じて、状態の遷移が行われる。
【００５１】
例えば、グループ管理機能部２２の状態管理部２２Ｂは、「サーバ機能」を提供するノードがネットワーク４上に存在しない場合、自分自身の状態を「正式サーバ」に遷移させ、ネットワーク４に接続されている他のノードに「サーバ機能」を提供する。
【００５２】
グループ管理機能部２２のリスト管理部２２Ｃは、グループに参加している「ノード」をリストで管理する。このリストの先頭に示されるノードが「サーバ」であり、それ以外のノードがクライアントである。
【００５３】
リストは、全てのノードにより管理され、サーバにより常にアップデートされる。すなわち、最新のリストが、サーバからクライアントに対して所定の周期で配布され、それぞれのクライアントが有するリストが更新される。
【００５４】
サーバ機能部２３は、通信機能部２１と協働し、１つ、または複数のクライアントと通信を行い、サーバ・クライアント型の所定のサービスを提供する機能を有する。サーバ機能部２３は、例えば、コンピュータソフトウェアにより実現される。
【００５５】
サーバ機能部２３は、例えば、演算処理部１１によりサービスの利用が開始されたときに起動し、クライアントからのメッセージと内部状態に基づいて、所定の演算を行い、演算結果を内部状態に反映させるとともに、結果の全部または一部を、クライアントに返すなどの処理を行う。
【００５６】
例えば、クライアント機能部２４は、通信機能部２１と協働し、所定のノードにより実現されるサーバと通信を行い、サーバにより提供されるサーバ・クライアント型のサービスを受ける機能、および、サーバからのサービスを受け、適宜、ユーザインタフェースを介して、ユーザからの操作を受け付けたり、ユーザに所定の情報を提示するなどの機能を有する。
【００５７】
なお、ノード２、およびノード３は、ノード１と同様の構成を有している。図２乃至図４に示されるノード１の構成は、必要に応じて、ノード２、およびノード３の構成としても引用される。
【００５８】
図５は、グループ管理機能部２２の状態管理部２２Ｂにより管理される状態遷移の例を示す図である。
【００５９】
初期状態（State1）は、グループに参加しようとするノードの状態を表す。初期状態のノードは、既に存在するグループのサーバから送信されるグループ告知メッセージを所定期間内に受信することができなかった場合、自分自身の状態をサーバ候補Ａ（State2）に遷移させる。
【００６０】
後述するように、グループに存在するサーバからは、グループ告知メッセージが所定周期でマルチキャスト送信されている。従って、所定の時間経過したにも関わらず、グループ告知メッセージが送信されてこない場合、それは、参加しようとしているグループに、サーバが存在しない可能性があることを表している。
【００６１】
サーバ候補Ａ（State2）は、サーバが存在しない可能性があるときに遷移される状態である。サーバ候補Ａのノードは、自分自身のサーバ候補としての順位を含むサーバ候補告知メッセージを他のノードに送信する。
【００６２】
サーバ候補Ａのノードは、サーバ候補告知メッセージを送信してから所定の時間経過した場合、或いは、自分自身が、他のサーバ候補（サーバ候補Ａまたはサーバ候補Ｂ）のノードよりも高い優先順位が設定されているノードであると判断した場合、その状態を、正式サーバ（State4）に遷移させる。
【００６３】
一方、他のサーバ候補のノードから送信されてくるサーバ候補告知メッセージにより、自分自身よりも高い優先順位を有するノードが他に存在すると判定した場合、または、サーバから送信されるグループ告知メッセージを受信した場合、サーバ候補Ａのノードは、その状態を未参加（State3）に遷移させる。
【００６４】
初期状態（State1）のノードは、初期状態となってから所定の時間内にグループ告知メッセージを受信した場合、或いは、サーバ候補Ａまたはサーバ候補Ｂのノードから送信されるサーバ候補告知メッセージを受信した場合、その状態を未参加（State3）に遷移させる。
【００６５】
未参加（State3）は、未だグループに参加していない状態を表す。未参加のノードは、グループ内に存在するサーバに対してノード参加要求メッセージを送信し、それに応じて、サーバからノード参加承認メッセージが返信されてきた場合、または、サーバにより送信されるグループ告知メッセージに格納されるノードリストに、自分自身のノードが存在する場合、その状態を参加（State5）に遷移させる。
【００６６】
参加（State5）は、クライアントとしてグループに参加している状態を表す。参加のノードは、最後にグループ告知メッセージを受信してから所定の時間以上、サーバからグループ告知メッセージが送信されてきていないと判定した場合、または、サーバがグループから離脱したと判定した場合、その状態をサーバ候補Ｂ（State6）に遷移させる。
【００６７】
サーバ候補Ｂ（State6）は、参加状態のクライアントが必要に応じて遷移する状態である。サーバ候補Ｂのノードは、サーバから送信されるグループ告知メッセージを受信した場合、または、自分自身より、サーバ候補としての優先順位が高いノードが存在することを表すサーバ候補告知メッセージを受信した場合、その状態を参加（State5）に遷移させる。
【００６８】
また、サーバ候補Ｂのノードは、サーバ候補告知メッセージを送信してから所定の時間経過した場合、或いは、グループ内に存在するサーバから送信されてきた、自分自身宛のサーバ移動通知メッセージを受信した場合、その状態を正式サーバ（State4）に遷移させる。
【００６９】
正式サーバ（State4）は、サーバとしてグループを管理するノードが遷移する状態である。正式サーバのノードは、後述するサーバ離脱のシーケンスによりグループから離脱した場合、および、参加（State5）のノードが、ノード離脱のシーケンスによりグループから離脱した場合、その状態を、離脱（State7）に遷移させる。
【００７０】
離脱（State7）は、グループから離脱した状態を表す。離脱状態のノードは、その後、自分自身の状態を、適宜、未参加（State3）などの状態に遷移される。
【００７１】
以上のようにして、それぞれのノードの状態が遷移される。なお、上述した各メッセージの詳細については後述する。
【００７２】
図６および図７は、ノードリストの例を示す図である。
【００７３】
上述したように、グループに参加する各ノード（クライアント）は、サーバから送信されるグループ告知メッセージに基づいて、最新の、かつ、同一のノードリストを管理する。そして、例えば、グループのサーバが離脱した場合、ノードリストにより表される各ノードの優先順位に基づいて、次にサーバとして機能するノードが決定される。
【００７４】
図６は、優先順位を数値により表したものである。この例においては、最も低い数値が割り当てられているノードが、優先順位が最も高いノードであることを表している。
【００７５】
図６の例においては、数値「０」が割り当てられているノードＡが、最も優先順位が高いノードであり、サーバである。また、図６の例においては、数値「１」が割り当てられているノードＤ、数値「２」が割り当てられているノードＣ、数値「３」が割り当てられているノードＢ、数値「４」が割り当てられているノードＥの順に、優先順位が設定されている。
【００７６】
図６に示されるノードリストが、ノードＡ乃至ノードＥのノードIDを有する各ノードにより管理される。
【００７７】
図７は、メモリのアドレスに応じて、優先順位が決定されるノードリストの例を示す図である。
【００７８】
図７の例においては、メモリの領域３１に記述されているノードＡが、最も優先順位が高いノードであり、サーバである。また、図７の例においては、領域３２にIDが記述されているノードＤ、領域３３にIDが記述されているノードＣ、領域３４にIDが記述されているノードＢ、領域３５にIDが記述されているノードＥの順に優先順位が設定されている。
【００７９】
各ノードにおいては、例えば、図８乃至図１０に示されるような階層構造によりノードリストが管理される。
【００８０】
図８は、ノードＡにより管理されるグループ管理テーブル４１の例を示す図である。
【００８１】
グループ管理テーブル４１により、ノードＡが把握しているグループの数、および、個別グループ管理テーブルの参照先が管理される。個別グループ管理テーブルには、それぞれのグループに関する情報が記述される。
【００８２】
図８のグループ管理テーブル４１には、ノードＡが把握しているグループの数が３つであることが記述されている。また、グループＡの個別グループ管理テーブル（グループＡ管理テーブル）の参照先（参照１）、グループＢの個別グループ管理テーブル（グループＢ管理テーブル）の参照先（参照２）、および、グループＣの個別グループ管理テーブル（グループＣ管理テーブル）の参照先（参照３）が記述されている。
【００８３】
図９は、グループＡの個別グループ管理テーブル５１の例を示す図である。
【００８４】
個別グループ管理テーブル５１は、図８のグループ管理テーブル４１に参照先として記述されている「参照１」に基づいて取得される。
【００８５】
個別グループ管理テーブル５１には、このテーブルにより情報が管理されるグループのグループID、グループＡにおける、ノードＡ（自ノード）の状態、および、グループＡに属するノードのノードリストの参照先が記述されている。
【００８６】
図９の例においては、グループIDは「グループＡ」であり、ノードＡの状態は「３」であり、ノードリスト管理テーブル（ノードリストとノードの数を表すテーブル）の参照先は「参照１」である。
【００８７】
ノードの状態は、数値により表される。例えば、「初期状態」は「０」で表され、「サーバ候補Ａ」は「１」で表され、「未参加」は「２」で表される。また、「正式サーバ」は「３」で表され、「参加」は「４」で表され、「サーバ候補Ｂ」は「５」で表され、「離脱」は「６」で表される。すなわち、この場合、図９の個別グループ管理テーブル５１を有するノードＡの状態は正式サーバである。
【００８８】
図１０は、グループＡに属するノードのノードリスト６１の例を示す図である。
【００８９】
ノードリスト６１は、図９の個別グループ管理テーブル５１により参照先として管理される「参照１」に基づいて取得される。
【００９０】
図１０の例においては、グループＡに属するノードの数は「４」である。また、ノードID「１」により表される「ノードＡ」が優先順位１位のノードとされ、サーバである。さらに、ノードID「２」により表される「ノードＢ」が優先順位２位のノードであり、ノードID「３」により表される「ノードＣ」が優先順位３位のノードであり、ノードID「４」により表される「ノードＤ」が優先順位４位のノードである。
【００９１】
以上のような階層構造を有するテーブル情報、およびノードリストが各ノードにおいて管理される。
【００９２】
図１１は、各ノード間で送受信されるメッセージのフォーマットの例を示す図である。
【００９３】
領域７１には、メッセージの送信先を表すIDが記述される。領域７１には、例えば、送信先が特定のノードである場合、そのノードの固有のノードIDが記述され、送信先がサーバである場合、送信先がサーバであることを表す、予め規定された所定のIDが記述される。また、送信先が同一のグループに属する全てのノードである場合、そのことを表す、予め規定された所定のIDが記述される。
【００９４】
上述したように、メッセージは、ネットワーク４上にマルチキャスト送信される。
【００９５】
ネットワーク４にマルチキャスト送信されたメッセージを受信したノードの通信機能部２１は、自分自身のノードのノードIDと、領域７１に記述されるIDを比較し、送信されてきたメッセージが自分自身に対して送信されてきたものであるのか否かを判断する。例えば、通信機能部２１は、領域７１に記述されるノードIDと、自分自身のノードIDが一致する場合、自分自身がサーバであり、領域７１に、メッセージの送信先がサーバであることを表す所定のIDが記述されている場合、または、領域７１に、メッセージの送信先が全てのノードであることを表す所定のIDが記述されている場合、受信したメッセージをグループ管理機能部２４に出力する。
【００９６】
領域７２には、メッセージの送信元を表すIDが記述される。領域７２には、例えば、メッセージを送信するノードのノードID、または、メッセージの送信元がサーバであることを表す予め規定されたIDなどが記述される。
【００９７】
領域７３には、送信されるメッセージの種別（コマンド）が記述され、領域７４には、ノードリストなどを含む、所定の送信データが記述される。
【００９８】
図１２は、図１１の領域７３に記述されるコマンドと、コードの対応例を示す図である。
【００９９】
送信されるメッセージがグループ告知メッセージである場合、例えば、その領域７３には「0x00」が記述され、サーバ候補告知メッセージである場合、「0x01」が記述され、サーバ離脱要求メッセージである場合、「0x02」が記述され、サーバ移動通知メッセージである場合、「0x03」が記述される。
【０１００】
また、送信されるメッセージがノード参加要求メッセージである場合、その領域７３には「0x04」が記述され、ノード参加承認メッセージである場合、「0x05」が記述され、ノード離脱要求メッセージである場合、「0x06」が記述され、ノード離脱承認メッセージである場合、「0x07」が記述される。
【０１０１】
さらに、送信されるメッセージがノード参加拒否メッセージである場合、その領域７３には「0x08」が記述され、サーバからクライアントに対するデータ送信メッセージである場合、「0x09」が記述され、クライアントからサーバに対するデータ送信メッセージである場合、「0x0A」が記述される。
【０１０２】
なお、メッセージのフォーマットは、図１１に示されるものに限られない。
【０１０３】
次に、図１の通信システムの動作について説明する。
【０１０４】
始めに、図１３のシーケンスを参照して、正式サーバであるノード１から、クライアントであるノード２、およびノード３に対してグループ告知メッセージが送信される処理について説明する。
【０１０５】
なお、以下においては、ノード１乃至ノード３を、それぞれノードＡ乃至ノードＣとも称する。
【０１０６】
ステップＳ１において、ノードＡ（ノード１）のグループ管理機能部２２のメッセージ管理部２２Ａは、通信機能部２１を制御し、ノードＢ、およびノードＣに対して、グループ告知メッセージをマルチキャスト送信する。上述したように、グループ告知メッセージには、同一のグループに属するノードのリストが含まれる。
【０１０７】
図１４は、ステップＳ１において送信されるグループ告知メッセージの例を示す図である。図１１と対応する部分には同一の符号が付されている。
【０１０８】
領域７１には、送信先が、グループに属する全てのノードであることを表す「ALL」（メッセージの送信先が全てのノードであることを表す所定のID）が記述され、領域７２には、メッセージの送信元のノードを表す「ノードＡ」（メッセージの送信元がノードＡであることを表す所定のID）が記述され、領域７３には、このメッセージがグループ告知メッセージであることを表すコマンド（例えば、「0x00」）が記述されている。
【０１０９】
領域７４には、送信データとして、記述されるノードリストが「グループＧ」に属するノードに関するものであることを表す情報と、ノードリストが記述されている。図１４の例においては、「グループＧ」に属するノードの数は「３」であり、「ノードＡ」、「ノードＢ」、「ノードＣ」の順序に、優先順位が設定されていることが記述されている。
【０１１０】
図１３の説明に戻り、このような各種の情報を含むグループ告知メッセージが、サーバであるノードＡから送信される。
【０１１１】
ノードＡから送信されたグループ告知メッセージは、ステップＳ１１においてノードＢにより受信され、ステップＳ２１においてノードＣにより受信される。
【０１１２】
グループ告知メッセージは、所定の周期でサーバから送信される。すなわち、ステップＳ１の処理が行われてから所定時間経過後のステップＳ２、および、ステップＳ２の処理が行われてから所定時間経過後のステップＳ３において、それぞれ、ノードＡから、ノードＢ、およびノードＣに対してグループ告知メッセージが送信される。
【０１１３】
ノードＢは、ノードＡから送信されてきたグループ告知メッセージをステップＳ１２およびＳ１３において受信し、ノードＣは、ステップＳ２２およびＳ２３において受信する。
【０１１４】
グループ告知メッセージを受信したノードＢ、およびノードＣ（クライアント）は、必要に応じて、受信したメッセージに含まれるノードリストに基づいて、自分自身が管理するノードリストを更新する。
【０１１５】
以上の処理がノードＡ乃至ノードＣにより繰り返し実行される。
【０１１６】
このように、最新のグループ構成を表すノードリストが、所定の周期でサーバにより配布されるため、それぞれのクライアントは、常に最新のノードリストを有することになる。
【０１１７】
次に、図１５のフローチャートを参照して、グループ告知メッセージを送信するノードＡの処理について説明する。図１５に示される処理は、基本的には、図１３を参照して説明したノードＡの処理と同様である。
【０１１８】
ステップＳ３１において、ノードＡのグループ管理機能部２２のメッセージ管理部２２Ａは、直前にグループ告知メッセージを送信してから、所定の時間が経過したか否かを判定し、所定の時間が経過したと判定するまで待機する。
【０１１９】
メッセージ管理部２２Ａは、ステップＳ３１において、所定の時間が経過したと判定した場合、ステップＳ３２に進み、通信機能部２１を制御し、現在のノードリストを含むグループ告知メッセージを送信する。送信されるノードリストは、リスト管理部２２Ｃにより管理されているものである。
【０１２０】
その後、ステップＳ３１に戻り、以上の処理が繰り返し実行される。
【０１２１】
次に、図１６のフローチャートを参照して、図１５の処理に対応してノードＢにより実行される処理について説明する。すなわち、図１６に示される処理は、基本的には、図１３を参照して説明したノードＢの処理と同様である。
【０１２２】
ステップＳ４１において、ノードＢのクライアント機能部２４のメッセージ管理部２２Ａは、通信機能部２１を制御し、サーバであるノードＡから所定周期で送信されてくるグループ告知メッセージを受信する。受信されたメッセージに含まれるノードリストはリスト管理部２２Ｃに出力される。
【０１２３】
ステップＳ４２において、リスト管理部２２Ｃは、自分自身が管理しているノードリストと、グループ告知メッセージにより送信されてきたノードリストを比較し、管理するノードリストの更新が必要であるか否かを判定する。
【０１２４】
リスト管理部２２Ｃは、ステップＳ４２において、ノードリストの更新が必要でないと判定した場合、ステップＳ４１に戻り、以上の処理を繰り返し実行する。
【０１２５】
一方、ステップＳ４２において、グループ告知メッセージにより送信されてきたノードリストにより、自分自身が管理するノードリストを更新する必要があると判定した場合、ステップＳ４３に進み、リスト管理部２２Ｃは、ノードリストを更新する。
【０１２６】
例えば、クライアント機能部２４は、ノードリストに付されているタイムスタンプを参照し、自分自身が管理しているノードリストよりも、送信されてきたノードリストの方が新しいと判定した場合、ノードリストの更新を行う。
【０１２７】
以上の処理により、最新のノードリストがクライアントにより管理される。なお、以上の処理は、クライアントであるノードＣにおいても実行される。
【０１２８】
次に、図１７のフローチャートを参照して、ネットワーク４に接続し、グループにおける動作を開始するノードＣ（初期状態のノード）の処理について説明する。
【０１２９】
ノードＣのグループ管理機能部２２の状態管理部２２Ｂは、ネットワーク４に接続されたとき、ノードＣの状態を初期状態（図５のState1）とする。また、状態管理部２２Ｂは、ネットワーク４上においてマルチキャスト送信されるメッセージを所定の期間だけ受信し、ステップＳ５１において、受信されたメッセージの中にグループ告知メッセージがあるか否かを判定する。
【０１３０】
上述したように、グループに存在するサーバから、グループ告知メッセージが所定の周期でマルチキャスト送信される。従って、所定期間内にノードＣがグループ告知メッセージを受信した場合、それは、ネットワーク４上に、グループを管理するサーバが既に存在することを表し、反対に、受信できない場合、ネットワーク４上にサーバが存在しない可能性があることを表している。
【０１３１】
ステップＳ５１において、状態管理部２２Ｂは、グループ告知メッセージが所定期間内に送信されてきたと判定した場合、自らを「サーバでない」と認識し、ステップＳ５２に進み、グループ参加処理を実行する。
【０１３２】
このとき、ノードＣの状態は、未参加（図５のState3）の状態である。ステップＳ５２で実行されるグループ参加処理については、図１８のシーケンス等を参照して後述する。
【０１３３】
ステップＳ５２の処理により、クライアントしてノードＣが正式にグループに参加できた場合、ステップＳ５３において、ノードＣは、クライアントとして、グループ告知メッセージの受信処理を行う。すなわち、ノードＣにより、図１６を参照して説明した処理が実行される。その後、グループ開始処理が終了される。
【０１３４】
一方、ステップＳ５１において、所定期間内にグループ告知メッセージが送信されてきていないと判定した場合、状態管理部２２Ｂは、ステップＳ５４に進み、自分自身の状態をサーバ候補Ａ（図５のState2）とし、サーバ調停処理を実行する。ステップＳ５４で実行されるサーバ調停処理については、図２６のシーケンス等を参照して後述する。
【０１３５】
ステップＳ５５において、状態管理部２２Ｂは、サーバ調停処理の結果、自分自身が正式サーバになれたか否かを判定する。
【０１３６】
サーバ調停処理において、ノードＣに設定されているサーバ候補としての優先順位が最も高い場合、ノードＣがサーバとして決定され、ノードＣよりも優先順位が高いサーバ候補が存在する場合、他のノード（ノードＣ以外のノード）がサーバとして決定される。
【０１３７】
状態管理部２２Ｂは、ステップＳ５５において、正式サーバになれなかったと判定した場合、ステップＳ５２に進み、グループ参加処理を実行し、反対に、正式サーバになれたと判定した場合、ステップＳ５６に進み、正式サーバとして、グループ管理処理、すなわち、グループ告知メッセージの送信処理を開始する。
【０１３８】
ステップＳ５６においては、正式サーバであるノードＣにより、図１５を参照して説明したグループ告知メッセージの送信処理が実行される。
【０１３９】
次に、図１８のシーケンスを参照して、図１７のステップＳ５２において実行されるグループ参加処理について説明する。
【０１４０】
ステップＳ９１において、ノードＣのメッセージ管理部２２Ａは、状態管理部２２Ｂからのトリガ（例えば、未参加の状態であることの通知）に応じて、通信機能部２１を制御し、ノード参加要求メッセージをサーバに対して送信（マルチキャスト送信）する。
【０１４１】
このメッセージには、送信先を指定する情報として、サーバ（ノードＡ）に送信することを表すIDが記述される。従って、マルチキャスト送信により、ノード参加要求メッセージがノードＢに対しても送信されるが、メッセージの領域７１に記述されるIDに基づいて、ノードＢの通信機能部２１により破棄される。
【０１４２】
ノードＣにより送信されたノード参加要求メッセージは、ステップＳ７１において、正式サーバであるノードＡにより受信される。
【０１４３】
ステップＳ７２において、ノードＡのメッセージ管理部２２Ａは、ノード参加承認メッセージをノードＣに対して返信し、ステップＳ７３に進み、ノードリストを更新する。すなわち、ノードＣに関する情報（優先順位等）がリスト管理部２２Ｃによりノードリストに追加される。
【０１４４】
ノードＡから送信されたノード参加承認メッセージは、ステップＳ９２において、ノードＣにより受信される。なお、ノード参加承認メッセージには、送信先としてノードＣが指定されているため、マルチキャスト送信されたノード参加承認メッセージはノードＢには取得されない。
【０１４５】
ステップＳ７４において、ノードＡのメッセージ管理部２２Ａは、更新したノードリストを含むグループ告知メッセージをマルチキャスト送信する。送信されたグループ告知メッセージは、ステップＳ８１においてノードＢにより受信され、ステップＳ９３においてノードＣにより受信される。
【０１４６】
これにより、ノードＣが、ノードＡにより管理されるグループにクライアントとして参加した状態となる。
【０１４７】
図１９乃至図２３は、メッセージの例を示す図である。
【０１４８】
図１９は、図１８の処理によりノードＣがグループに参加する前に、ノードＡからノードＢに対して送信されるグループ告知メッセージの例を示す図である。
【０１４９】
すなわち、領域７１には、送信先として「ALL」が記述され、領域７２には、送信元として「ノードＡ」が記述され、領域７３には、このメッセージがグループ告知メッセージであることを表すコマンド（例えば、「0x00」（図１２））が記述される。また、領域７４には、ノードＡが管理するグループのグループ名「グループＧ」と、そのグループに属するノードの数「２」、および、「ノードＡ」、「ノードＢ」の順に、優先順位が設定されているノードリストが記述される。
【０１５０】
すなわち、図１９に示されるグループ告知メッセージのノードリストには、ノードＣの情報がまだ含まれていない。
【０１５１】
図２０は、図１８のステップＳ９１において、ノードＣからノードＡに対して送信されるノード参加要求メッセージの例を示す図である。
【０１５２】
図に示されるように、メッセージの送信先として「ノードＡ」が領域７１に記述され、メッセージの送信元として「ノードＣ」が領域７２に記述される。また、領域７３には、このメッセージがノード参加要求メッセージであることを表すコマンド（例えば、「0x04」（図１２））が記述され、領域７４には、送信データとして、ノードＣが参加を希望するグループ名「グループＧ」と、自分自身の名前が記述される。
【０１５３】
図２１は、図１８のステップＳ７２において、ノードＡからノードＣに対して送信されるノード参加承認メッセージの例を示す図である。
【０１５４】
図に示されるように、メッセージの送信先として「ノードＣ」が領域７１に記述され、メッセージの送信元として「ノードＡ」が領域７２に記述される。また、領域７３には、このメッセージがノード参加承認メッセージであることを表すコマンド（例えば、「0x05」（図１２））が記述され、領域７４には、送信データとして、グループ名「グループＧ」と、ノードＣの名前が記述される。
【０１５５】
図２２は、図１８のステップＳ７４において、ノードＡから、ノードＢ、およびノードＣに対して送信されるグループ告知メッセージの例を示す図である。
【０１５６】
図に示されるように、メッセージの送信先として「ALL」が領域７１に記述され、メッセージの送信元として「ノードＡ」が領域７２に記述される。また、領域７３には、このメッセージがグループ告知メッセージであることを表すコマンドが記述され、領域７４には、ノードＡが管理するグループのグループ名「グループＧ」と、そのグループに属するノードの数「３」、および、「ノードＡ」、「ノードＢ」、「ノードＣ」の順に、優先順位が設定されているノードリストが記述される。
【０１５７】
すなわち、ノードＣがグループに参加した後に送信される図２２のグループ告知メッセージには、図１９のグループ告知メッセージと比較して、ノードＣに関する情報がノードリストに追加されている。
【０１５８】
図２３は、ノードＣの参加が拒否された場合に、ノードＡからノードＣに送信されるノード参加拒否メッセージの例を示す図である。
【０１５９】
図に示されるように、メッセージの送信先として「ノードＣ」が領域７１に記述され、メッセージの送信元として「ノードＡ」が領域７２に記述される。また、領域７３には、このメッセージがノード参加拒否メッセージであることを表すコマンド（例えば、「0x08」（図１２））が記述され、領域７４には、送信データとして、ノードＣが参加を希望していたグループ名「グループＧ」と、ノードＣの名前が記述される。
【０１６０】
以上のようなメッセージが、図１８を参照して説明した処理、および、その前後において送受信される。
【０１６１】
次に、図２４のフローチャートを参照して、グループへの参加を要求するノードＣの処理について説明する。
【０１６２】
図２４に示される処理は、基本的には、図１８を参照して説明したノードＣの処理と同様である。
【０１６３】
すなわち、ステップＳ１０１において、ノードＣのグループ管理機能部２２のメッセージ管理部２２Ａは、通信機能部２１を制御し、ノード参加要求メッセージをノードＡに対して送信する。例えば、図２０のメッセージがメッセージ管理部２２Ａにより生成され、送信される。
【０１６４】
ノードＣにより送信されたノード参加要求メッセージは、ノードＡにより受信され、ノードＣの参加を承認するか否かが判定される（図２５のステップＳ１１３）。ノードＣのグループへの参加が承認された場合、ノードＡからノードＣに対して、ノード参加承認メッセージが送信される（図２５のステップＳ１１６）。
【０１６５】
ステップＳ１０２において、ノードＣのメッセージ管理部２２Ａは、ノードＡからノード参加承認メッセージが送信されてきたか否かを判定し、例えば、参加拒否メッセージが送信されてきた場合、ノード参加承認メッセージが送信されてこないと判定し、ステップＳ１０３に進み、エラー処理を実行する。
【０１６６】
例えば、ノードＡにより管理されるノードの数やノードの属性（機器の種類）などに制限があり、ノードＣが参加できない場合、ノードＡからノードＣに対してノード参加拒否メッセージが送信される。
【０１６７】
ステップＳ１０３において、グループ管理機能部２２は、エラー処理として、グループに参加できなかったことをユーザに提示したり、或いは、再度、グループ参加要求メッセージを送信するなどの処理を実行する。その後、処理は終了される。
【０１６８】
このとき、ノードＣの状態は、未参加（図５のState3）のままである。
【０１６９】
一方、ステップＳ１０２において、ノードＡから、ノード参加承認メッセージが送信されてきたと判定した場合、メッセージ管理部２２Ａは、ステップＳ１０４に進み、それを受信する。
【０１７０】
ノードＣは、ステップＳ１０５において、受信されるグループ告知メッセージに含まれるノードリストを取得し、クライアントとして、ノードＡが管理するグループに参加する。すなわち、メッセージ管理部２２Ａからの指示に応じて、状態管理部２２Ｂにより、ノードＣの状態が未参加から参加（図５のState5）に遷移されるとともに、リスト管理部２２Ｃにより、ノードリストが管理される。
【０１７１】
次に、図２５のフローチャートを参照して、図２４の処理に対応してノードＡにより実行される処理について説明する。
【０１７２】
図２５に示される処理は、基本的には、図１８を参照して説明したノードＡの処理と同様である。
【０１７３】
ステップＳ１１１において、ノードＡのメッセージ管理部２２Ａは、ノード参加要求メッセージがノードＣから送信されてきたか否かを判定し、送信されてきたと判定するまで待機する。
【０１７４】
メッセージ管理部２２Ａは、ステップＳ１１１において、ノード参加要求メッセージが送信されてきたと判定した場合、ステップＳ１１２に進み、それを受信する。ノードＣから送信されてくるノード参加要求メッセージには、メッセージの送信先として、ノードＡ（サーバ）が記述されている。
【０１７５】
ステップＳ１１３において、メッセージ管理部２２Ａは、ノードＣの参加を承認するか否かを判定し、承認しないと判定した場合、ステップＳ１１４に進み、図２３に示されるノード参加拒否メッセージをノードＣに対して送信する。
【０１７６】
メッセージ管理部２２Ａは、ステップＳ１１３において、グループへの参加を承認すると判定した場合、ステップＳ１１５に進み、リスト管理部２２Ｃを制御し、グループ内でのノードＣの優先順位をノードリストに追加し、更新する。
【０１７７】
ステップＳ１１６において、メッセージ管理部２２Ａは、例えば、図２１に示されるノード参加承認メッセージをノードＣに対して送信する。
【０１７８】
その後、図１５を参照して説明したグループ告知メッセージの送信処理がノードＡにより実行され、ステップＳ１１５で更新されたノードリストがノードＢ、およびノードＣに配布される。
【０１７９】
以上の処理が繰り返し実行され、複数のノードが参加するグループが形成される。
【０１８０】
以上においては、参加が承認されたノードＣに対して、ノード参加承認メッセージが送信されるとしたが、ノード参加承認メッセージを送信することに代えて、ノードＣに関する情報が追加されたノードリストを含むグループ告知メッセージが送信されるようにしてもよい。ノードＣに関する情報が追加されたノードリストを含むグループ告知メッセージを受信し、その内容を確認することによっても、ノードＣは、自分自身がグループへの参加が承認されたことを把握することができる。
【０１８１】
次に、図２６のシーケンスを参照して、図１７のステップＳ５４において実行される調停処理について説明する。
【０１８２】
この調停処理は、サーバ候補（サーバ候補ＡまたはＢ）のノードの中から、１つのサーバを決定する処理である。図２６においては、ノードＡ乃至ノードＣがそれぞれサーバ候補Ａの状態である場合について説明する。
【０１８３】
ノードＡのメッセージ管理部２２Ａは、状態管理部２２Ｂからサーバ候補Ａに遷移したことが通知されることに応じて、ステップＳ１２１において、自分自身がサーバ候補であることを他のノードに通知するサーバ候補告知メッセージをマルチキャスト送信する。
【０１８４】
図２７は、ノードＡによりマルチキャスト送信されるサーバ候補告知メッセージの例を示す図である。
【０１８５】
図に示されるように、メッセージの送信先として「ALL」が領域７１に記述され、メッセージの送信元として「ノードＡ」が領域７２に記述される。また、領域７３には、このメッセージがサーバ候補告知メッセージであることを表すコマンド（例えば、「0x01」（図１２））が記述され、領域７４には、送信データとして、形成するグループのグループ名「グループＧ」と、優先順位「１０」が記述される。
【０１８６】
優先順位は、例えば、リスト管理部２２Ｃが有する擬似乱数生成機能により生成された、０乃至２５５の値のうちの所定の値に基づいて設定される。例えば、より小さい値が設定されているノードが、正式サーバになる優先順位の、より高いノードとされる。
【０１８７】
このような優先順位を含むサーバ候補告知メッセージが、サーバ候補のノードにより送受信され、それぞれのノードにおいて行われる比較の結果、最も優先順位が高い（乱数に基づいて設定されている数値が低い）ノードがサーバとして決定される。
【０１８８】
図２６の説明に戻り、ノードＡから送信されたサーバ候補告知メッセージは、ステップＳ１３１においてノードＢにより受信され、ステップＳ１４１においてノードＣにより受信される。
【０１８９】
ステップＳ１３２において、ノードＢのメッセージ管理部２２Ａは、自分自身がサーバ候補であることを他のノードに通知するサーバ候補告知メッセージをマルチキャスト送信する。
【０１９０】
図２８は、ノードＢによりマルチキャスト送信されるサーバ候補告知メッセージの例を示す図である。
【０１９１】
図２８に示されるサーバ候補告知メッセージは、メッセージの送信元として「ノードＢ」が領域７２に記述されている点、および、優先順位が「７１」として設定されている点を除いて、図２７に示されるものと同様であり、重複する説明は省略する。
【０１９２】
ノードＢから送信されたサーバ候補告知メッセージは、ステップＳ１２２においてノードＡにより受信され、ステップＳ１４２においてノードＣにより受信される。
【０１９３】
ステップＳ１４３において、ノードＣのメッセージ管理部２２Ａは、自分自身がサーバ候補であることを他のノードに通知するサーバ候補告知メッセージをマルチキャスト送信する。
【０１９４】
図２９は、ノードＣによりマルチキャスト送信されるサーバ候補告知メッセージの例を示す図である。
【０１９５】
図２９に示されるサーバ候補告知メッセージは、メッセージの送信元として「ノードＣ」が領域７２に記述されている点、および、優先順位が「１１２」として設定されている点を除いて、図２７または図２８に示されるものと同様である。
【０１９６】
ノードＣから送信されたサーバ候補告知メッセージは、ステップＳ１２３においてノードＡにより受信され、ステップＳ１３３においてノードＢにより受信される。
【０１９７】
以上のように、サーバ候補であるノード同士の間でサーバ候補告知メッセージが送受信され、それぞれのノードに設定されている優先順位が取得される。
【０１９８】
ノードＡは、ステップＳ１２４において、ノードＢ、およびノードＣから送信されてきたサーバ候補告知メッセージに基づいてサーバ調停を行い、ノードＢは、ステップＳ１３４において、ノードＡ、およびノードＣから送信されてきたサーバ候補告知メッセージに基づいてサーバ調停を行う。また、ノードＣは、ステップＳ１４４において、ノードＡ、およびノードＢから送信されてきたサーバ候補告知メッセージに基づいてサーバの調停を行う。
【０１９９】
具体的には、それぞれのノードにおいて、自分自身に対して設定されている優先順位と、サーバ候補告知メッセージにより取得された、他のノードに設定されている優先順位の比較が行われ、優先順位が最も高いノードが正式サーバとして決定される。
【０２００】
従って、図２７乃至図２９に示されるサーバ候補告知メッセージがノードＡ乃至ノードＣの間で送受信された場合、優先順位が最も高い（設定されている数値が最も低い）ノードＡが、正式サーバとして選択される。
【０２０１】
なお、同一の優先順位を持つノードが存在した場合、例えば、ノードIDのアスキーコードが、より小さいノードが優先順位の高いノードとされる。
【０２０２】
正式サーバとして決定されたノードＡのグループ管理機能部２２のリスト管理部２２Ｃは、ステップＳ１２５において、ノードＡの情報のみが記述されたノードリストを作成する。グループ管理機能部２２のメッセージ管理部２２Ａは、ステップＳ１２６において、リスト管理部２２Ｃにより作成されたノードリストを含むグループ告知メッセージをノードＢ、およびノードＣに対して送信する。
【０２０３】
このとき、正式サーバとして決定されなかったノードＢ、およびノードＣは、サーバ候補Ａ（図５のState2）から、未参加（State3）を経て、クライアントとして参加（State5）している状態となる。
【０２０４】
ノードＡから送信されたグループ告知メッセージは、ステップＳ１３５においてノードＢにより受信され、ステップＳ１４５において、ノードＣにより受信される。
【０２０５】
図３０は、正式サーバとして新たに決定されたノードＡにより送信され、ノードＢ、およびノードＣにより受信されるグループ告知メッセージの例を示す図である。
【０２０６】
図３０の例においては、メッセージの送信先として「ALL」が領域７１に記述され、メッセージの送信元として「ノードＡ」が領域７２に記述される。また、領域７３には、このメッセージがグループ告知メッセージであることを表すコマンド（例えば、「0x00」（図１２））が記述され、領域７４には、送信データとして、グループ名「グループＧ」と、ノードＡに関する情報のみが記述されたノードリストが記述される。
【０２０７】
以上のようにして、グループ上にサーバが存在しない場合であっても、１つのサーバのみを選択することが可能である。
【０２０８】
また、サーバが存在しない場合に、全てのノードがサーバ候補となり、サーバ候補告知メッセージが送受信されるようにしたため、仮に、サーバ以外にも複数のノードが同時にグループから離脱した場合であっても、効率的に、サーバとして動作するノードを決定することが可能となる。すなわち、複数のノードが同時にグループから離脱した場合であっても、グループにノードが残っている限り、その中から、サーバとして動作するノードが選択されることになる。
【０２０９】
なお、以上においては、サーバの調停は、乱数に基づいて設定される優先順位に基づいて行われるとしたが、当然、それ以外の情報に基づいて行われるようにしてもよい。例えば、それぞれのノードのハードウエア構成が比較され、スペックの最も高いノードがサーバとして選択されるようにしてもよいし、単に、最も先にサーバ候補告知メッセージをマルチキャスト送信したノードがサーバとして選択されるようにしてもよい。
【０２１０】
次に、図３１のフローチャートを参照して、サーバ調停を行うノードＡ（サーバ候補Ａ）の処理について説明する。
【０２１１】
図３１に示される処理は、基本的には、図２６を参照して説明したノードＡの処理と同様である。
【０２１２】
ステップＳ１５１において、ノードＡのグループ管理機能部２２のメッセージ管理部２２Ａは、自分自身がサーバ候補であることを他のノードに通知するサーバ候補告知メッセージをマルチキャスト送信し、ステップＳ１５２に進み、他のノードから、サーバ候補告知メッセージが送信されてきたか否かを判定する。
【０２１３】
ステップＳ１５２において、他のノードから、サーバ候補告知メッセージが送信されてきたと判定した場合、メッセージ管理部２２Ａは、ステップＳ１５３に進み、それを受信する。
【０２１４】
ステップＳ１５２において、サーバ候補告知メッセージが送信されてきていないと判定された場合、ステップＳ１５３の処理はスキップされる。
【０２１５】
ステップＳ１５４において、メッセージ管理部２２Ａは、他のノードのものと比較して、自分自身に設定されている優先順位が最も高いか否かを判定し、高くない、すなわち、サーバ候補告知メッセージを送信してきたノードの中に、ノードＡよりも優先順位の高いノードが存在すると判定した場合、ステップＳ１５５に進み、クライアントとしてグループに参加する。
【０２１６】
すなわち、このとき、状態管理部２２Ｂにより、ノードＡの状態が「未参加」の状態を経て「参加」に遷移される。
【０２１７】
一方、ステップＳ１５４において、メッセージ管理部２２Ａは、他のノードのものと比較して、自分自身に設定されている優先順位が最も高いと判定した場合、ステップＳ１５６に進み、サーバ候補告知メッセージを送信してから所定時間が経過したか否かを判定する。
【０２１８】
ステップＳ１５６において、所定時間が経過していないと判定した場合、メッセージ管理部２２Ａは、ステップＳ１５２に戻り、同様の処理を繰り返し実行する。これにより、それぞれのノード間において、サーバ候補告知メッセージを送受信する時間が確保される。
【０２１９】
このとき、他のノードに設定されている優先順位よりも、ノードＡに設定されている優先順位の方が高い場合、サーバ候補Ａの状態が状態管理部２２Ｂにより維持される。
【０２２０】
ステップＳ１５６において、状態管理部２２Ｂは、サーバ候補告知メッセージを送信してから所定時間が経過したと判定した場合、ステップＳ１５７に進み、ノードＡの状態を、正式サーバに遷移させる。
【０２２１】
正式サーバになったノードＡのメッセージ管理部２２Ａは、ステップＳ１５８において、図３０に示されるグループ告知メッセージをマルチキャスト送信し、処理を終了する。
【０２２２】
以上の処理が、サーバ候補Ａの状態を有するノードＢ、およびノードＣのそれぞれにおいて実行され、１つのサーバが決定される。
【０２２３】
次に、図３２のシーケンスを参照して、グループからクライアントが離脱する場合の処理について説明する。
【０２２４】
図３２においては、ノードＡが正式サーバであり、クライアントであるノードＣが離脱する処理について説明する。なお、図３２においては、ノードＢもクライアントである。
【０２２５】
ステップＳ１９１において、ノードＣのグループ管理機能部２２のメッセージ管理部２２Ａは、通信機能部２１を制御し、ノード離脱要求メッセージをノードＡに対して送信する。
【０２２６】
このメッセージには、送信先として、サーバ（ノードＡ）に送信することを表す所定のIDが記述される。従って、ノード離脱要求メッセージは、メッセージの領域７１に記述されるIDに基づいて、ノードＢには取得されない。
【０２２７】
ノードＣにより送信されたノード離脱要求メッセージは、ステップＳ１７１において、ノードＡにより受信される。
【０２２８】
ステップＳ１７２において、ノードＡのメッセージ管理部２２Ａは、ノード離脱承認メッセージをノードＣに対して返信し、ノードＡのリスト管理部２２Ｃは、ステップＳ１７３において、ノードリストを更新する。すなわち、ノードＡにより管理されるノードリストから、ノードＣに関する情報が削除される。
【０２２９】
ノードＡから送信されたノード離脱承認メッセージは、ステップＳ１９２において、ノードＣにより受信される。なお、ノード離脱承認メッセージには、送信先としてノードＣが指定されているため、マルチキャスト送信されたノード離脱承認メッセージは、ノードＢには取得されない。
【０２３０】
ステップＳ１７４において、ノードＡのメッセージ管理部２２Ａは、更新したノードリストを含むグループ告知メッセージを送信する。送信されたグループ告知メッセージは、ステップＳ１８１においてノードＢにより受信され、ステップＳ１９３においてノードＣにより受信される。
【０２３１】
これにより、ノードＣが、ノードＡにより管理されるグループから離脱した状態となる。
【０２３２】
図３３乃至図３６は、メッセージの例を示す図である。
【０２３３】
図３３は、図３２の処理によりノードＣがグループから離脱する前に、ノードＡから、ノードＢ、およびノードＣに対して送信されるグループ告知メッセージの例を示す図である。
【０２３４】
すなわち、領域７１には、送信先として「ALL」が記述され、領域７２には、送信元として「ノードＡ」が記述され、領域７３には、このメッセージがグループ告知メッセージであることを表すコマンド（例えば、「0x00」（図１２））が記述される。また、領域７４には、ノードＡが管理するグループのグループ名「グループＧ」と、ノードＡ乃至ノードＣに関する情報が含まれるノードリストが記述される。
【０２３５】
すなわち、図３３に示されるグループ告知メッセージのノードリストには、ノードＣに関する情報がまだ含まれている。
【０２３６】
図３４は、図３２のステップＳ１９１において、ノードＣからノードＡに対して送信されるノード離脱要求メッセージの例を示す図である。
【０２３７】
図に示されるように、メッセージの送信先として「ノードＡ」が領域７１に記述され、メッセージの送信元として「ノードＣ」が領域７２に記述される。また、領域７３には、このメッセージがノード離脱要求メッセージであることを表すコマンド（例えば、「0x06」（図１２））が記述され、領域７４には、送信データとして、ノードＣが離脱を希望するグループ名「グループＧ」と、自分自身の名前が記述される。
【０２３８】
図３５は、図３２のステップＳ１７２において、ノードＡからノードＣに対して送信されるノード離脱承認メッセージの例を示す図である。
【０２３９】
図に示されるように、メッセージの送信先として「ノードＣ」が領域７１に記述され、メッセージの送信元として「ノードＡ」が領域７２に記述される。また、領域７３には、このメッセージがノード離脱承認メッセージであることを表すコマンド（例えば、「0x07」（図１２））が記述され、領域７４には、送信データとして、グループ名「グループＧ」と、ノードＣの名前が記述される。
【０２４０】
図３６は、図３２のステップＳ１７４において、ノードＡからノードＢ、およびノードＣに対して送信されるグループ告知メッセージの例を示す図である。
【０２４１】
図に示されるように、メッセージの送信先として「ALL」が領域７１に記述され、メッセージの送信元として「ノードＡ」が領域７２に記述される。また、領域７３には、このメッセージがグループ告知メッセージであることを表すコマンドが記述され、領域７４には、ノードＡが管理するグループのグループ名「グループＧ」と、そのグループに属するノードの数「２」、および、「ノードＡ」、「ノードＢ」の順に、優先順位が設定されているノードリストが記述される。
【０２４２】
すなわち、ノードＣがグループから離脱した後に送信される図３６のグループ告知メッセージには、図３３のメッセージと比較して、ノードＣに関する情報がノードリストから削除されている。
【０２４３】
以上のようなメッセージが、図３２を参照して説明した処理、および、その前後において送受信される。
【０２４４】
次に、図３７のフローチャートを参照して、グループからの離脱を要求するノードＣの処理について説明する。
【０２４５】
ステップＳ２０１において、ノードＣのメッセージ管理部２２Ａは、グループから離脱することが状態管理部２２Ｂから通知されてくることに応じて、通信機能部２１を制御し、ノード離脱要求メッセージをノードＡに対して送信する。これにより、例えば、送信先としてノードＡが指定される図３４のメッセージがメッセージ管理部２２Ａにより生成され、送信される。
【０２４６】
ノードＣにより送信されたノード離脱要求メッセージは、ノードＡにより受信され、ノードＣの離脱を承認するか否かが判定される（図３８のステップＳ２１３）。ノードＣのグループからの離脱が承認された場合、ノードＡからノードＣに対して、ノード離脱承認メッセージが送信される（図３８のステップＳ２１５）。
【０２４７】
ステップＳ２０２において、ノードＣのメッセージ管理部２２Ａは、ノードＡからノード離脱承認メッセージが送信されてきたか否かを判定し、ノード離脱承認メッセージが送信されてきていないと判定した場合、ステップＳ２０３に進み、エラー処理を実行する。
【０２４８】
例えば、通信のエラーなどにより、ノード離脱承認メッセージが送信されてこない場合、そのことをユーザに提示するなどのエラー処理が実行される。その後、処理は終了される。このとき、ノードＣの状態は、参加（図５のState5）のままである。
【０２４９】
一方、ステップＳ２０２において、ノードＡから、ノード離脱承認メッセージが送信されてきたと判定した場合、メッセージ管理部２２Ａは、ステップＳ２０４に進み、それを受信する。
【０２５０】
メッセージ管理部２２Ａは、ステップＳ２０５において、ノードＡから送信されてくるグループ告知メッセージを受信し、リスト管理部２２Ｃに、管理するノードリストを更新させる。ノードＡから送信されてくるグループ告知メッセージは、例えば、図３６に示されるような、ノードＣに関する情報が含まれていないメッセージであり、これにより、グループから離脱した状態（図５のState7）となる。
【０２５１】
次に、図３８のフローチャートを参照して、図３７の処理に対応してノードＡにより実行される処理について説明する。図３８に示される処理は、基本的には、図３２を参照して説明したノードＡの処理と同様である。
【０２５２】
ステップＳ２１１において、ノードＡのグループ管理機能部２２のメッセージ管理部２２Ａは、ノード離脱要求メッセージがノードＣから送信されてきたか否かを判定し、送信されてきたと判定するまで待機する。
【０２５３】
メッセージ管理部２２Ａは、ステップＳ２１１において、ノード離脱要求メッセージが送信されてきたと判定した場合、ステップＳ２１２に進み、それを受信する。
【０２５４】
ステップＳ２１３において、メッセージ管理部２２Ａは、ノードＣの離脱を承認するか否かを判定し、承認しないと判定した場合、ステップＳ２１４に進み、所定のエラー処理を実行した後、処理を終了する。なお、クライアントにより、グループからの離脱が要求された場合、それが必ず承認されるようにしてもよい。
【０２５５】
メッセージ管理部２２Ａは、ステップＳ２１３において、グループからの離脱を承認すると判定した場合、ステップＳ２１５に進み、図３５に示されるノード離脱承認メッセージをノードＣに対して送信する。
【０２５６】
ステップＳ２１６において、リスト管理部２２Ｃは、グループ内でのノードＣの優先順位等をノードリストから削除し、更新する。
【０２５７】
ステップＳ２１６で更新されたノードリストを含むグループ告知メッセージは、ステップＳ２２７において、ノードＡから、ノードＢ、およびノードＣに対して送信される。
【０２５８】
なお、離脱が承認されたノードＣに対して、ノード離脱承認メッセージが送信されるとしたが、ノード離脱承認メッセージに代えて、ノードＣの情報が削除されたノードリストを含むグループ告知メッセージが送信されるようにしてもよい。ノードＣの情報が削除されたノードリストを含むグループ告知メッセージの内容によっても、ノードＣは、グループからの離脱が承認されたことを確認することができる。
【０２５９】
以上においては、クライアントがグループから離脱する場合の処理について説明したが、次に、サーバが離脱する場合の処理について説明する。
【０２６０】
サーバの離脱には、サーバが離脱する旨を他のノードに通知し、明示的にグループから離脱する場合と、他のノードに離脱する旨を通知することなく、非明示的に離脱する場合とがある。
【０２６１】
始めに、図３９のシーケンスを参照して、グループから明示的にサーバが離脱する場合の処理について説明する。図３９においては、ノードＡがグループから離脱するサーバであり、ノードＢ、およびノードＣがクライアントである。
【０２６２】
例えば、グループ管理機能部２２の状態管理部２２Ｂから、ユーザがグループからの離脱を要求していることが通知されてきたとき、ステップＳ２４１において、ノードＡのメッセージ管理部２２Ａは、通信機能部２１を制御し、サーバ離脱要求メッセージをノードＢ、およびノードＣに対して送信（マルチキャスト送信）する。
【０２６３】
送信されたサーバ離脱要求メッセージは、ステップＳ２５１においてノードＢにより受信され、ステップＳ２６１においてノードＣにより受信される。
【０２６４】
サーバ離脱要求メッセージを受信したノードＢ、およびノードＣの状態管理部２２Ｂは、それまでの参加状態（図５のState5）から、サーバ候補Ｂの状態（State6）に自らの状態を遷移させ、サーバ候補告知メッセージを送信する。
【０２６５】
すなわち、ステップＳ２５２において、ノードＢのメッセージ管理部２２Ａは、ノードＢがサーバ候補であることを他のノードに通知するサーバ候補告知メッセージを送信する。
【０２６６】
ノードＢから送信されたサーバ候補告知メッセージは、ステップＳ２４２においてノードＡにより受信され、ステップＳ２６２においてノードＣにより受信される。
【０２６７】
同様に、ステップＳ２６３において、ノードＣのメッセージ管理部２２Ａは、ノードＣがサーバ候補であることを他のノードに通知するサーバ候補告知メッセージを送信する。
【０２６８】
ノードＣから送信されたサーバ候補告知メッセージは、ステップＳ２４３においてノードＡにより受信され、ステップＳ２５３においてノードＢにより受信される。
【０２６９】
ノードＢ、およびノードＣから送信されてきたサーバ候補告知メッセージは、ノードＡのメッセージ管理部２２Ａにより受信され、リスト管理部２２Ｃに出力される。リスト管理部２２Ｃは、ステップＳ２４４において、メッセージに含まれるノードＢ、およびノードＣの優先順位に基づいて、新たなサーバを選択する。
【０２７０】
上述したように、サーバ候補告知メッセージには、それを送信するノードに設定されている優先順位が含まれている。
【０２７１】
サーバとして新たに動作するノードとして、例えば、ノードＢを選択したノードＡは、ステップＳ２４５において、サーバ移動通知メッセージをノードＢ、およびノードＣに対して送信する。このサーバ移動通知メッセージには、ノードＢに対して、最も高い優先順位が設定されたノードリストが含まれている。
【０２７２】
ノードＡから送信されたサーバ移動通知メッセージは、ステップＳ２５４においてノードＢにより受信され、ステップＳ２６４においてノードＣにより受信される。
【０２７３】
ノードＡにより、新たな正式サーバとして選択されたノードＢの状態管理部２２Ｂは、その状態を、サーバ候補Ｂ（図５のState6）から正式サーバ（State4）に遷移させ、グループの管理を開始する。すなわち、ステップＳ２５５において、ノードＢは、ノードＡ、およびノードＣに対して、更新されたノードリストを含むグループ告知メッセージを送信する。
【０２７４】
送信されたグループ告知メッセージは、ステップＳ２４６において、ノードＡにより受信され、ステップＳ２６５において、ノードＣにより受信される。
【０２７５】
新たなサーバを選択したノードＡの状態管理部２２Ｂは、その後、自分自身の状態を正式サーバ（図５のState4）から離脱状態（State7）に遷移させ、グループから離脱する。
【０２７６】
なお、新たなサーバとして選択されなかったノードＣの状態管理部２２Ｂは、自分自身の状態を、サーバ候補Ｂ（図５のState6）から参加（State5）に遷移させ、クライアントとして、ノードＢが新たに管理することになったグループに参加する。
【０２７７】
図４０乃至図４５は、メッセージの例を示す図である。
【０２７８】
図４０は、図３９の処理により、ノードＡがグループから離脱する前に、ノードＡから、ノードＢ、およびノードＣに対して送信されるグループ告知メッセージの例を示す図である。
【０２７９】
領域７４に記述されるノードリストには、正式サーバであるノードＡが管理するグループに属するノードの数「３」、および、「ノードＡ」、「ノードＢ」、「ノードＣ」の順に設定されている優先順位が記述される。
【０２８０】
すなわち、図４０に示されるグループ告知メッセージには、ノードＡに関する情報がまだ含まれており、ノードＡに対して最も高い優先順位が設定されている。
【０２８１】
図４１は、図３９のステップＳ２４１において、ノードＡから、ノードＢ、およびノードＣに対して送信されるサーバ離脱要求メッセージの例を示す図である。
【０２８２】
図に示されるように、メッセージの送信先として「ALL」が領域７１に記述され、メッセージの送信元として「ノードＡ」が領域７２に記述される。また、領域７３には、このメッセージがサーバ離脱要求メッセージであることを表すコマンド（例えば、「0x02」（図１２））が記述され、領域７４には、送信データとして、ノードＡが離脱を希望するグループ名「グループＧ」と、自分自身の名前が記述される。
【０２８３】
図４２は、図３９のステップＳ２５２において、ノードＢから、ノードＡ、およびノードＣに対して送信されるサーバ候補告知メッセージの例を示す図である。
【０２８４】
図に示されるように、メッセージの送信先として「ALL」が領域７１に記述され、メッセージの送信元として「ノードＢ」が領域７２に記述される。また、領域７３には、このメッセージがサーバ候補告知メッセージであることを表すコマンド（例えば、「0x01」（図１２））が記述され、領域７４には、ノードＢに設定されている優先順位「１」が記述される。
【０２８５】
図４３は、図３９のステップＳ２６３において、ノードＣから、ノードＡ、およびノードＢに対して送信されるグループ告知メッセージの例を示す図であり、図４２のメッセージと基本的に同様である。
【０２８６】
なお、図４３に示されるグループ告知メッセージには、メッセージの送信元として「ノードＣ」が領域７２に記述され、領域７４には、ノードＣに設定されている優先順位「２」が記述される。
【０２８７】
例えば、図４２および図４３に示されるグループ告知メッセージを受信した場合、ノードＡは、それぞれのメッセージに記述されている優先順位に基づいて、より優先順位の高いノードＢを、新たなサーバとして選択する。
【０２８８】
図４４は、図３９のステップＳ２４５において、ノードＡから、ノードＢ、およびノードＣに対して送信されるサーバ移動通知メッセージの例を示す図である。
【０２８９】
図に示されるように、メッセージの送信先として「ALL」が領域７１に記述され、メッセージの送信元として「ノードＡ」が領域７２に記述される。また、領域７３には、このメッセージがサーバ移動通知メッセージであることを表すコマンド（例えば、「0x03」（図１２））が記述され、領域７４には、グループ名と、新たにサーバとして選択されたノードを表す「ノードＢ」が記述される。
【０２９０】
図４５は、図３９のステップＳ２５５において、ノードＢから、ノードＡ、およびノードＣに対して送信されるグループ告知メッセージの例を示す図である。
【０２９１】
図に示されるように、メッセージの送信先として「ALL」が領域７１に記述され、メッセージの送信元として「ノードＢ」が領域７２に記述される。また、領域７３には、このメッセージがグループ告知メッセージであることを表すコマンドが記述され、領域７４には、ノードＡが管理するグループのグループ名「グループＧ」と、そのグループに属するノードの数「２」、および、「ノードＢ」、「ノードＣ」の順に、優先順位が設定されているノードリストが記述される。
【０２９２】
すなわち、新たにサーバとして選択されたノードＢから送信される図４５のグループ告知メッセージには、図４０のメッセージと比較して、ノードＡに関する情報がノードリストから削除されているとともに、ノードＢがサーバであることを表す情報が含まれている。
【０２９３】
以上のようなメッセージが、図３９を参照して説明した処理、および、その前後において送受信される。
【０２９４】
次に、図４６のフローチャートを参照して、グループから明示的に離脱するノードＡ（正式サーバ）の処理について説明する。図４６に示される処理は、基本的には、図３９を参照して説明したノードＡの処理と同様である。
【０２９５】
ステップＳ２８１において、ノードＡのメッセージ管理部２２Ａは、通信機能部２１を制御し、例えば、図４１に示されるサーバ離脱要求メッセージを、ノードＢ、およびノードＣに対して送信（マルチキャスト送信）する。
【０２９６】
サーバから送信されたサーバ離脱要求メッセージは、ノードＢ、およびノードＣにより受信され、サーバ候補Ｂに状態を遷移させたノードＢ、およびノードＣから、サーバ候補告知メッセージが送信されてくる。
【０２９７】
ステップＳ２８２において、ノードＡのメッセージ管理部２２Ａは、サーバ候補告知メッセージが送信されてきたか否かを判定し、送信されてきたと判定した場合、ステップＳ２８３に進み、それを受信する。
【０２９８】
ステップＳ２８２において、サーバ候補告知メッセージが送信されてきていないと判定された場合、ステップＳ２８３の処理はスキップされる。
【０２９９】
ステップＳ２８４において、メッセージ管理部２２Ａは、サーバ離脱要求メッセージを送信してから、所定時間経過したか否かを判定し、経過していないと判定した場合、ステップＳ２８２に戻り、それ以降の処理を繰り返し実行する。これにより、サーバ離脱要求メッセージを受信したノードＢ、およびノードＣにより、サーバ候補告知メッセージが送信される時間が確保される。
【０３００】
メッセージ管理部２２Ａは、ステップＳ２８４において、サーバ離脱要求メッセージを送信してから、所定時間が経過したと判定した場合、ステップＳ２８５に進む。メッセージ管理部２２Ａにより受信された、サーバ候補告知メッセージは、リスト管理部２２Ｃに出力される。
【０３０１】
ステップＳ２８５において、リスト管理部２２Ｃは、ノードＢ、およびノードＣから送信されてきたサーバ候補告知メッセージに含まれる優先順位に基づいて、新たなサーバを選択する。なお、サーバ候補Ｂのノードがグループ内に存在しないため（グループ内にノードＡしか存在しないため）、サーバ候補告知メッセージが送信されてきていない場合、処理は終了される。
【０３０２】
リスト管理部２２Ｃは、サーバとして新たに動作するノードを選択したとき、それをメッセージ管理部２２Ａに通知する。
【０３０３】
ステップＳ２８６において、メッセージ管理部２２Ａは、リスト管理部２２Ｃからの通知に基づいて生成したサーバ移動通知メッセージを、ノードＢ、およびノードＣに対して送信する。このサーバ移動通知メッセージには、サーバとして新たに選択されたノードに対して、最も高い優先順位が設定されたノードリストが含まれている。
【０３０４】
その後、新たに正式サーバになったノードから、グループ告知メッセージが送信されてくるため、メッセージ管理部２２Ａは、ステップＳ２８７において、それを受信し、グループからの離脱処理を終了させる。
【０３０５】
これにより、ノードＡは、それまで自ら管理していたグループから離脱した状態となる。
【０３０６】
次に、図４７のフローチャートを参照して、図４６の処理に対応して実行されるノードＢの処理について説明する。
【０３０７】
ステップＳ３０１において、ノードＢのメッセージ管理部２２Ａは、通信機能部２１を制御し、グループからの離脱を要求するサーバ（ノードＡ）から送信されてきたサーバ離脱要求メッセージを受信する。
【０３０８】
状態管理部２２Ｂは、ステップＳ３０２において、それまでクライアントとしてグループに参加していた状態（図５のState5）から、サーバ候補Ｂの状態（State6）にノードＢの状態を遷移させる。
【０３０９】
ステップＳ３０３において、メッセージ管理部２２Ａは、サーバ候補告知メッセージを、ノードＡ、およびノードＣに対して送信する。
【０３１０】
ノードＢから送信されたサーバ候補告知メッセージは、ノードＡ、およびノードＣにより受信される。ノードＡにおいては、メッセージに含まれる優先順位に基づいて、ノードＢがサーバとして新たに動作するか否かが選択され、それを通知するサーバ移動メッセージが送信される（図４６のステップＳ２８５，Ｓ２８６）。
【０３１１】
ステップＳ３０４において、ノードＢのメッセージ管理部２２Ａは、ノードＡから送信されてきたサーバ移動メッセージを受信し、それを状態管理部２２Ｂに出力する。
【０３１２】
ステップＳ３０５において、状態管理部２２Ｂは、サーバ移動メッセージに含まれるノードリストに基づいて、ノードＢが正式サーバとして選択されたか否かを判定する。サーバ移動メッセージに含まれるノードリストには、サーバとして選択されたノードに対して、最も高い優先順位が割り当てられている。
【０３１３】
従って、状態管理部２２Ｂは、自分自身のノードに対して、最も高い優先順位が割り当てられていないため、サーバとして選択されていない（クライアントとして選択された）と判定した場合、ステップＳ３０６に進み、ノードＢの状態を、サーバ候補Ｂ（図５のState6）から参加（State5）に遷移させ、クライアントとしてグループに参加する。
【０３１４】
一方、ステップＳ３０５において、正式サーバとして選択されたと判定した場合、ステップＳ３０７に進み、状態管理部２２Ｂは、ノードＢの状態を、サーバ候補Ｂ（図５のState6）から正式サーバ（State4）に遷移させ、グループの管理を開始する。
【０３１５】
すなわち、ステップＳ３０８において、メッセージ管理部２２Ａは、ノードＡ、およびノードＣに対して、グループ告知メッセージを送信し、ノードＡの離脱処理を終了させる。
【０３１６】
グループからサーバが離脱する場合であっても、以上の処理により、新たにサーバとして動作するノードを効率的に、かつ、確実に選択することができる。すなわち、ネットワーク構成の変化に、より好適に対応することができる。
【０３１７】
次に、図４８のシーケンスを参照して、サーバが、非明示的にグループから離脱した場合の処理について説明する。
【０３１８】
非明示的なサーバの離脱は、例えば、サーバとして動作するノードが、他のノードとの通信可能範囲から出たときなどに発生する。
【０３１９】
なお、図４８においては、サーバとして動作していたノードＸが、非明示的にグループから離脱した場合の処理について説明する。また、ノードＸによりそれまで管理されていたグループには、ノードＡ乃至ノードＣがクライアントとして参加していたものとする。
【０３２０】
サーバ（ノードＸ）が非明示的にグループから離脱したことを検出したクライアント（ノードＡ乃至ノードＣ）により実行される処理は、図２６の正式サーバの調停処理と同様の処理である。
【０３２１】
例えば、サーバから送信されてくるグループ告知メッセージが送信されてこなくなったため、サーバが離脱したと判断したノードＡ乃至ノードＣは、その状態を、参加（図５のState5）からサーバ候補Ｂ（State6）に遷移させ、自分自身がサーバ候補であることを他のノードに通知するためのサーバ候補告知メッセージを送信する。
【０３２２】
すなわち、サーバ候補Ｂの状態を有するノードＡから、ステップＳ３２１において送信されたサーバ候補告知メッセージは、ステップＳ３４１においてノードＢにより受信され、ステップＳ３６１においてノードＣにより受信される。
【０３２３】
また、サーバ候補Ｂの状態を有するノードＢから、ステップＳ３４２において送信されたサーバ候補告知メッセージは、ステップＳ３２２においてノードＡにより受信され、ステップＳ３６２においてノードＣにより受信される。
【０３２４】
さらに、サーバ候補Ｂの状態を有するノードＣから、ステップＳ３６３において送信されたサーバ候補告知メッセージは、ステップＳ３２３においてノードＡにより受信され、ステップＳ３４３においてノードＢにより受信される。
【０３２５】
送信されてきたサーバ候補告知メッセージを受信したノードＡ乃至ノードＣは、ステップＳ３２４，Ｓ３４４，Ｓ３６４において、それぞれ、メッセージに含まれている優先順位に基づいて、サーバ調停を行い、最も高い優先順位が設定されているノードを、新たなサーバとして決定する。
【０３２６】
例えば、ノードＡに対して最も高い優先順位が設定されている場合、ノードＡは、その状態をサーバ候補Ｂ（図５のState6）から正式サーバ（State4）に遷移させ、ステップＳ３２５において、ノードＡの情報のみが記述されたノードリストを含むサーバ移動通知メッセージを、ノードＢ、およびノードＣに対して送信する。
【０３２７】
ノードＡから送信されたサーバ移動通知メッセージは、ステップＳ３４５においてノードＢにより受信され、ステップＳ３６５においてノードＣにより受信される。
【０３２８】
その後、ノードＡによりグループの管理が開始され、ステップＳ３２６において送信されたグループ告知メッセージが、ステップＳ３４６においてノードＢにより受信され、ステップＳ３６６においてノードＣにより受信される。ステップＳ３２６において送信されたグループ告知メッセージには、ノードＡ乃至ノードＣの情報が記述されたノードリストが含まれている。
【０３２９】
以上のように、各クライアント間でサーバ候補告知メッセージが送受信され、優先順位に基づいて、新たなサーバが決定されることにより、サーバが非明示的にグループから離脱した場合であっても、サーバ・クライアント間のサービスの提供が継続されることになる。
【０３３０】
図４９乃至図５３は、メッセージの例を示す図である。
【０３３１】
図４９は、図４８の処理が実行される前に、ノードＸから、ノードＸが管理するグループに参加しているノードＡ乃至ノードＣに対して送信されるグループ告知メッセージの例を示す図である。
【０３３２】
領域７４に記述されるノードリストには、正式サーバであるノードＸが管理するグループに属するノードの数「４」、および、「ノードＸ」、「ノードＡ」、「ノードＢ」、「ノードＣ」の順に設定されている優先順位が記述される。
【０３３３】
すなわち、図４９に示されるグループ告知メッセージには、非明示的にグループから離脱するノードＸに関する情報がまだ含まれている。
【０３３４】
図５０は、図４８のステップＳ３２１において、ノードＡから、ノードＢ、およびノードＣに対して送信されるサーバ候補告知メッセージの例を示す図である。図５０に示されるサーバ候補告知メッセージは、図４２、または図４３に示されるサーバ候補告知メッセージと同様である。
【０３３５】
すなわち、領域７２には、メッセージの送信元として「ノードＡ」が記述され、領域７４には、サーバ候補Ｂの状態を有するノードＡに設定されている優先順位「１」が記述される。
【０３３６】
図５１は、図４８のステップＳ３４２において、ノードＢから、ノードＡ、およびノードＣに対して送信されるサーバ候補告知メッセージの例を示す図である。
【０３３７】
領域７２には、メッセージの送信元として「ノードＢ」が記述され、領域７４には、サーバ候補Ｂの状態を有するノードＢに設定されている優先順位「２」が記述される。
【０３３８】
図５２は、図４８のステップＳ３６３において、ノードＣから、ノードＡ、およびノードＢに対して送信されるサーバ候補告知メッセージの例を示す図である。
【０３３９】
領域７２には、メッセージの送信元として「ノードＣ」が記述され、領域７４には、サーバ候補Ｂの状態を有するノードＣに設定されている優先順位「３」が記述される。
【０３４０】
従って、ノードＡ乃至ノードＣにより、図５０乃至図５２のサーバ候補告知メッセージが送受信された場合、最も高い優先順位が設定されているノードＡが、新たなサーバとして決定される。
【０３４１】
図５３は、図４８のステップＳ３２６において、ノードＡから、ノードＢ、およびノードＣに対して送信されるグループ告知メッセージの例を示す図であり、このメッセージは、例えば、図４０のメッセージと同様のものである。
【０３４２】
すなわち、新たにサーバとして選択されたノードＡに対して最も高い優先順位が割り当てられたノードリストを含むグループ告知メッセージが、ノードＢ、およびノードＣに対して送信される。
【０３４３】
非明示的にサーバがグループから離脱した場合の各ノードの処理は、新たにサーバとして決定されたノードから、サーバ移動通知メッセージが送信される点を除いて、図３１を参照して説明した処理と同様であるため、その説明は省略する。
【０３４４】
以上の各ノードの処理により、非明示的にサーバが離脱した場合であっても、効率的に、かつ、確実に、新たにサーバとして動作するノードを選択することが可能となる。
【０３４５】
図５４は、図１のノードＡ（ノード１）の他の機能構成例を示すブロック図である。図４と同一の部分には、同一の符号が付されている。
【０３４６】
サーバ同期機能部８１は、通信制御部２１と協働し、サーバ機能部２３に対して、サーバ機能部２３が、「全てのクライアントへのメッセージの送信」、「特定のクライアントへのメッセージの送信」、「クライアントからのメッセージの受信」のそれぞれを行うためのインタフェースを提供する。また、サーバ同期機能部８１は、クライアント機能部２４に対して、クライアント機能部２４が、「サーバへのメッセージの送信」、「サーバからのメッセージの受信」のそれぞれを行うためのインタフェースを提供する。
【０３４７】
なお、サーバ同期機能部８１は、例えば、ノードＡがクライアントとして動作しており、サーバがグループから離脱するなどしてサーバの交代が生じた場合であっても、クライアント機能部２４にサーバの交代を意識させることなく、サーバとの間で通信（サーバ・クライアント間のアプリケーション層でのメッセージ交換）を行わせる機能を有する。
【０３４８】
図５５のシーケンスを参照して、サーバから、クライアントに対してメッセージ（データ）が送信される場合の処理について説明する。
【０３４９】
図５５においては、ノードＡが正式サーバであり、ノードＢがクライアントである。なお、図示は省略するが、ノードＣにおいても、ノードＢと同様の処理が行われる。
【０３５０】
正式サーバとして動作するノードＡのサーバ機能部２３が、サービスを受けるクライアントとして動作するノードＢのクライアント機能部２４に対して、所定のデータを送信するとき、ステップＳ４１１において、サーバ機能部２３は、サーバ同期機能部８１に対して、クライアントへのデータの送信を要求する。
【０３５１】
図５６は、サーバ機能部２３から、サーバ同期機能部８１（通信機能部２１）に対するデータの送信要求において用いられるAPI(Application Programming Interface)の例を示す図である。
【０３５２】
図５６に示す「public void sendDataToClient(byte[] DATA)」インタフェースは、所定のバイト数からなるデータ（クライアントに対して送信するデータ）を引数として与える。
【０３５３】
この要求をステップＳ４２１において受信したサーバ同期機能部８１は、ノードリストの情報に基づいて、ノードＡが正式サーバであるのか否かを確認し、サーバである場合には、ステップＳ４２２に進み、要求されたデータをグループ上のクライアント機能部２４に対してマルチキャスト送信する。
【０３５４】
図５７は、ステップＳ４２２において送信されるデータの例を示す図である。
【０３５５】
サーバ同期機能部８１により送信されるデータは、上述した各種のメッセージと同様のフォーマットを有しており、領域７１には、送信先のノードを表す「ALL」が記述され、領域７２には、送信元のノードを表す「ノードＡ」が記述される。また、領域７３には、このデータが、全てのノードのクライアント機能部２４に対して送信されるものであることを表す、予め設定された所定のID（クライアントID）が記述され、領域７４には、グループ名「グループＧ」と、送信データが記述される。
【０３５６】
サーバ同期機能部８１により送信されたデータは、ステップＳ４０１においてノードＡのクライアント機能部２４により受信され、ステップＳ４３１において、ノードＢのサーバ同期機能部８１により受信される。
【０３５７】
ノードＢのサーバ同期機能部８１は、ステップＳ４３２において、ノードＡのサーバ同期機能部８１から送信されてきたデータを、クライアント機能部２４（ノードＢのクライアント機能部２４）に転送する。
【０３５８】
図５８は、ノードＢのサーバ同期機能部８１（通信機能部２１）から、クライアント機能部２４に対するデータの転送において用いられるAPIの例を示す図である。
【０３５９】
図５８に示す「public void receiveDataFromServer(byte[] DATA)」インタフェースは、所定のバイト数からなるデータ（サーバから送信されてきたデータ）を引数として与える。
【０３６０】
ノードＡのクライアント機能部２４は、ステップＳ４４１において、サーバ同期機能部８１から転送されてきたデータを受信し、サーバから送信されてきたデータを取得する。その後、処理は終了される。
【０３６１】
以上のように、サーバノードのサーバ機能部２３と、クライアントノードのクライアント機能部２４の間で直接データが送受信されるのではなく、それぞれのサーバ同期機能部８１を介して、データの送受信が行われる。
【０３６２】
次に、図５９のシーケンスを参照して、クライアントから、サーバに対してメッセージ（データ）が送信される場合の処理について説明する。
【０３６３】
図５９においては、ノードＡがクライアントであり、ノードＢが正式サーバである。なお、図示は省略するが、ノードＣにおいても、ノードＡと同様の処理が適宜行われる。
【０３６４】
クライアントとして動作するノードＡのクライアント機能部２４が、サービスを提供するサーバとして動作するノードＢのサーバ機能部２３に対して、所定のデータを送信するとき、ステップＳ４５１において、クライアント機能部２４は、サーバ同期機能部８１に対して、サーバへのデータの送信を要求する。
【０３６５】
図６０は、クライアント機能部２４から、サーバ同期機能部８１（通信機能部２１）に対するデータの送信要求において用いられるAPIの例を示す図である。
【０３６６】
図６０に示す「public void sendDataToServer(byte[] DATA)」インタフェースは、所定のバイト数からなるデータ（サーバに対して送信するデータ）を引数として与える。
【０３６７】
この要求をステップＳ４６１において受信したサーバ同期機能部８１は、所定のメッセージを送信するなどしてサーバが存在するか否か（調停が行われている最中か否か）を確認し、サーバが存在する場合には、ステップＳ４６２に進み、要求されたデータを、ノードＢのサーバ同期機能部８１に対して送信する。
【０３６８】
図６１は、ステップＳ４６２において送信されるデータの例を示す図である。
【０３６９】
領域７１には、送信先のノードを表す「ALL」が記述され、領域７２には、送信元のノードを表す「ノードＡ」が記述される。領域７３には、このデータが、サーバのサーバ機能部２３に対して送信されるものであることを表す、予め設定された所定のID（サーバID）が記述され、領域７４には、グループ名「グループＧ」と、送信データが記述される。
【０３７０】
なお、サーバに対するデータの送信が要求されときに、グループ内にサーバが存在しないと判断した場合、サーバ同期機能部８１は、新たにサーバとして動作するノードが決定されるまで待機し、サーバとして動作するノードが調停により決定されたとき、データの送信を行う。
【０３７１】
これにより、サーバが存在しない状態を意識させることのないインタフェースが、サーバ同期機能部８１からクライアント機能部２４に対して提供されることになる。
【０３７２】
すなわち、仮に、クライアントノードのクライアント機能部２４から、サーバノードのサーバ機能部２３に対してデータが直接送信されるとした場合、グループ内にサーバが存在しないときには、クライアント機能部２４は、新たなサーバが決定されるまで待機するなどのリカバリ処理を行わなければならないが、そのリカバリ処理が、サーバ同期機能部８１により代理的に実行される。
【０３７３】
サーバ同期機能部８１により送信されたデータは、ステップＳ４７１において、ノードＢのサーバ同期機能部８１により受信される。
【０３７４】
ノードＢのサーバ同期機能部８１は、ステップＳ４７２において、ノードＡのサーバ同期機能部８１から送信されてきたデータを、クライアント機能部２４（ノードＢのクライアント機能部２４）に転送する。
【０３７５】
図６２は、ノードＢのサーバ同期機能部８１（通信機能部２１）から、クライアント機能部２４に対するデータの転送において用いられるAPIの例を示す図である。
【０３７６】
図６２に示す「public void receiveDataFromClient(int clientID, byte[] DATA)」インタフェースは、データを送信したクライアントを識別するclientID と、所定のバイト数からなるデータ（クライアントから送信されてきたデータ）を引数として与える。
【０３７７】
ノードＢのクライアント機能部２４は、ステップＳ４８１において、サーバ同期機能部８１から転送されてきたデータを受信し、処理を終了させる。
【０３７８】
以上の処理により、クライアント機能部２３からサーバ機能部２４に対するデータの送信が行われる。
【０３７９】
なお、上述したようなインタフェースを提供するサーバ同期機能部８１に、正式サーバでないクライアント上において、正式サーバと同じ状態を常時保持させておくようにすることもできる。
【０３８０】
この場合、例えば、サーバとして動作するノードＡのサーバ同期機能部８１は、サーバ機能部２３の内部状態を読み出し、読み出した内部状態を表す情報（サーバのサーバ機能部２３の情報）を、全てのノード（ノードＢ、およびノードＣ）のサーバ同期機能部８１に対して送信する。
【０３８１】
サーバ機能部２３の内部状態を表す情報の送信は、例えば、サーバ機能部２３の内部状態が変更されたとき、または、所定の時間が経過したときなどの所定のタイミングで行われる。
【０３８２】
ノードＢ、およびノードＣのサーバ同期機能部８１は、送信されてきた情報に基づいて、ノードＡのサーバ機能部２３の内部状態を、自分自身のノードのサーバ機能部２３の状態として設定することにより、クライアントであるノード上に、正式サーバと同一の機能を実現させる。
【０３８３】
以上の処理が、正式サーバとして動作するノードのサーバ同期機能部８１、および、クライアントとして動作するノードのサーバ同期機能部８１の双方において繰り返し実行されることにより、クライアントのノードにおいても、正式サーバと同じ状態を持つサーバが常時実現されることになる。
【０３８４】
なお、サーバ同期機能部８１により送信されるサーバ機能部２３の内部状態を表す情報は、例えば、既に送信されている情報との差分のみが送信されるようにしてもよい。これにより、その都度、サーバ機能部２３の全ての内部状態を表す情報を送信する場合に較べて、通信量を減らすことが可能となる。
【０３８５】
また、通信量の削減をより可能とすべく、サーバの内部状態を表す情報を、ハッシュ関数に適用することで得られた結果のみが送信されるようにしてもよい。
【０３８６】
この場合、ハッシュ関数の算出結果を受信したノードは、受信した算出結果と、自分自身のノードの内部状態を表す情報を、予め用意されているハッシュ関数に適用することで得られた算出結果を比較し、それらの結果が一致しない場合にのみ、サーバのサーバ同期機能部８１に対して、内部状態を表す情報の送信を要求する。すなわち、受信した算出結果と、自分自身のノードの内部状態を表す情報を、予め用意されているハッシュ関数に適用することで得られた算出結果が一致しない場合、サーバの内部状態と、クライアントの内部状態が異なることを表している。
【０３８７】
図６３は、上述したグループ管理機能部２２により実行される、グループ管理処理について説明するフローチャートである。
【０３８８】
例えば、初期状態（図５のState1）であるノードＡのグループ管理機能部２２は、ステップＳ５０１において、ユーザからの入力に基づいて、処理を終了することが指示されたか否かを判定する。
【０３８９】
グループ管理機能部２２は、ユーザにより電源のオフが指示されたため、ステップＳ５０１において、処理を終了させると判定した場合、ステップＳ５０２に進み、全ての既知のグループに属している他のノードとの間で、離脱処理を実行する。
【０３９０】
例えば、後述する処理により、所定のグループにノードＡがクライアントとして既に参加しているとき、ステップＳ５０２においては、他のノードとの間で、図３２を参照して説明した離脱処理が実行される。また、ノードＡがサーバとしてグループを管理している場合、他のノードとの間で、図３９を参照して説明した離脱処理が実行される。その後、グループ管理機能部２２による管理処理は終了される。
【０３９１】
ステップＳ５０１において、グループ管理機能部２２は、処理を終了しないと判定した場合、ステップＳ５０３に進み、グループ告知メッセージやサーバ候補告知メッセージ等の、所定のメッセージが送信されてきたか否かを判定する。
【０３９２】
グループ管理機能部２２は、ステップＳ５０３において、所定のメッセージが送信されてきていないと判定した場合、ステップＳ５０１に戻り、それ以降の処理を実行し、一方、所定のメッセージが送信されてきたと判定した場合、ステップＳ５０４に進む。
【０３９３】
ステップＳ５０４において、グループ管理機能部２２は、送信されてきたメッセージは、既知のグループに属するノードから送信されてきたものであるか否かを判定し、既知のグループに属するノードから送信されてきたものであると判定した場合、ステップＳ５０５に進み、ノードＡの状態に応じて、所定の処理を実行する。
【０３９４】
ステップＳ５０５においては、送信されてきたグループ告知メッセージを受信する処理、グループに参加する処理、または、サーバからの離脱要求に応じて行われる処理等の、上述した各種の処理が実行される。その後、処理はステップＳ５０１に戻り、以上の処理が繰り返し実行される。
【０３９５】
ステップＳ５０４において、送信されてきたメッセージが、既知のグループに属するノードから送信されてきたものでないと判定した場合、グループ管理機能部２２は、ステップＳ５０６に進み、次に、送信されてきたメッセージが、グループ告知メッセージであるか否かを判定する。
【０３９６】
グループ管理機能部２２は、ステップＳ５０６において、送信されてきたメッセージがグループ告知メッセージであると判定した場合、ステップＳ５０７に進む。
【０３９７】
ステップＳ５０７において、グループ管理機能部２２は、グループ管理テーブル（図８）に、グループ告知メッセージを送信してきたサーバが管理するグループの情報を追加し、自分自身の状態を初期状態とする（初期状態を維持する）。
【０３９８】
ステップＳ５０７の処理が行われた後、および、ステップＳ５０６において、送信されてきたメッセージがグループ告知メッセージでないと判定された場合、ステップＳ５０１に戻り、それ以降の処理が繰り返し実行される。
【０３９９】
図６４は、グループに参加しているノードＡのグループ管理機能部２２により所定の周期で実行される処理を説明するフローチャートである。
【０４００】
ステップＳ５１１において、グループ管理機能部２２は、グループに参加してから所定時間が経過したか否かを判定し、所定時間が経過したと判定するまで待機する。
【０４０１】
グループ管理機能部２２は、ステップＳ５１１において、所定時間が経過したと判定した場合、ステップＳ５１２に進み、自ら管理している、図示せぬメモリ等に保持されているノードリストを取得する。
【０４０２】
ステップＳ５１３において、グループ管理機能部２２は、所定の変数ｉに「０」を設定し、ステップＳ５１４に進み、変数ｉの値が、ノードリストに記述されているグループの数よりも小さいか否か（ステップＳ５１３の処理を経た場合、所定のグループの情報がノードリストに記述されているか否か）、すなわち、ノードリストに記述されている全てのグループについて、ステップＳ５１５以降の処理を行ったか否かを判定する。
【０４０３】
ステップＳ５１４において、変数ｉの値が、ノードリストに記述されているグループの数よりも大きいと判定した場合、グループ管理機能部２２は、ステップＳ５１１に戻り、それ以降の処理を繰り返し実行する。
【０４０４】
一方、グループ管理機能部２２は、ステップＳ５１４において、変数ｉの値が、ノードリストに記述されているグループの数よりも小さいと判定した場合、ステップＳ５１５に進み、変数ｉに対応するグループにおいて、ノードＡの状態が正式サーバであるか否かを判定する。
【０４０５】
後述するように、所定のタイミングで変数ｉが１ずつインクリメントされるため、変数ｉ＝０に対応するグループにおけるノードＡの状態、変数ｉ＝１に対応するグループにおけるノードＡの状態、変数ｉ＝２に対応するグループにおけるノードＡの状態、・・・といったように、それぞれのグループにおけるノードＡの状態が順次判定される。
【０４０６】
グループ管理機能部２２は、ノードＡの状態が正式サーバであると判定した場合、ステップＳ５１６に進み、他のノードに対して、グループ告知メッセージを送信する。すなわち、図１５を参照して説明した処理がステップＳ５１６において行われる。
【０４０７】
グループ管理機能部２２は、ステップＳ５１６において、グループ告知メッセージを送信した後、ステップＳ５１７に進み、変数ｉを「１」だけインクリメントし、ステップＳ５１４に進み、それ以降の処理を繰り返し実行する。すなわち、ノードＡが属するそれぞれのグループについて、ステップＳ５１５以降の処理が繰り返し実行される。
【０４０８】
なお、ノードＡがサーバであり、変数ｉがグループの数よりも小さいか否かを判定し、小さいと判定した場合に、グループ告知メッセージを送信する処理（ステップＳ５１４乃至Ｓ５１７のループ処理）は、例えば、２秒周期で行われる。
【０４０９】
グループ管理機能部２２は、ステップＳ５１５において、ノードＡの状態が正式サーバでないと判定した場合、ステップＳ５１８に進み、そのとき設定されている変数ｉに対応するグループにおいて、最後にグループ告知メッセージを受信してから、例えば、１０秒などの所定の時間が経過したか否かを判定する。
【０４１０】
グループ管理機能部２２は、ステップＳ５１８において、所定の時間が経過していないと判定した場合、ステップＳ５１７に進み、それ以降の処理を繰り返し実行し、一方、最後にグループ告知メッセージを受信してから所定の時間が経過したと判定した場合、ステップＳ５１９に進む。
【０４１１】
ステップＳ５１９において、グループ管理機能部２２は、変数ｉに対応するグループに、クライアントとして参加しているか否かを判定し、クライアントとして参加していると判定した場合、ステップＳ５２０に進み、ノードＡの状態を、参加（図５のState5）からサーバ候補Ｂ（State6）に遷移させる。そのとき、図３１を参照して説明した調停処理が行われる。
【０４１２】
グループ管理機能部２２は、ステップＳ５１９において、クライアントとしてグループに参加していないと判定した場合、ステップＳ５２１に進み、グループ管理テーブルから、そのとき対象としている変数ｉに対応するグループの情報を削除する。
【０４１３】
ステップＳ５２０，Ｓ５２１の処理が行われた後、処理はステップＳ５１７に進み、それ以降の処理が繰り返し実行される。以上の処理が周期的にグループ管理機能部２２により実行され、ノードＡの状態が管理される。
【０４１４】
以上においては、各ノードにおいて利用される優先順位は、生成された乱数に基づいて設定されるとしたが、サーバ専用ノードに対してのみ割り当てられる順位の範囲、サーバ・クライアント兼用ノードに対してのみ割り当てられる順位の範囲、および、クライアント専用ノードに対してのみ割り当てられる順位の範囲などのように、ノードの属性に応じて、割り当てられる優先順位の範囲が予め設定されているようにしてもよい。
【０４１５】
この場合、例えば、サーバ専用ノードに対して０乃至６３の優先順位が割り当てられ、サーバ・クライアント兼用ノードに対して６４乃至１２８の優先順位が割り当てられる。また、それ以降の１２８乃至２５５の優先順位は、クライアント専用ノードに対して割り当てられる。
【０４１６】
このように、優先順位の範囲を予め設定しておくことにより、異なる属性を有するノードが混在する場合、より効率的に調停を行うことができ、１つのサーバを容易に決定することが可能となる。
【０４１７】
なお、優先順位の範囲は、０乃至２５５の範囲に限られるものではない。
【０４１８】
各ノードの優先順位は、乱数に基づいて設定されるだけでなく、それ以外の様々な方法により設定されるようにしてもよい。例えば、機器に予め組み込まれているようにしてもよいし、電源が投入される度に設定されるようにしてもよい。
【０４１９】
また、以上においては、各ノード間でメッセージを送受信するネットワーク４がIEEE802.11a，802.11bなどに準拠した無線LANなどである場合について説明したが、ネットワーク４を、例えば、ハードウェアが存在することなく、ソフトウェアのみで仮想的に形成されるネットワークや、通信機能同士をソフトウェアのインタフェースで直接結合して構成されるネットワークとすることも可能である。
【０４２０】
また、ノード１乃至ノード３（ノードＡ乃至ノードＣ）は、パーソナルコンピュータやPDAにより構成される場合について説明したが、これらのノードは、CPUと記憶装置のみからなる機器、或いは、１チップのLSI(Large Scale Integrated
Circuit)により構成することも可能である。
【０４２１】
さらに、以上においては、グループを管理するサーバは、必ず1つであるとしたが、グループを管理するサーバと、サービスを提供するサーバがそれぞれ用意されたり、サービスを提供するサーバが複数用意されるなど、複数のサーバが１つのネットワーク上に用意されるようにしてもよい。
【０４２２】
上述した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。この場合、そのソフトウェアを実行させるノードは、例えば、図６５に示されるようなパーソナルコンピュータにより構成される。図６５に示される構成は、図２の構成を、より詳細に表したものに相当する。
【０４２３】
図６５において、CPU９１は、ROM（Read Only Memory）９２に記憶されているプログラム、または、記憶部９８からRAM（Random Access Memory）９３にロードされたプログラムに従って各種の処理を実行する。RAM９３にはまた、CPU９１が各種の処理を実行する上において必要なデータなどが適宜記憶される。
【０４２４】
CPU９１、ROM９２、およびRAM９３は、バス９４を介して相互に接続されている。このバス９４にはまた、入出力インタフェース９５も接続されている。
【０４２５】
入出力インタフェース９５には、キーボード、マウスなどよりなる入力部９６、CRT(Cathode Ray Tube)，LCD(Liquid Crystal Display)などよりなるディスプレイ、並びにスピーカなどよりなる出力部９７、ハードディスクなどより構成される記憶部９８、および、通信部９９（通信部１２）が接続されている。通信部９９は、ネットワーク４を介しての通信処理を行う。
【０４２６】
入出力インタフェース９５にはまた、必要に応じてドライブ１００が接続され、磁気ディスク１０１、光ディスク１０２、光磁気ディスク１０３、或いは半導体メモリ１０４などが適宜装着され、それから読み出されたコンピュータプログラムが、必要に応じて記憶部１０８にインストールされる。
【０４２７】
一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば、汎用のパーソナルコンピュータなどに、ネットワークや記録媒体からインストールされる。
【０４２８】
この記録媒体は、図６５に示されるように、装置本体とは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク１０１（フレキシブルディスクを含む）、光ディスク１０２（CD-ROM(Compact Disk-Read Only Memory)，DVD(Digital Versatile Disk)を含む）、光磁気ディスク１０３（MD（登録商標）(Mini-Disk)を含む）、もしくは半導体メモリ１０４などよりなるパッケージメディアにより構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに提供される、プログラムが記録されているROM９２や、記憶部９８に含まれるハードディスクなどで構成される。
【０４２９】
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に従って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０４３０】
また、本明細書において、システムとは、複数の装置により構成される装置全体を表わすものである。
【０４３１】
【発明の効果】
本発明によれば、情報管理装置により提供されるサービスを、情報処理装置が利用するシステムを実現することができる。
【０４３２】
また、本発明によれば、情報管理装置がグループから離脱した場合であっても、効率的に、かつ、確実に、その機能を引き継ぐ情報処理装置を選択することができる。
【図面の簡単な説明】
【図１】本発明を適用した通信システムの構成例を示す図である。
【図２】図１のノードの構成例を示すブロック図である。
【図３】図１のノードの他の構成例を示すブロック図である。
【図４】図１のノードの機能構成例を示すブロック図である。
【図５】状態遷移の例を示す図である。
【図６】ノードリストの例を示す図である。
【図７】ノードリストの他の例を示す図である。
【図８】グループ管理テーブルの例を示す図である。
【図９】個別グループ管理テーブルの例を示す図である。
【図１０】ノードリストの例を示す図である。
【図１１】メッセージのフォーマットの例を示す図である。
【図１２】コマンドとコードの対応例を示す図である。
【図１３】通信システムの処理を説明するシーケンスである。
【図１４】図１３の処理において送受信されるメッセージの例を示す図である。
【図１５】図１３のノードＡの処理を説明するフローチャートである。
【図１６】図１５の処理に対応して実行される、ノードＢの処理を説明するフローチャートである。
【図１７】ノードＣのグループ開始処理を説明するフローチャートである。
【図１８】図１７のステップＳ５２において実行される処理を説明するシーケンスである。
【図１９】図１８の処理において送受信されるメッセージの例を示す図である。
【図２０】図１８の処理において送受信される他のメッセージの例を示す図である。
【図２１】図１８の処理において送受信されるさらに他のメッセージの例を示す図である。
【図２２】図１８の処理において送受信されるメッセージの例を示す図である。
【図２３】図１８の処理において送受信される他のメッセージの例を示す図である。
【図２４】図１８のノードＣの処理を説明するフローチャートである。
【図２５】図１８のノードＡの処理を説明するフローチャートである。
【図２６】図１７のステップＳ５４において実行される処理を説明するシーケンスである。
【図２７】図２６の処理において送受信されるメッセージの例を示す図である。
【図２８】図２６の処理において送受信される他のメッセージの例を示す図である。
【図２９】図２６の処理において送受信されるさらに他のメッセージの例を示す図である。
【図３０】図２６の処理において送受信されるメッセージの例を示す図である。
【図３１】図２６のノードＡの処理を説明するフローチャートである。
【図３２】クライアントがグループから離脱する処理を説明するシーケンスである。
【図３３】図３２の処理において送受信されるメッセージの例を示す図である。
【図３４】図３２の処理において送受信される他のメッセージの例を示す図である。
【図３５】図３２の処理において送受信されるさらに他のメッセージの例を示す図である。
【図３６】図３２の処理において送受信されるメッセージの例を示す図である。
【図３７】図３２のノードＣの処理を説明するフローチャートである。
【図３８】図３２のノードＡの処理を説明するフローチャートである。
【図３９】サーバがグループから離脱する処理を説明するシーケンスである。
【図４０】図３９の処理において送受信されるメッセージの例を示す図である。
【図４１】図３９の処理において送受信される他のメッセージの例を示す図である。
【図４２】図３９の処理において送受信されるさらに他のメッセージの例を示す図である。
【図４３】図３９の処理において送受信されるメッセージの例を示す図である。
【図４４】図３９の処理において送受信される他のメッセージの例を示す図である。
【図４５】図３９の処理において送受信されるさらに他のメッセージの例を示す図である。
【図４６】図３９のノードＡの処理を説明するフローチャートである。
【図４７】図３９のノードＢの処理を説明するフローチャートである。
【図４８】サーバがグループから離脱する他の処理を説明するシーケンスである。
【図４９】図４８の処理において送受信されるメッセージの例を示す図である。
【図５０】図４８の処理において送受信される他のメッセージの例を示す図である。
【図５１】図４８の処理において送受信されるさらに他のメッセージの例を示す図である。
【図５２】図４８の処理において送受信されるメッセージの例を示す図である。
【図５３】図４８の処理において送受信される他のメッセージの例を示す図である。
【図５４】ノードの他の機能構成例を示すブロック図である。
【図５５】ノードＡとノードＢ間で行われる処理を説明するシーケンスである。
【図５６】図５５の処理で用いられるAPIの例を示す図である。
【図５７】図５５の処理で送信されるデータの例を示す図である。
【図５８】図５５の処理で用いられるAPIの他の例を示す図である。
【図５９】ノードＡとノードＢ間で行われる他の処理を説明するシーケンスである。
【図６０】図５９の処理で用いられるAPIの例を示す図である。
【図６１】図５９の処理で送信されるデータの例を示す図である。
【図６２】図５９の処理で用いられるAPIの他の例を示す図である。
【図６３】グループ管理機能部の処理を説明するフローチャートである。
【図６４】グループ管理機能部の他の処理を説明するフローチャートである。
【図６５】記録媒体の例を示す図である。
【符号の説明】
１乃至３  ノード，  ４  ネットワーク，  １１  演算処理部，  １２  通信部，  ２１  通信機能部，  ２２  グループ管理機能部，  ２２Ａ  メッセージ管理部，  ２２Ｂ  状態管理部，  ２２Ｃ  リスト管理部，  ２３  サーバ機能部，  ２４  クライアント機能部，  １０１  磁気ディスク，  １０２  光ディスク，  １０３  光磁気ディスク，  １０４  半導体メモリ
【図１】
2004199349.tif 000003
【図２】
2004199349.tif 000004
【図３】
2004199349.tif 000005
【図４】
2004199349.tif 000006
【図５】
2004199349.tif 000007
【図６】
2004199349.tif 000008
【図７】
2004199349.tif 000009
【図８】
2004199349.tif 000010
【図９】
2004199349.tif 000011
【図１０】
2004199349.tif 000012
【図１１】
2004199349.tif 000013
【図１２】
2004199349.tif 000014
【図１３】
2004199349.tif 000015
【図１４】
2004199349.tif 000016
【図１５】
2004199349.tif 000017
【図１６】
2004199349.tif 000018
【図１７】
2004199349.tif 000019
【図１８】
2004199349.tif 000020
【図１９】
2004199349.tif 000021
【図２０】
2004199349.tif 000022
【図２１】
2004199349.tif 000023
【図２２】
2004199349.tif 000024
【図２３】
2004199349.tif 000025
【図２４】
2004199349.tif 000026
【図２５】
2004199349.tif 000027
【図２６】
2004199349.tif 000028
【図２７】
2004199349.tif 000029
【図２８】
2004199349.tif 000030
【図２９】
2004199349.tif 000031
【図３０】
2004199349.tif 000032
【図３１】
2004199349.tif 000033
【図３２】
2004199349.tif 000034
【図３３】
2004199349.tif 000035
【図３４】
2004199349.tif 000036
【図３５】
2004199349.tif 000037
【図３６】
2004199349.tif 000038
【図３７】
2004199349.tif 000039
【図３８】
2004199349.tif 000040
【図３９】
2004199349.tif 000041
【図４０】
2004199349.tif 000042
【図４１】
2004199349.tif 000043
【図４２】
2004199349.tif 000044
【図４３】
2004199349.tif 000045
【図４４】
2004199349.tif 000046
【図４５】
2004199349.tif 000047
【図４６】
2004199349.tif 000048
【図４７】
2004199349.tif 000049
【図４８】
2004199349.tif 000050
【図４９】
2004199349.tif 000051
【図５０】
2004199349.tif 000052
【図５１】
2004199349.tif 000053
【図５２】
2004199349.tif 000054
【図５３】
2004199349.tif 000055
【図５４】
2004199349.tif 000056
【図５５】
2004199349.tif 000057
【図５６】
2004199349.tif 000058
【図５７】
2004199349.tif 000059
【図５８】
2004199349.tif 000060
【図５９】
2004199349.tif 000061
【図６０】
2004199349.tif 000062
【図６１】
2004199349.tif 000063
【図６２】
2004199349.tif 000064
【図６３】
2004199349.tif 000065
【図６４】
2004199349.tif 000066
【図６５】
2004199349.tif 000067