(57)【要約】【課題】システムが大規模化しても、データの送信制御を複雑化させることなく、サーバからクライアントへデータを効率的に送信することができるデータ配信システム、サーバ、データ配信方法、コンピュータプログラム及び記録媒体を提供する。【解決手段】複数のクライアント１１〜１９の内、同一の通信網に接続している一のクライアント及び他のクライアントをそれぞれ転送元クライアント及び転送先クライアントに指定する。サーバ１からデータを受信した転送元クライアントは、転送先クライアントへデータを転送するので、データを配信するシステムが大規模化しても、システムは簡素な制御でデータを送信・転送することができる。【選択図】図１
2011076532.tif 000002
【特許請求の範囲】
【請求項１】
通信網を介して複数のクライアントを接続したサーバが少なくとも一つのクライアントへデータを配信し、前記サーバから配信されたデータが、前記クライアント間で転送されるデータ配信システムにおいて、
前記サーバは、
前記クライアントが接続している通信網を識別する識別情報を取得する手段と、
該手段によって取得した識別情報に基づいて、前記クライアントを通信網毎に区別する手段と、
該手段によって区別された同一の通信網に接続している複数のクライアントから、前記サーバより送信されたデータを転送する転送元クライアント及び転送されたデータを受信する転送先クライアントを指定する手段とを備えること
を特徴とするデータ配信システム。
【請求項２】
通信網を介して複数のクライアントを接続したサーバが少なくとも一つのクライアントへデータを配信し、前記サーバから配信されたデータが、前記クライアント間で転送されるデータ配信システムにおいて、
前記複数のクライアント間の通信速度を計測する手段を備え、
前記サーバは、
複数のクライアントの中から、前記サーバより送信されたデータを転送する転送元クライアントを指定する手段と、
計測された通信速度に基づいて、前記転送元クライアントとの通信速度が最速の転送先クライアントを指定する手段とを備えること
を特徴とするデータ配信システム。
【請求項３】
通信網を介して複数のクライアントを接続したサーバが少なくとも一つのクライアントへデータを配信し、前記サーバから配信されたデータが、前記クライアント間で転送されるデータ配信システムにおいて、
前記複数のクライアント間の通信速度を計測する手段を備え、
前記サーバは、
計測された通信速度が予め設定された閾値以上であるか否かを判定する手段と、
該手段によって前記通信速度が前記閾値以上であると判定された場合に、前記通信速度の判定対象となった両クライアントを前記サーバから送信されたデータを転送する転送元クライアント及び該転送元クライアントから転送されたデータを受信する転送先クライアントに指定する手段と
を備えることを特徴とするデータ配信システム。
【請求項４】
通信網を介して複数のクライアントを接続したサーバが少なくとも一つのクライアントへデータを配信し、前記サーバから配信されたデータが、前記クライアント間で転送されるデータ配信システムにおいて、
前記サーバと一のクライアントとの間の第１通信速度を計測する手段と、
前記一のクライアントと他のクライアントとの間の第２通信速度を計測する手段とを備え、
前記サーバは、計測された第１通信速度が前記第２通信速度よりも遅い場合に、前記他のクライアントを前記サーバから送信されたデータを転送する転送元クライアントに指定し、前記一のクライアントを前記転送元クライアントから転送されたデータを受信する転送先クライアントに指定する手段を備えることを特徴とするデータ配信システム。
【請求項５】
前記サーバは、前記転送元クライアントにデータを送信する前に、指定した前記転送先クライアントを示す情報を前記転送元クライアントに送信する手段を備え、
前記転送先クライアントを示す情報を前記転送元クライアントが受信した場合に、前記転送元クライアントと前記転送先クライアントとの間でデータの送受信が可能な送受信可能状態が確立されることを特徴とする請求項１から４のいずれか一つに記載のデータ配信システム。
【請求項６】
前記送受信可能状態は前記転送元クライアントと前記転送先クライアントとの間で一対一で確立されるようにしてあることを特徴とする請求項５に記載のデータ配信システム。
【請求項７】
前記サーバは、
前記送受信可能状態が未確立の前記クライアントが複数存在するか否かを判定する手段と、
該手段によって、前記送受信可能状態が未確立の前記クライアントが複数存在すると判定された場合に、複数存在すると判定された前記クライアントの内、前記送受信可能状態が確立されるべきクライアントを指定する手段とを備え、
該手段によって指定されたクライアント同士の間で前記送受信可能状態を確立することができるようにしてあること
を特徴とする請求項５又は６に記載のデータ配信システム。
【請求項８】
前記サーバは、
前記転送元クライアントにてデータを受信することが可能であるか否かを判定する手段と、
該手段によって前記転送元クライアントにてデータを受信することが不可能であると判定された場合に、データの受信が不可能な転送元クライアントとの間で前記送受信可能状態を確立した転送先クライアントに前記送受信可能状態を強制的に終了させる手段と
を備えることを特徴とする請求項７に記載のデータ配信システム。
【請求項９】
前記転送元クライアント（又は前記転送先クライアント）は、
前記転送先クライアント（又は前記転送元クライアント）にてデータを受信することが可能であるか否かを判定する手段と、
前記転送先クライアント（又は前記転送元クライアント）にてデータを受信することが不可能であると判定された場合に、データの受信が不可能な前記転送先クライアント（又は前記転送元クライアント）を示す情報を前記サーバへ送信する手段と、
データの受信が不可能な前記転送先クライアント（又は前記転送元クライアント）との間で確立された前記送受信可能状態を強制的に終了する手段とを備えること
を特徴とする請求項７又は８に記載のデータ配信システム。
【請求項１０】
前記サーバは、
前記サーバから配信されたデータを前記クライアント間で転送するために、前記クライアント同士の対応関係を示す情報を記憶する手段と、
前記クライアントが前記サーバに接続されるか又は前記サーバと前記クライアントとの接続が切断された場合に、前記クライアント同士の対応関係を示す情報を変更する手段と
を備えることを特徴とする請求項１から９のいずれか一つに記載のデータ配信システム。
【請求項１１】
通信網を介して複数のクライアントが接続してあり、少なくとも一つのクライアントへデータを配信するサーバにおいて、
前記クライアントからの接続要求を受信した場合に、前記クライアントが接続している通信網を識別する識別情報を取得する手段と、
該手段によって取得した識別情報に基づいて、前記クライアントを通信網毎に区別する手段と、
該手段によって区別された同一の通信網に接続している複数のクライアントから、前記サーバより送信されたデータを転送する転送元クライアント及び転送されたデータを受信する転送先クライアントを指定する手段とを備えること
を特徴とするサーバ。
【請求項１２】
通信網を介して複数のクライアントが接続してあり、少なくとも一つのクライアントへデータを配信するサーバにおいて、
複数のクライアントの中から、前記サーバより送信されたデータを転送する転送元クライアントを指定し、前記複数のクライアント間の通信速度に基づいて、前記転送元クライアントからの通信速度が最速の転送先クライアントとを指定する手段とを備えること
を特徴とするサーバ。
【請求項１３】
通信網を介して複数のクライアントが接続してあり、少なくとも一つのクライアントへデータを配信するサーバにおいて、
前記複数のクライアント間の通信速度が予め設定された閾値以上であるか否かを判定する手段と、
該手段によって前記通信速度が前記閾値以上であると判定された場合に、前記通信速度の判定対象となった両クライアントを前記サーバから送信されたデータを転送する転送元クライアント及び該転送元クライアントから転送されたデータを受信する転送先クライアントに指定する手段と
を備えることを特徴とするサーバ。
【請求項１４】
通信網を介して複数のクライアントが接続してあり、少なくとも一つのクライアントへデータを配信するサーバにおいて、
前記サーバと一のクライアントとの間の通信速度が前記一のクライアントと他のクライアントとの間の通信速度よりも遅い場合に、前記他のクライアントを前記サーバから送信されたデータを転送する転送元クライアントに指定し、前記一のクライアントを前記転送元クライアントから転送されたデータを受信する転送先クライアントに指定する手段を備えることを特徴とするサーバ。
【請求項１５】
サーバから配信されたデータを、通信網を介して前記サーバに接続された複数のクライアント間で転送するデータ配信方法において、
前記サーバが前記クライアントが接続している通信網を識別する識別情報を取得するステップと、
前記識別情報に基づいて、前記クライアントを通信網毎に区別するステップと、
区別された同一の通信網に接続している複数のクライアントから、前記サーバより送信されたデータを転送する転送元クライアント及び転送されたデータを受信する転送先クライアントを指定するステップと
を備えることを特徴とするデータ配信方法。
【請求項１６】
サーバから配信されたデータを、前記サーバに接続された複数のクライアント間で転送するデータ配信方法において、
前記複数のクライアント間の通信速度を計測するステップと、
複数のクライアントの中から、前記サーバより送信されたデータを転送する転送元クライアントを指定するステップと、
計測された通信速度に基づいて、前記転送元クライアントとの通信速度が最速の転送先クライアントを指定するステップと
を備えることを特徴とするデータ配信方法。
【請求項１７】
サーバから配信されたデータを、前記サーバに接続された複数のクライアント間で転送するデータ配信方法において、
前記複数のクライアント間の通信速度を計測するステップと、
計測された通信速度が予め設定された閾値以上であるか否かを判定するステップと、
前記通信速度が前記閾値以上であると判定された場合に、前記通信速度の判定対象となった両クライアントを前記サーバから送信されたデータを転送する転送元クライアント及び該転送元クライアントから転送されたデータを受信する転送先クライアントに指定するステップと
を備えることを特徴とするデータ配信方法。
【請求項１８】
サーバから配信されたデータを、前記サーバに接続された複数のクライアント間で転送するデータ配信方法において、
前記サーバと一のクライアントとの間の第１通信速度を計測するステップと、
前記一のクライアントと他のクライアントとの間の第２通信速度を計測するステップと、
計測された第１通信速度が前記第２通信速度よりも遅い場合に、前記他のクライアントを前記サーバから送信されたデータを転送する転送元クライアントに指定し、前記一のクライアントを前記転送元クライアントから転送されたデータを受信する転送先クライアントに指定するステップと
を備えることを特徴とするデータ配信方法。
【請求項１９】
コンピュータに通信網を介して複数のクライアントが接続してある場合に、コンピュータを、少なくとも一つのクライアントへデータを配信するサーバとして機能させるコンピュータプログラムにおいて、
コンピュータを、
前記クライアントが接続している通信網を識別する識別情報を取得する手段、
該手段によって取得した識別情報に基づいて、前記クライアントを通信網毎に区別する手段及び
該手段によって区別された同一の通信網に接続している複数のクライアントから、前記サーバより送信されたデータを転送する転送元クライアント及び転送されたデータを受信する転送先クライアントを指定する手段
として機能させることを特徴とするコンピュータプログラム。
【請求項２０】
コンピュータに通信網を介して複数のクライアントが接続してある場合に、コンピュータを、少なくとも一つのクライアントへデータを配信するサーバとして機能させるコンピュータプログラムにおいて、
コンピュータを、
複数のクライアントの中から、前記サーバより送信されたデータを転送する転送元クライアントを指定する手段及び
前記複数のクライアント間の通信速度に基づいて、前記転送元クライアントからの通信速度が最速の転送先クライアントとを指定する手段
として機能させることを特徴とするコンピュータプログラム。
【請求項２１】
コンピュータに通信網を介して複数のクライアントが接続してある場合に、コンピュータを、少なくとも一つのクライアントへデータを配信するサーバとして機能させるコンピュータプログラムにおいて、
コンピュータを、
前記複数のクライアント間の通信速度を予め設定された閾値以上であるか否かを判定する手段及び
該手段によって前記通信速度が前記閾値以上であると判定された場合に、前記通信速度の判定対象となった両クライアントを前記サーバから送信されたデータを転送する転送元クライアント及び該転送元クライアントから転送されたデータを受信する転送先クライアントに指定する手段
として機能させることを特徴とするコンピュータプログラム。
【請求項２２】
コンピュータに通信網を介して複数のクライアントが接続してある場合に、コンピュータを、少なくとも一つのクライアントへデータを配信するサーバとして機能させるコンピュータプログラムにおいて、
コンピュータを、
前記サーバと前記一のクライアントとの間の通信速度が一のクライアントと他のクライアントとの間の通信速度よりも速い場合に、前記他のクライアントを前記サーバから送信されたデータを転送する転送元クライアントに指定し、前記一のクライアントを前記転送元クライアントから転送されたデータを受信する転送先クライアントに指定する手段
として機能させることを特徴とするコンピュータプログラム。
【請求項２３】
請求項１９から請求項２２のいずれか一つに記載のコンピュータプログラムを記録してあることを特徴とするコンピュータでの読み取りが可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はサーバから送信されたデータを、前記サーバに接続した複数のクライアント間で転送するデータ配信システム、データ配信方法、コンピュータプログラム及び該コンピュータプログラムを記録した記録媒体、並びに接続された複数のクライアント間にてデータを転送させるサーバに関する。
【背景技術】
【０００２】
近年、企業において従業員が共有するアプリケーション、データベースなどの情報資源は膨大であり、多数の従業員が情報資源を効率良く使用できる環境を整備する必要がある。そのため企業は、従業員が使用する多数の端末（クライアント）を情報資源を集中管理するサーバに接続し、各クライアントからサーバに要求を送信し、サーバが応答するクライアント・サーバシステムを構築して、情報資源の効率的な利用を図ることが多い。
【０００３】
クライアント・サーバシステムにおいて共有データがある場合には、サーバにて共有データを管理し、いずれかのクライアントで共有データを更新したときに、更新データをサーバに送信してサーバの共有データを更新し、サーバから未更新の各クライアントへ更新データが送信され、各クライアントの共有データが更新されることがある。
【０００４】
この場合、クライアントが少数であるときには、サーバから各クライアントへ更新データを送信しても、サーバの負荷が過剰になることはないが、クライアントが多数であるときには、サーバの負荷が過剰になり、情報資源の効率的な利用が妨げられるおそれがある。
【０００５】
特許文献１にはサーバの負担を軽減するデータ配信システムが開示されており、該データ配信システムは、予めサーバにて分割した分割データと分割データの送信先を含むデータ配信情報とを各クライアントに送信し、データ配信情報に基づいてクライアント間で分割データを転送し合い、各クライアントにてデータを完成させるようにしてある。またデータ配信システムは、クライアントの送受信能力に応じて、サーバから各クライアントに配信する分割データの個数を調整するようにしてあり、サーバの負担の軽減及び情報資源の効率的な利用の調和を図っている。
【０００６】
また特許文献２には、サーバに複数のノードが接続されたネットワークシステムが開示されており、該ネットワークシステムは、サーバが最上位ノードを指定し、各ノードは最上位ノードから下位ノードへデータを順に転送するための経路を決定するようにしてある。ノードは決定された経路に従って、最上位ノードから最下位ノードまでデータを順次転送することで、サーバの負担を軽減している。またデータを順次転送するため、ユニキャストでの転送が可能であり、マルチキャストに対応したルータを使用する必要がなく、信頼性の低いＵＤＰ（User Datagram Protocol）ではなく、信頼性の高いＴＣＰ（Transmission Control Protocol）でデータを転送することができる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００９−９２９７号公報
【特許文献２】特開２００９−２６１０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし特許文献１に記載のデータ配信システムは、データの分割処理、送受信能力に応じてクライアントへ送信する分割データの個数を制御する処理、及びクライアント間での分割データの転送処理などを行う必要があるので、多数のクライアントからデータ配信要求がサーバに送信された場合には、データ配信システムでの処理が複雑化し、大規模なシステムへの対応が難しい。
【０００９】
特許文献２に記載のネットワークシステムも、最上位ノードを指定する処理、データを転送するための経路を決定する処理、決定された経路に従ってデータを順次転送させる処理などを行う必要があるので、ネットワークシステムでの処理が複雑化し、大規模なシステムへの対応が十分であるとは言えない。また最下位ノードへのデータの送信には長時間を要するという問題がある。
【００１０】
本発明は斯かる事情に鑑みてなされたものであり、その目的とするところは、システムが大規模化しても、データの送信制御を複雑化させることなく、サーバからクライアントへデータを効率的に送信することができるデータ配信システム、サーバ、データ配信方法、コンピュータプログラム及び記録媒体を提供することにある。
【課題を解決するための手段】
【００１１】
本発明に係るデータ配信システムは、通信網を介して複数のクライアントを接続したサーバが少なくとも一つのクライアントへデータを配信し、前記サーバから配信されたデータが、前記クライアント間で転送されるデータ配信システムにおいて、前記サーバは、前記クライアントが接続している通信網を識別する識別情報を取得する手段と、該手段によって取得した識別情報に基づいて、前記クライアントを通信網毎に区別する手段と、該手段によって区別された同一の通信網に接続している複数のクライアントから、前記サーバより送信されたデータを転送する転送元クライアント及び転送されたデータを受信する転送先クライアントを指定する手段とを備えることを特徴とする。
【００１２】
本発明に係るデータ配信システムは、通信網を介して複数のクライアントを接続したサーバが少なくとも一つのクライアントへデータを配信し、前記サーバから配信されたデータが、前記クライアント間で転送されるデータ配信システムにおいて、前記複数のクライアント間の通信速度を計測する手段を備え、前記サーバは、複数のクライアントの中から、前記サーバより送信されたデータを転送する転送元クライアントを指定する手段と、計測された通信速度に基づいて、前記転送元クライアントとの通信速度が最速の転送先クライアントとを指定する手段を備えることを特徴とする。
【００１３】
本発明に係るデータ配信システムは、通信網を介して複数のクライアントを接続したサーバが少なくとも一つのクライアントへデータを配信し、前記サーバから配信されたデータが、前記クライアント間で転送されるデータ配信システムにおいて、前記複数のクライアント間の通信速度を計測する手段を備え、前記サーバは、計測された通信速度が予め設定された閾値以上であるか否かを判定する手段と、該手段によって前記通信速度が前記閾値以上であると判定された場合に、前記通信速度の判定対象となった両クライアントを前記サーバから送信されたデータを転送する転送元クライアント及び該転送元クライアントから転送されたデータを受信する転送先クライアントに指定する手段とを備えることを特徴とする。
【００１４】
本発明に係るデータ配信システムは、通信網を介して複数のクライアントを接続したサーバが少なくとも一つのクライアントへデータを配信し、前記サーバから配信されたデータが、前記クライアント間で転送されるデータ配信システムにおいて、前記サーバと一のクライアントとの間の第１通信速度を計測する手段と、前記一のクライアントと他のクライアントとの間の第２通信速度を計測する手段とを備え、前記サーバは、計測された第１通信速度が前記第２通信速度よりも遅い場合に、前記他のクライアントを前記サーバから送信されたデータを転送する転送元クライアントに指定し、前記一のクライアントを前記転送元クライアントから転送されたデータを受信する転送先クライアントに指定する手段を備えることを特徴とする。
【００１５】
本発明に係るデータ配信システムは、前記サーバは、前記転送元クライアントにデータを送信する前に、指定した前記転送先クライアントを示す情報を前記転送元クライアントに送信する手段を備え、前記転送先クライアントを示す情報を前記転送元クライアントが受信した場合に、前記転送元クライアントと前記転送先クライアントとの間でデータの送受信が可能な送受信可能状態が確立されることを特徴とする。
【００１６】
本発明に係るデータ配信システムは、前記送受信可能状態は前記転送元クライアントと前記転送先クライアントとの間で一対一で確立されるようにしてあることを特徴とする。
【００１７】
本発明に係るデータ配信システムは、前記サーバは、前記送受信可能状態が未確立の前記クライアントが複数存在するか否かを判定する手段と、該手段によって、前記送受信可能状態が未確立の前記クライアントが複数存在すると判定された場合に、複数存在すると判定された前記クライアントの内、前記送受信可能状態が確立されるべきクライアントを指定する手段とを備え、該手段によって指定されたクライアント同士の間で前記送受信可能状態を確立することができるようにしてあることを特徴とする。
【００１８】
本発明に係るデータ配信システムは、前記サーバは、前記転送元クライアントにてデータを受信することが可能であるか否かを判定する手段と、該手段によって前記転送元クライアントにてデータを受信することが不可能であると判定された場合に、データの受信が不可能な転送元クライアントとの間で前記送受信可能状態を確立した転送先クライアントに前記送受信可能状態を強制的に終了させる手段とを備えることを特徴とする。
【００１９】
本発明に係るデータ配信システムは、前記転送元クライアント（又は前記転送先クライアント）は、前記転送先クライアント（又は前記転送元クライアント）にてデータを受信することが可能であるか否かを判定する手段と、前記転送先クライアント（又は前記転送元クライアント）にてデータを受信することが不可能であると判定された場合に、データの受信が不可能な前記転送先クライアント（又は前記転送元クライアント）を示す情報を前記サーバへ送信する手段と、データの受信が不可能な前記転送先クライアント（又は前記転送元クライアント）との間で確立された前記送受信可能状態を強制的に終了する手段とを備えることを特徴とする。
【００２０】
本発明に係るデータ配信システムは、前記サーバは、前記サーバから配信されたデータを前記クライアント間で転送するために、前記クライアント同士の対応関係を示す情報を記憶する手段と、前記クライアントが前記サーバに接続されるか又は前記サーバと前記クライアントとの接続が切断された場合に、前記クライアント同士の対応関係を示す情報を変更する手段とを備えることを特徴とする。
【００２１】
本発明に係るサーバは、通信網を介して複数のクライアントが接続してあり、少なくとも一つのクライアントへデータを配信するサーバにおいて、前記クライアントからの接続要求を受信した場合に、前記クライアントが接続している通信網を識別する識別情報を取得する手段と、該手段によって取得した識別情報に基づいて、前記クライアントを通信網毎に区別する手段と、該手段によって区別された同一の通信網に接続している複数のクライアントから、前記サーバより送信されたデータを転送する転送元クライアント及び転送されたデータを受信する転送先クライアントを指定する手段とを備えることを特徴とする。
【００２２】
本発明に係るサーバは、通信網を介して複数のクライアントが接続してあり、少なくとも一つのクライアントへデータを配信するサーバにおいて、複数のクライアントの中から、前記サーバより送信されたデータを転送する転送元クライアントを指定し、前記複数のクライアント間の通信速度に基づいて、前記転送元クライアントからの通信速度が最速の転送先クライアントとを指定する手段とを備えることを特徴とする。
【００２３】
本発明に係るサーバは、通信網を介して複数のクライアントが接続してあり、少なくとも一つのクライアントへデータを配信するサーバにおいて、前記複数のクライアント間の通信速度が予め設定された閾値以上であるか否かを判定する手段と、該手段によって前記通信速度が前記閾値以上であると判定された場合に、前記通信速度の判定対象となった両クライアントを前記サーバから送信されたデータを転送する転送元クライアント及び該転送元クライアントから転送されたデータを受信する転送先クライアントに指定する手段とを備えることを特徴とする。
【００２４】
本発明に係るサーバは、通信網を介して複数のクライアントが接続してあり、少なくとも一つのクライアントへデータを配信するサーバにおいて、前記サーバと一のクライアントとの間の通信速度が前記一のクライアントと他のクライアントとの間の通信速度よりも遅い場合に、前記他のクライアントを前記サーバから送信されたデータを転送する転送元クライアントに指定し、前記一のクライアントを前記転送元クライアントから転送されたデータを受信する転送先クライアントに指定する手段を備えることを特徴とする。
【００２５】
本発明に係るデータ配信方法は、サーバから配信されたデータを、通信網を介して前記サーバに接続された複数のクライアント間で転送するデータ配信方法において、前記サーバが前記クライアントが接続している通信網を識別する識別情報を取得するステップと、前記識別情報に基づいて、前記クライアントを通信網毎に区別するステップと、区別された同一の通信網に接続している複数のクライアントから、前記サーバより送信されたデータを転送する転送元クライアント及び転送されたデータを受信する転送先クライアントを指定するステップとを備えることを特徴とする。
【００２６】
本発明に係るデータ配信方法は、サーバから配信されたデータを、前記サーバに接続された複数のクライアント間で転送するデータ配信方法において、前記複数のクライアント間の通信速度を計測するステップと、複数のクライアントの中から、前記サーバより送信されたデータを転送する転送元クライアントを指定するステップと、計測された通信速度に基づいて、前記転送元クライアントとの通信速度が最速の転送先クライアントを指定するステップとを備えることを特徴とする。
【００２７】
本発明に係るデータ配信方法は、サーバから配信されたデータを、前記サーバに接続された複数のクライアント間で転送するデータ配信方法において、前記複数のクライアント間の通信速度を計測するステップと、計測された通信速度が予め設定された閾値以上であるか否かを判定するステップと、前記通信速度が前記閾値以上であると判定された場合に、前記通信速度の判定対象となった両クライアントを前記サーバから送信されたデータを転送する転送元クライアント及び該転送元クライアントから転送されたデータを受信する転送先クライアントに指定するステップとを備えることを特徴とする。
【００２８】
本発明に係るデータ配信方法は、サーバから配信されたデータを、前記サーバに接続された複数のクライアント間で転送するデータ配信方法において、前記サーバと一のクライアントとの間の第１通信速度を計測するステップと、前記一のクライアントと他のクライアントとの間の第２通信速度を計測するステップと、計測された第１通信速度が前記第２通信速度よりも遅い場合に、前記他のクライアントを前記サーバから送信されたデータを転送する転送元クライアントに指定し、前記一のクライアントを前記転送元クライアントから転送されたデータを受信する転送先クライアントに指定するステップとを備えることを特徴とする。
【００２９】
本発明に係るコンピュータプログラムは、コンピュータに通信網を介して複数のクライアントが接続してある場合に、コンピュータを、少なくとも一つのクライアントへデータを配信するサーバとして機能させるコンピュータプログラムにおいて、コンピュータを、前記クライアントが接続している通信網を識別する識別情報を取得する手段、該手段によって取得した識別情報に基づいて、前記クライアントを通信網毎に区別する手段及び該手段によって区別された同一の通信網に接続している複数のクライアントから、前記サーバより送信されたデータを転送する転送元クライアント及び転送されたデータを受信する転送先クライアントを指定する手段として機能させることを特徴とする。
【００３０】
本発明に係るコンピュータプログラムは、コンピュータに通信網を介して複数のクライアントが接続してある場合に、コンピュータを、少なくとも一つのクライアントへデータを配信するサーバとして機能させるコンピュータプログラムにおいて、コンピュータを、複数のクライアントの中から、前記サーバより送信されたデータを転送する転送元クライアントを指定する手段及び前記複数のクライアント間の通信速度に基づいて、前記転送元クライアントからの通信速度が最速の転送先クライアントとを指定する手段として機能させることを特徴とする。
【００３１】
本発明に係るコンピュータプログラムは、コンピュータに通信網を介して複数のクライアントが接続してある場合に、コンピュータを、少なくとも一つのクライアントへデータを配信するサーバとして機能させるコンピュータプログラムにおいて、コンピュータを、前記複数のクライアント間の通信速度を予め設定された閾値以上であるか否かを判定する手段及び該手段によって前記通信速度が前記閾値以上であると判定された場合に、前記通信速度の判定対象となった両クライアントを前記サーバから送信されたデータを転送する転送元クライアント及び該転送元クライアントから転送されたデータを受信する転送先クライアントに指定する手段として機能させることを特徴とする。
【００３２】
本発明に係るコンピュータプログラムは、コンピュータに通信網を介して複数のクライアントが接続してある場合に、コンピュータを、少なくとも一つのクライアントへデータを配信するサーバとして機能させるコンピュータプログラムにおいて、コンピュータを、前記サーバと前記一のクライアントとの間の通信速度が前記一のクライアントと他のクライアントとの間の通信速度よりも速い場合に、前記他のクライアントを前記サーバから送信されたデータを転送する転送元クライアントに指定し、前記一のクライアントを前記転送元クライアントから転送されたデータを受信する転送先クライアントに指定する手段として機能させることを特徴とする。
【００３３】
本発明に係る記録媒体は、前述したコンピュータプログラムのいずれか一つを記録してあることを特徴とする。
【００３４】
本発明においては、同一の通信網に接続している複数のクライアントの内、一のクライアントを転送元クライアントに指定し、他のクライアントを転送先クライアントに指定する。そしてサーバからデータを受信した転送元クライアントが、転送先クライアントへデータを転送する。また通信網を識別する識別情報をサーバにて記憶・管理した場合には、クライアントとサーバとの接続／切断などによってデータ配信システムの構成が変更されても、該システムの変更に応じて、転送元クライアント及び転送先クライアントを再指定することができる。
【００３５】
本発明においては、サーバに接続された複数のクライアントの中から転送元クライアントを指定し、該転送元クライアントと最速の通信速度で通信することができるクライアントを転送先クライアントに指定する。またサーバに接続された複数のクライアント間の通信速度をサーバにて記憶・管理した場合には、クライアントとサーバとの接続／切断などによってデータ配信システムの構成が変更されても、該システムの変更に応じて、転送元クライアント及び転送先クライアントを再指定することができる。
【００３６】
本発明においては、サーバに接続された一のクライアント及び他のクライアントの間の通信速度が予め設定された閾値以上である場合に、両クライアントをそれぞれ転送元クライアント及び転送先クライアントに指定する。転送元クライアント及び転送先クライアントを示す情報をサーバにて記憶した場合には、新たなクライアントがサーバに接続し、データ配信システムの構成が変更されても、新たなクライアントと既存のクライアントとの通信速度を前記閾値と比較して、転送元クライアント及び転送先クライアントを再指定することができる。
【００３７】
本発明においては、サーバと一のクライアントとの通信速度が、該一のクライアントと他のクライアントとの通信速度よりも遅い場合に、一のクライアントを転送先クライアントに指定し、他のクライアントを転送元クライアントに指定する。また転送元クライアント及び転送先クライアントを示す情報をサーバにて記憶・管理した場合に、クライアントとサーバとの接続／切断などによってデータ配信システムの構成が変更されても、該システムの変更に応じて、転送元クライアント及び転送先クライアントを再指定することができる。
【００３８】
本発明においては、サーバから転送元クライアントにデータを送信する前に、転送先クライアントを示す情報を転送元クライアントに送信して、転送元クライアント及び転送先クライアント間にデータの送受信が可能な送受信可能状態（コネクション）を確立させる。そのためサーバから転送元クライアントに送信されたデータは転送先クライアントへ直ちに転送される。
【００３９】
本発明においては、前述したコネクションは、転送元クライアントと転送先クライアントとの間で一対一で確立されるので、サーバは複数のクライアントの内、半分のクライアントを転送元クライアントに指定して、データを各転送元クライアントに配信すればよいので、サーバの負荷が軽減される。また転送元クライアントと転送先クライアントとの間で一対多でコネクションを確立する場合に比較して、システムのデータ送信・転送制御が簡素化される。
【００４０】
本発明においては、転送元クライアントと転送先クライアントとの間におけるコネクションが切断される若しくは転送元クライアント又は転送先クライアントがシステムから退出することによって、コネクションが未確立のクライアントが複数存在する場合に、コネクションが未確立の複数のクライアントから、コネクションが確立されるべき複数のクライアントを抽出し、抽出したクライアント間でコネクションを確立させる。
【００４１】
本発明においては、転送元クライアントにてデータを受信することが不可能である場合に、サーバは前記転送元クライアントとコネクションを確立した転送先クライアントに前記コネクションを強制的に切断させる。そのためデータを受信することが不可能な前記転送元クライアントをデータ配信システムから除外し、データ配信システムを保全することができる。
【００４２】
本発明においては、例えば転送先クライアントにてデータを受信することが不可能である場合に、転送元クライアントは、データの受信が不可能な転送先クライアントを示す情報を前記サーバへ送信し、転送先クライアントとの間で確立されたコネクションを強制的に切断する。そのためデータを受信することが不可能な転送先クライアントをデータ配信システムから除外し、データ配信システムを保全することができる。
【００４３】
本発明においては、クライアント同士の対応関係を示す情報がサーバに記憶してある。クライアントがサーバに接続した場合、すなわちクライアントがデータ配信システムに入室した場合に、サーバに接続したクライアントを示す情報をサーバに記憶し、またクライアントがサーバとの接続を切断した場合、すなわちクライアントがデータ配信システムから退室した場合に、切断したクライアントを示す情報を前記サーバに記憶した情報から削除して、前記対応関係を示す情報を変更する。
【発明の効果】
【００４４】
本発明にあっては、同一の通信網に接続している複数のクライアントの内、一のクライアントを転送元クライアントに指定し、他のクライアントを転送先クライアントに指定する。そしてサーバからデータを受信した転送元クライアントが、転送先クライアントへデータを転送する。そのためデータを配信するシステムが大規模化しても、システムは簡素な制御でデータを送信・転送することができ、サーバから転送元クライアントへ効率良くデータを配信し、転送元クライアント及び転送先クライアント間でルータを経由させることなく、迅速にデータを転送することができる。データはルータを経由せずに転送されるので、転送先クライアントへ短時間で転送される。また通信網を識別する識別情報をサーバにて記憶・管理した場合には、クライアントとサーバとの接続／切断などによってデータ配信システムの構成が変更されても、容易に転送元クライアント及び転送先クライアントを再指定することができる。
【００４５】
本発明にあっては、サーバに接続された複数のクライアントの中から転送元クライアントを指定し、該転送元クライアントと最速の通信速度で通信することができるクライアントを転送先クライアントに指定する。そのためデータを配信するシステムが大規模化しても、システムは簡素な制御でデータを送信・転送することができ、サーバから各転送元クライアントへ効率良くデータを配信し、転送元クライアント及び転送先クライアント間で迅速にデータを転送することができる。またサーバに接続された複数のクライアント間の通信速度をサーバにて記憶・管理した場合には、クライアントとサーバとの接続／切断などによってデータ配信システムの構成が変更されても、転送元クライアント及び転送先クライアントを容易に再指定することができる。
【００４６】
本発明にあっては、サーバに接続された一のクライアント及び他のクライアントの間の通信速度が予め設定された閾値以上である場合に、両クライアントをそれぞれ転送元クライアント及び転送先クライアントに指定し、転送元クライアント及び転送先クライアントを示す情報をサーバにて記憶する。そのためデータを配信するシステムが大規模化しても、システムは簡素な制御でデータを送信・転送することができ、サーバから各転送元クライアントへ効率良くデータを配信し、転送元クライアント及び転送先クライアント間で迅速にデータを転送することができる。また新たなクライアントがサーバに接続し、システムの構成が変更されても、新たなクライアントと既存のクライアントとの通信速度を閾値と比較するだけで、転送元クライアント及び転送先クライアントを再指定するか否かを判定することができ、転送元クライアント及び転送先クライアントを容易に再指定することができる。
【００４７】
本発明にあっては、サーバと一のクライアントとの通信速度が、該一のクライアントと他のクライアントとの通信速度よりも遅い場合に、一のクライアントを転送先クライアントに指定し、他のクライアントを転送元クライアントに指定する。そのためデータ配信システムが大規模化しても、該システムは簡素な制御でデータを送信・転送することができ、サーバから各転送元クライアントへ効率良くデータを配信し、転送元クライアント及び転送先クライアント間で迅速にデータを転送することができる。また転送元クライアント及び転送先クライアントを示す情報をサーバにて記憶・管理した場合に、クライアントとサーバとの接続／切断などによってシステムの構成が変更されても、転送元クライアント及び転送先クライアントを容易に再指定することができる。
【図面の簡単な説明】
【００４８】
【図１】実施の形態に係るデータ配信システムを略示する概念図である。
【図２】サーバの構成を略示するブロック図である。
【図３】クライアントの構成を略示するブロック図である。
【図４】サーバの記憶部に記憶された通信経路情報テーブルの一例を示す概念図である。
【図５】クライアントの制御部によるサーバとのコネクションの確立を説明するフローチャートである。
【図６】サーバの制御部によるクライアントとの接続処理を説明するフローチャートである。
【図７】サーバの制御部による選定処理の第１実施例を説明するフローチャートである。
【図８】サーバの制御部によるグルーピング処理を説明するフローチャートである。
【図９】サーバの制御部によるグループ優先処理を説明するフローチャートである。
【図１０】サーバの制御部による閾値処理を説明するフローチャートである。
【図１１】孤立番号ｉ又は孤立番号ｊに対応するクライアントの制御部による通信速度の算出処理を説明するフローチャートである。
【図１２】一のクライアントから通信速度の計測要求を受信した他のクライアントの制御部における処理を説明するフローチャートである。
【図１３】サーバの制御部による選定処理の第２実施例を説明するフローチャートである。
【図１４】サーバの制御部による最速処理を説明するフローチャートである。
【図１５】サーバの制御部による選定処理の第３実施例を説明するフローチャートである。
【図１６】サーバの制御部におけるサーバ・クライアント通信速度計測処理を説明するフローチャートである。
【図１７】サーバの制御部におけるクライアント間通信経路決定処理を説明するフローチャートである。
【図１８】クライアントの制御部によるコネクション確立処理を説明するフローチャートである。
【図１９】転送元クライアント及び転送先クライアント間でのコネクションの確立を示す概念図である。
【図２０】転送元クライアントにて共有データが更新された場合における転送元クライアントの制御部による更新処理を説明するフローチャートである。
【図２１】更新データを受信した場合における転送先クライアントの制御部による共有データの更新処理を説明するフローチャートである。
【図２２】転送先クライアントにて共有データが更新された場合における転送先クライアントの制御部による更新処理を説明するフローチャートである。
【図２３】転送先クライアントから転送先ＩＰアドレスと更新データとを受信した場合における転送元クライアントの制御部による更新処理を説明するフローチャートである。
【図２４】更新データを受信した場合におけるサーバの制御部による共有データの更新処理を説明するフローチャートである。
【図２５】サーバから更新データを受信した場合における転送元クライアントの制御部による共有データの更新処理を説明するフローチャートである。
【図２６】転送元クライアントがデータ配信システムから退出する場合において、転送元クライアントの制御部が実行する退出処理を説明するフローチャートである。
【図２７】転送元クライアントから退出データを受信した場合における転送先クライアントの制御部による処理を説明するフローチャートである。
【図２８】サーバの制御部による転送元クライアントとのコネクションを切断する処理について説明するフローチャートである。
【図２９】転送先クライアントがデータ配信システムから退出する場合において、転送先クライアントの制御部が実行する退出処理を説明するフローチャートである。
【図３０】転送先クライアントから退出データを受信した場合における転送元クライアントの制御部が実行する処理を説明するフローチャートである。
【図３１】転送元クライアントから転送先クライアントの退出データを受信した場合におけるサーバの制御部が実行する処理を説明するフローチャートである。
【図３２】孤立クライアントの制御部によるデータ配信システムからの退出処理を説明するフローチャートである。
【図３３】孤立クライアントから退出データを受信したサーバの制御部が実行する処理を説明するフローチャートである。
【図３４】通信経路情報テーブル作成後に新たなクライアントがサーバに接続された場合に、サーバの制御部が実行する処理を説明するフローチャートである。
【図３５】転送先クライアントにて共有データが更新され、転送元クライアントに障害が発生している場合に、転送先クライアントの制御部が実行する障害対策処理を説明するフローチャートである。
【図３６】転送先クライアントにて共有データが更新され、転送元クライアントに障害が発生している場合に、サーバの制御部が実行する削除処理を説明するフローチャートである。
【図３７】転送元クライアントにて共有データが更新され、転送先クライアントに障害が発生している場合に、転送元クライアントの制御部が実行する障害対策処理を説明するフローチャートである。
【図３８】転送元クライアントにて共有データが更新され、転送先クライアントに障害が発生している場合に、サーバの制御部が実行する削除処理を説明するフローチャートである。
【図３９】サーバが更新データを送信した転送元クライアントに障害が発生している場合に、サーバの制御部が実行する削除処理を説明するフローチャートである。
【図４０】転送元クライアントとのコネクションを強制的に切断する指令を受信した場合における転送先クライアントの制御部が実行する切断処理を説明するフローチャートである。
【図４１】転送元クライアントから更新データを転送された転送先クライアントに障害が発生している場合に、サーバの制御部が実行する削除処理を説明するフローチャートである。
【図４２】転送先クライアントから更新データを受信したことを示す応答がない場合に、転送元クライアントの制御部が実行する切断処理を説明するフローチャートである。
【発明を実施するための形態】
【００４９】
以下本発明を実施の形態に係るデータ配信システムを示す図面に基づいて詳述する。図１はデータ配信システムを略示する概念図である。
【００５０】
図において１はデータを送受信するサーバ１であり、該サーバ１はネットワーク５０に接続している。該ネットワーク５０には複数のルータ２１〜２５が接続しており、ルータ２１にはスイッチ３１を介して二つのクライアント１１、１２が接続している。またルータ２２にはクライアント１３が接続しており、ルータ２３にはスイッチ３２を介して二つのクライアント１４、１５が接続している。ルータ２４にはクライアント１６が接続しており、ルータ２５にはスイッチ３３を介してクライアント１７〜１９が接続している。サーバ１及びクライアント１１〜１９の通信はＩＰｖ４（Internet Protocol version 4）に基づいて行われている。なおサーバ１及びクライアント１１〜１９の通信は、ＩＰｖ６（Internet Protocol version 6）に基づいて行われる通信など、エンドツーエンドで実行される他の通信プロトコルに基づいても良い。
【００５１】
図２はサーバの構成を略示するブロック図である。
サーバ１は、データ通信を制御する制御部１ａと、ユーザの操作を受け付ける操作部１ｂと、ユーザに向けて情報を表示する表示部１ｃと、ネットワーク５０に接続するＩ／Ｆ（InterFace）部１ｄと、情報を記憶する記憶部１ｅとを備える。サーバ１の各構成要素は共通バスにて相互に接続されており、制御部１ａには操作部１ｂ又はＩ／Ｆ部１ｄから制御指令が入力される。
【００５２】
制御部１ａは、演算を行うＣＰＵ（Central Processing Unit）、通信制御プログラムを格納したＲＯＭ（Read Only Memory）、一時的にデータを記憶するＲＡＭ（Randam Access Memory）及びタイマなどを備える。ＣＰＵはＲＯＭに格納された制御プログラムに基づいて、ＲＡＭを作業領域として制御指令などに基づいて演算を実行し、演算結果を表示部１ｃ、記憶部１ｅ及びＩ／Ｆ部１ｄへ出力する。ＲＡＭには後述する各変数及び閾値などが所定のタイミングで設定される。制御部１ａは、例えばクライアント１１〜１９とサーバ１との通信速度を計測するためにタイマを使用する。
【００５３】
操作部１ｂはユーザの操作を受け付けて、制御部１ａへ制御指令を出力する。表示部１ｃは制御部１ａからの指令に基づいて、文字、図形などを表示する。記憶部１ｅはＨＤＤ（Hard Disc Drive）などの磁気ディスク記憶装置であり、記憶部１ｅには、クライアント１１〜１９と共有する共有データ及びクライアント１１〜１９間でデータを転送するための通信経路を示す通信経路情報テーブルが記憶してある。共有データ及び通信経路情報テーブルは、制御部１ａからの指令によって更新される。なお記憶部１ｅは磁気ディスク記憶装置に限らず、半導体メモリで構成されていても良い。
【００５４】
図３はクライアントの構成を略示するブロック図である。
クライアント１１〜１９は、データ通信を制御する制御部１１ａ〜１９ａと、ユーザの操作を受け付ける操作部１１ｂ〜１９ｂと、ユーザに向けて情報を表示する表示部１１ｃ〜１９ｃと、ルータ２１〜２５又はスイッチ３１〜３３に接続するＩ／Ｆ部１１ｄ〜１９ｄと、情報を記憶する記憶部１１ｅ〜１９ｅとを備える。クライアント１１〜１９の各構成要素は共通バスにて相互に接続されており、制御部１１ａ〜１９ａには操作部１１ｂ〜１９ｂ又はＩ／Ｆ部１１ｄ〜１９ｄから制御指令が入力される。
【００５５】
制御部１１ａ〜１９ａは、演算を行うＣＰＵ、通信制御プログラムを格納したＲＯＭ、一時的にデータを記憶するＲＡＭ及びタイマなどを備える。ＣＰＵはＲＯＭに格納された制御プログラムに基づいて、ＲＡＭを作業領域として制御指令などに基づいて演算を実行し、演算結果を表示部１１ｃ〜１９ｃ、記憶部１１ｅ〜１９ｅ及びＩ／Ｆ部１１ｄ〜１９ｄへ出力する。制御部１１ａ〜１９ａは、例えばクライアント１１〜１９相互間の通信速度又はクライアント１１〜１９とサーバ１との通信速度を計測するためにタイマを使用する。
【００５６】
操作部１１ｂ〜１９ｂはユーザの操作を受け付けて、制御部１１ａ〜１９ａへ制御指令を出力する。表示部１１ｃ〜１９ｃは制御部１１ａ〜１９ａからの指令に基づいて、文字、図形などを表示する。記憶部１１ｅ〜１９ｅはＨＤＤなどの磁気ディスク記憶装置であり、記憶部１１ｅ〜１９ｅには、サーバ１と共有する共有データが記憶してある。共有データは、操作部１１ｂ〜１９ｂからの指令によって更新される。なお記憶部１１ｅ〜１９ｅは磁気ディスク記憶装置に限らず、半導体メモリで構成されていても良い。
【００５７】
図４はサーバの記憶部に記憶された通信経路情報テーブルの一例を示す概念図である。
通信経路情報テーブルには、クライアント１１〜１９のエントリーナンバー（Ｎｏ．）、クライアント１１〜１９のＩＰアドレス、転送先ＩＰアドレス、グループ情報及び制御情報などが含まれる。エントリーナンバーはサーバ１に接続されたクライアント１１〜１９に付与される番号であり、本実施例においては各クライアント１１〜１９に１１〜１９の番号が付与される。
【００５８】
ＩＰアドレスは、クライアント１１〜１９からサーバ１への接続要求に含まれており、クライアント１１〜１９がサーバ１に接続された場合に、通信経路情報テーブルに記録される。本実施例においては、クライアント１１〜１９のＩＰアドレスは、クラスフルアドレスのＣクラスに対応しており、ＩＰアドレスの先頭から２４ビットがネットワークアドレス部となっている。またＩＰアドレスはエントリーナンバーに対応している。転送先ＩＰアドレスは、一のクライアントをデータを転送する転送元クライアントとし、他のクライアントを転送元クライアントから転送されたデータを受信する転送先クライアントとした場合に、転送元クライアントのＩＰアドレスに対応させて、通信経路情報テーブルに記録される転送先クライアントのＩＰアドレスである。
【００５９】
グループ情報は、クライアント１１〜１９が接続しているサブネットワーク（通信網）を識別するための情報であり、同一のサブネットワークに接続している各クライアント１１〜１９には同一のグループ情報が付与される。本実施例においては、クライアント１１とクライアント１２とはスイッチ３１によって同一のサブネットワークに接続しており、ネットワークアドレス部が一致するので、同一のグループ情報が付与される。またクライアント１４とクライアント１５とはスイッチ３２によって同一のサブネットワークに接続しており、ネットワークアドレス部が一致するので、同一のグループ情報が付与され、またクライアント１７〜１９はスイッチ３３によって同一のサブネットワークに接続しており、ネットワークアドレス部が一致するので、同一のグループ情報が付与される（図４参照）。なお本実施例におけるグループ情報は番号であるが、テキスト、記号その他の識別子でも良い。
【００６０】
制御情報は、本発明に係るデータ配信システムの通信制御に使用される種々の情報であり、例えばクライアント１１〜１９のＩＰアドレスのサブネットマスク、サーバ１とクライアント１１〜１９との間の通信速度、クライアント１１〜１９間の通信速度などが含まれる。
【００６１】
前記サーバ１はクライアントからの接続要求に応答し、クライアント１１〜１９との間でデータの送受信が可能な状態（コネクション）を確立する。図５はクライアントの制御部によるサーバとのコネクションの確立を説明するフローチャートである。
【００６２】
クライアント１１〜１９の制御部１１ａ〜１９ａは、ＲＯＭに格納された制御プログラム又は操作部１１ｂ〜１９ｂなどから、サーバ１との間で共有データ及び後述する更新データの送受信が可能な状態（コネクション）を確立することを指示されたか否かを判定し（ステップＳ１）、サーバ１とコネクションを確立することを指示されるまで待機する（ステップＳ１：ＮＯ）。サーバ１とコネクションを確立することを指示された場合に（ステップＳ１：ＹＥＳ）、クライアント１１〜１９の制御部１１ａ〜１９ａはサーバ１へ接続要求を送信する（ステップＳ２）。なおサーバ１への接続要求には接続を要求したクライアント１１〜１９のＩＰアドレスとサブネットマスクとが含まれる。
【００６３】
そしてクライアント１１〜１９の制御部１１ａ〜１９ａはサーバ１から応答があったか否か判定し（ステップＳ３）、応答があるまで待機する（ステップＳ３：ＮＯ）。サーバ１から応答があった場合に（ステップＳ３：ＹＥＳ）、クライアント１１〜１９の制御部１１ａ〜１９ａはサーバ１への接続許可を示す信号を送信し（ステップＳ４）、サーバ１とのコネクションを確立する（ステップＳ５）。なおサーバ１からの応答には、クライアント１１〜１９からの接続要求に対する接続許可とクライアント１１〜１９への接続要求とが含まれる。
【００６４】
図６はサーバの制御部によるクライアントとの接続処理を説明するフローチャートである。
サーバ１の制御部１ａは、クライアント１１〜１９からの接続要求を受信したか否かを判定し（ステップＳ１１）、クライアント１１〜１９からの接続要求を受信するまで待機する（ステップＳ１１：ＮＯ）。クライアント１１〜１９からの接続要求にはクライアント１１〜１９のエントリーナンバー、ＩＰアドレス及びサブネットマスクなどが含まれる。クライアント１１〜１９からの接続要求を受信した場合に（ステップＳ１１：ＹＥＳ）、サーバ１の制御部１ａは接続要求を受信したクライアント１１〜１９のエントリーナンバー、ＩＰアドレス及びサブネットマスクを通信経路情報テーブルに記録する（ステップＳ１２）。なおエントリーナンバーは、クライアント１１〜１９からの接続要求を受信した順にＩＰアドレスと共に通信経路情報テーブルに記録され、エントリーナンバーとＩＰアドレスとは対応する。
【００６５】
そしてサーバ１の制御部１ａは、エントリーナンバー及びＩＰアドレスを通信経路情報テーブルに記録したクライアント１１〜１９に応答する（ステップＳ１３）。該応答にはクライアント１１〜１９からの接続要求に対する接続許可とクライアント１１〜１９への接続要求とが含まれる。次にサーバ１の制御部１ａはクライアント１１〜１９から接続許可を受信したか否かを判定し（ステップＳ１４）、クライアント１１〜１９から接続許可を受信するまで待機する（ステップＳ１４：ＮＯ）。クライアント１１〜１９から接続許可を受信した場合に（ステップＳ１４：ＹＥＳ）、サーバ１の制御部１ａはクライアント１１〜１９とのコネクションを確立する（ステップＳ１５）。なおサーバ１はクライアント１１〜１９から接続要求を受信した場合に（ステップＳ１１）、クライアント１１〜１９の認証を行い、認証されたクライアント１１〜１９との間でのみステップＳ１２以下の処理を実行しても良い。
【００６６】
サーバ１へ接続要求を送信したクライアント１１〜１９のエントリーナンバー及びＩＰアドレスを通信経路情報テーブルに記録したサーバ１は、サーバ１から送信したデータを転送する転送元クライアント及び該転送元クライアントから転送されたデータを受信する転送先クライアントを選定する選定処理を実行する。
【００６７】
図７はサーバの制御部による選定処理の第１実施例を説明するフローチャートである。なお初期状態において通信経路情報テーブルには情報が記録されていないものとする。
サーバ１の制御部１ａは、同一のサブネットワークに接続されたクライアントに同一のグループ情報を付与するグルーピング処理（ステップＳ２０）、同一のサブネットワークに接続されているクライアントから、優先的に転送元クライアント及び転送先クライアントを選定するグループ優先処理（ステップＳ３０）、二つのクライアント間の通信速度（応答速度）が予め設定された閾値以上の場合に、両クライアントを転送元クライアント及び転送先クライアントに選定する閾値処理を順に実行し（ステップＳ４０）、転送先クライアントのＩＰアドレスを転送元クライアントに送信する（ステップＳ５０）。なお閾値処理（ステップＳ４０）を行わずに、グループ優先処理（ステップＳ３０）を行った後に、転送先クライアントのＩＰアドレスを転送元クライアントに送信しても良い（ステップＳ５０）。
【００６８】
図８はサーバの制御部によるグルーピング処理を説明するフローチャートである。
サーバ１の制御部１ａは、グループ情報を示す変数ｎをＲＡＭに設定して変数ｎに初期値（本実施例にあっては１）を記録し（ステップＳ２０１）、エントリナンバーを示す変数ＸをＲＡＭに設定して変数Ｘに初期値（本実施例にあっては１１）を記録する（ステップＳ２０２）。そしてサーバ１の制御部１ａは、エントリナンバーＸ（Ｎｏ．Ｘ）に対応するグループ情報にｎを設定する（ステップＳ２０３）。次にサーバ１の制御部１ａはＲＡＭに設定した変数ＹにＸ＋１を記録する（ステップＳ２０４）。そしてサーバ１の制御部１ａは、変数Ｙがエントリナンバーの最大値（ＭＡＸＮｏ．）よりも大きいか否かを判定する（ステップＳ２０５）。変数ＹがＭＡＸＮｏ．よりも大きい場合には（ステップＳ２０５：ＹＥＳ）、後述するＮｏ．ＸとエントリナンバーＹ（Ｎｏ．Ｙ）とのＩＰアドレスのネットワークアドレス部が一致するか否かを判定する処理、すなわちＮｏ．Ｘに対応するクライアントとＮｏ．Ｙに対応するクライアントとが同一のサブネットワークに接続されているか否かを判定する処理を終了し、Ｘをインクリメントすべき状態にあり、サーバ１の制御部１ａは後述するステップＳ２１１へ処理を進める。
【００６９】
変数Ｙがエントリナンバーの最大値（ＭＡＸＮｏ．）以下である場合には（ステップＳ２０５：ＮＯ）、Ｎｏ．Ｙに対応するグループ情報が未設定であるか否かを判定する（ステップＳ２０６）。Ｎｏ．Ｙに対応するグループ情報が設定されている場合には（ステップＳ２０６：ＮＯ）、サーバ１の制御部１ａは後述するステップＳ２０９へ処理を進める。
【００７０】
Ｎｏ．Ｙに対応するグループ情報が未設定である場合には（ステップＳ２０６：ＹＥＳ）、サーバ１の制御部１ａは、記憶部１ｅの通信経路情報テーブルにアクセスして、Ｎｏ．Ｘ及びＮｏ．ＹのＩＰアドレス及びサブネットマスクを参照し、Ｎｏ．Ｘ及びＮｏ．ＹのＩＰアドレスのネットワークアドレス部が一致するか否かを判定する（ステップＳ２０７）。Ｎｏ．Ｘ及びＮｏ．ＹのＩＰアドレスのネットワークアドレス部が一致する場合には（ステップＳ２０７：ＹＥＳ）、サーバ１の制御部１ａは、Ｎｏ．Ｙに対応するグループ情報にｎを設定する（ステップＳ２０８）。
【００７１】
Ｎｏ．Ｘ及びＮｏ．ＹのＩＰアドレスのネットワークアドレス部が一致しない場合には（ステップＳ２０７：ＮＯ）、サーバ１の制御部１ａは変数Ｙをインクリメントし（ステップＳ２０９）、変数ＹがＭＡＸＮｏ．よりも大きいか否かを判定する（ステップＳ２１０）。変数ＹがＭＡＸＮｏ．以下である場合には（ステップＳ２１０：ＮＯ）、サーバ１の制御部１ａは、ステップＳ２０６へ処理を戻す。
【００７２】
変数ＹがＭＡＸＮｏ．よりも大きい場合には（ステップＳ２１０：ＹＥＳ）、Ｎｏ．Ｘよりも大きいＮｏ．Ｙとの比較は全て終了しているので、サーバ１の制御部１ａは変数Ｘをインクリメントし（ステップＳ２１１）、変数ＸがＭＡＸＮｏ．よりも大きいか否かを判定する（ステップＳ２１２）。変数ＸがＭＡＸＮｏ．よりも大きい場合には（ステップＳ２１２：ＹＥＳ）、変数Ｘと変数Ｙとの比較が全て終了しているので、サーバ１の制御部１ａはグルーピング処理を終了し、グループ優先処理（ステップＳ３０、図７参照）へ処理を進める。
【００７３】
変数ＸがＭＡＸＮｏ．以下である場合には（ステップＳ２１２：ＮＯ）、サーバ１の制御部１ａは、Ｎｏ．Ｘに対応するグループ情報は未設定であるか否かを判定する（ステップＳ２１３）。Ｎｏ．Ｘに対応するグループ情報が設定されている場合には（ステップＳ２１３：ＮＯ）、Ｎｏ．ＸとＮｏ．Ｘよりも大きいＮｏ．Ｙとの比較は全て終了しているので、サーバ１の制御部１ａはステップＳ２１１へ処理を戻す。Ｎｏ．Ｘに対応するグループ情報が未設定である場合には（ステップＳ２１３：ＹＥＳ）、サーバ１の制御部１ａは変数ｎをインクリメントし（ステップＳ２１４）、ステップＳ２０３へ処理を戻す。
【００７４】
サーバ１の制御部１ａは上記グルーピング処理の終了後に、グループ優先処理を実行する。図９はサーバの制御部によるグループ優先処理を説明するフローチャートである。
【００７５】
サーバ１の制御部１ａは、グループ情報を示す変数ｎに初期値（本実施例にあっては１）を記録し（ステップＳ３０１）、グループｎ内におけるエントリーナンバーを示す変数Ｘn をＲＡＭに設定して変数Ｘn に初期値（本実施例にあっては１１）を記録する（ステップＳ３０２）。そしてサーバ１の制御部１ａは、Ｎｏ．Ｘn を選択する（ステップＳ３０３）。次にサーバ１の制御部１ａは選択したＮｏ．Ｘn のグループｎ内における次のエントリーナンバーＮｏ．Ｘn ＋１が存在するか否かを判定する（ステップＳ３０４）。Ｎｏ．Ｘn ＋１が存在しない場合に（ステップＳ３０４：ＮＯ）、サーバ１の制御部１ａはＮｏ．Ｘn に対応する転送先ＩＰアドレスにＮｏ．Ｘn のＩＰアドレスを記録する（ステップＳ３０５）。以後、ＩＰアドレスと転送先ＩＰアドレスとが一致するクライアントを孤立クライアントという。そしてサーバ１の制御部１ａはグループ優先処理を終了し、閾値処理（ステップＳ４０、図７参照）へ処理を進める。
【００７６】
次にサーバ１の制御部１ａは、Ｎｏ．Ｘn ＋１が存在する場合、すなわちＮｏ．Ｘn がグループｎ内における最大のエントリーナンバーでない場合に（ステップＳ３０４：ＹＥＳ）、サーバ１の制御部１ａはＮｏ．Ｘn に対応する転送先ＩＰアドレスにＮｏ．Ｘn ＋１のＩＰアドレスを記録し（ステップＳ３０６）、Ｎｏ．Ｘn ＋１に対応する転送先ＩＰアドレスにｎｕｌｌを記録する（ステップＳ３０７）。以後ＩＰアドレスと転送先ＩＰアドレスとに異なるアドレスが記録してあるクライアントを転送元クライアントといい、転送先ＩＰアドレスにｎｕｌｌを記録したクライアントを転送先クライアントという。ステップＳ３０６及びステップＳ３０７の処理によって、グループｎ内において昇順にＮｏ．Ｘn とＮｏ．Ｘn ＋１との対、すなわち同一のサブネット内における転送元クライアント及び転送先クライアントの対が成立する。
【００７７】
そしてサーバ１の制御部１ａは、Ｘn にＸn ＋２を記録し（ステップＳ３０８）、Ｎｏ．Ｘn が、グループｎ内における最大のエントリーナンバーであるか否かを判定する（ステップＳ３０９）。Ｎｏ．Ｘn が、グループｎ内における最大のエントリーナンバーでない場合に（ステップＳ３０９：ＮＯ）、サーバ１の制御部１ａはステップＳ３０３へ処理を戻す。このため本実施例におけるクライアント１９は、クライアント１７及びクライアント１８と同一のサブネットに接続しているが、クライアント１７及びクライアント１８によって転送元クライアント及び転送先クライアントの対が成立するため、孤立クライアントとなる（図４参照）。
【００７８】
Ｎｏ．Ｘn が、グループｎ内における最大のエントリーナンバーである場合に（ステップＳ３０９：ＹＥＳ）、サーバ１の制御部１ａは、ｎをインクリメントし（ステップＳ３１０）、ｎがグループ情報に記録してある値の最大値を超過しているか否か、すなわちすべてのグループについて転送先ＩＰアドレスにアドレス又はｎｕｌｌを記録したか否かを判定する（ステップＳ３１１）。ｎがグループ情報に記録してある値の最大値以下である場合、すなわち転送先ＩＰアドレスにアドレス又はｎｕｌｌを記録していないグループが存在する場合に（ステップＳ３１１：ＮＯ）、サーバ１の制御部１ａはステップＳ３０３へ処理を戻す。ｎがグループ情報に記録してある値の最大値を超過している場合、すなわちすべてのグループについて転送先ＩＰアドレスにアドレス又はｎｕｌｌを記録している場合に（ステップＳ３１１：ＹＥＳ）、サーバ１の制御部１ａはグループ優先処理を終了し、閾値処理（ステップＳ４０、図７参照）へ処理を進める。
【００７９】
次に閾値処理について説明する。図１０はサーバの制御部による閾値処理を説明するフローチャートである。
サーバ１の制御部１ａは、記憶部１ｅにアクセスして通信経路情報テーブルを参照し（ステップＳ４０１）、全ての孤立クライアントに対応するエントリーナンバーを抽出する（ステップＳ４０２）。そしてサーバ１の制御部１ａは、抽出したエントリーナンバーに対応する孤立番号を、昇順に並んだエントリーナンバーに対応させて昇順に、通信経路情報テーブルの制御情報に記録する（ステップＳ４０３）。次にサーバ１の制御部１ａは変数ｉをＲＡＭに設定して変数ｉに最小の孤立番号を記録し（ステップＳ４０４）、孤立番号ｉ＋１が存在するか否か、すなわち孤立番号ｉと対をなし得る連続した孤立番号が存在するか否かを判定する（ステップＳ４０５）。
【００８０】
孤立番号ｉ＋１が存在しない場合、すなわち孤立番号ｉと対をなす連続した孤立番号が存在しない場合に（ステップＳ４０５：ＮＯ）、サーバ１の制御部１ａは記憶部１ｅにアクセスして通信経路情報テーブルを参照し、転送元クライアントに転送先ＩＰアドレスを送信する（ステップＳ５０、図７参照）。孤立番号ｉ＋１が存在する場合、すなわち孤立番号ｉと対をなす連続した孤立番号が存在する場合に（ステップＳ４０５：ＹＥＳ）、サーバ１の制御部１ａはＲＡＭに変数ｊを設定して変数ｊにｉ＋１を記録する（ステップＳ４０６）。
【００８１】
そしてサーバ１の制御部１ａは、孤立番号ｉ又は孤立番号ｊに対応するクライアントに、孤立番号ｉ及び孤立番号ｊに対応する両クライアント間の通信速度（応答速度）の計測を要求する（ステップＳ４０７）。サーバ１の制御部１ａは、孤立番号ｉ又は孤立番号ｊに対応するクライアントから通信速度（応答速度）が返信されたか否かを判定し（ステップＳ４０８）、返信されるまで待機する（ステップＳ４０８：ＮＯ）。孤立番号ｉ又は孤立番号ｊに対応するクライアントから通信速度が返信された場合に（ステップＳ４０８：ＹＥＳ）、サーバ１の制御部１ａは、返信された通信速度が予めＲＡＭに設定された閾値以上であるか否かを判定する（ステップＳ４０９）。なおクライアント間の通信速度（応答速度）を計測する技術としては、パケットの伝達速度の速いＵＤＰを利用したＮＴＰ（Network Time Protocol）による送受信の遅延を考慮した後述する時計同期システムが挙げられる。
【００８２】
返信された通信速度が予めＲＡＭに設定された閾値以上である場合に（ステップＳ４０９：ＹＥＳ）、サーバ１の制御部１ａは孤立番号ｉに対応する転送先ＩＰアドレスに孤立番号ｊに対応するＩＰアドレスを記録（上書き）し（ステップＳ４１０）、孤立番号ｊに対応する転送先ＩＰアドレスに孤立番号ｊにｎｕｌｌを記録（上書き）する（ステップＳ４１１）。このとき孤立番号ｉに対応する孤立クライアントは転送元クライアントとなり、孤立番号ｊに対応する孤立クライアントは転送先クライアントとなる。
【００８３】
そしてサーバ１の制御部１ａは、変数ｉにｉ＋２を記録し（ステップＳ４１２）、孤立番号ｉが孤立番号の最大値よりも大きいか否か、すなわち全ての孤立クライアント相互間の通信速度を計測したか否かを判定する（ステップＳ４１３）。孤立番号ｉが孤立番号の最大値以下である場合、すなわちクライアント間の通信速度が未計測の孤立クライアントが存在する場合に（ステップＳ４１３：ＮＯ）、サーバ１の制御部１ａは、ステップＳ４０５へ処理を戻す。孤立番号ｉが孤立番号の最大値よりも大きい場合、すなわち全ての孤立クライアント相互間の通信速度を計測した場合に（ステップＳ４１３：ＹＥＳ）、サーバ１の制御部１ａは閾値処理を終了して記憶部１ｅにアクセスし、通信経路情報テーブルを参照して、転送元クライアントに転送先ＩＰアドレスを送信する（ステップＳ５０、図７参照）。
【００８４】
前述したステップＳ４０９において、返信された通信速度が予めＲＡＭに設定された閾値未満である場合に（ステップＳ４０９：ＮＯ）、サーバ１の制御部１ａは変数ｊをインクリメントし（ステップＳ４１４）、孤立番号ｊが孤立番号の最大値よりも大きいか否か、すなわち孤立番号ｉに対応するクライアントと孤立番号ｉよりも値の大きい孤立番号ｊに対応するクライアントとの間での通信速度の計測が終了したか否かを判定する（ステップＳ４１５）。孤立番号ｊが孤立番号の最大値以下である場合に（ステップＳ４１５：ＮＯ）、サーバ１の制御部１ａはステップＳ４０７へ処理を戻す。孤立番号ｊが孤立番号の最大値よりも大きい場合に（ステップＳ４１５：ＹＥＳ）、サーバ１の制御部１ａは、ステップＳ４１２へ処理を進める。
【００８５】
ステップＳ４０７において、孤立番号ｉ及び孤立番号ｊに対応する両クライアント間の通信速度の計測を要求されたクライアントは、両クライアント間の通信速度を算出する。図１１は孤立番号ｉ又は孤立番号ｊに対応するクライアントの制御部による通信速度の算出処理を説明するフローチャートである。
【００８６】
孤立番号ｉ及び孤立番号ｊに対応する両クライアントの一方（一のクライアント）の制御部は、サーバ１から、一のクライアントと孤立番号ｉ及び孤立番号ｊに対応する両クライアントの他方（他のクライアント）との間の通信速度を計測することを要求されたか否かを判定し（ステップＳ４２１）、該要求があるまで待機する（ステップＳ４２１：ＮＯ）。前記要求があった場合に（ステップＳ４２１：ＹＥＳ）、一のクライアントの制御部は他のクライアントへ通信速度を計測することを要求する（ステップＳ４２２）。そして一のクライアントの制御部は他のクライアントから応答があったか否かを判定し（ステップＳ４２３）、応答があるまで待機する（ステップＳ４２３：ＮＯ）。
【００８７】
他のクライアントから応答があった場合に（ステップＳ４２３：ＹＥＳ）、一のクライアントの制御部は、一のクライアントが他のクライアントに要求した時点の時刻、他のクライアントからの応答に含まれており、他のクライアントが一のクライアントからの要求を受信した時点の時刻及び他のクライアントが応答を送信した時点の時刻、一のクライアントが他のクライアントからの応答を受信した時点の時刻並びに一のクライアント及び他のクライアント間の遅延などに基づいて一のクライアントと他のクライアントとの間の通信速度を算出する（ステップＳ４２４）。
【００８８】
なお一のクライアントの制御部は他のクライアントから応答があった場合に、他のクライアントからの応答に含まれており、他のクライアントが一のクライアントからの要求を受信した時点の時刻及び他のクライアントが応答した時点の時刻、他のクライアントからの応答を受信した時点の時刻を自身のＲＡＭに記録する。また一のクライアント及び他のクライアント間の遅延は、一のクライアントのＲＡＭに予め設定されているものとする。
【００８９】
クライアント間の通信速度を計測する技術としては、パケットの伝達速度の速いＵＤＰを利用したＮＴＰによる送受信の遅延を考慮した時計同期システムが挙げられる。具体的には一のクライアント及び他のクライアント間の遅延が両方向において等しい場合に、一のクライアントが他のクライアントに要求した時点の時刻及び他のクライアントが応答を送信した時点の時刻の合算値と、他のクライアントが一のクライアントからの要求を受信した時点の時刻及び他のクライアントが応答を送信した時点の時刻の合算値との差を算出し、該差の半分の値を一のクライアント及び他のクライアントが有するタイマの時点の時刻の差とし、該差を一のクライアント又は他のクライアントの時点の時刻に加算又は減算して通信速度を求める。ＵＤＰを利用することで同報通信が可能となり、一のクライアントと複数の他のクライアントとの間の通信速度を迅速に算出することができる。
そして一のクライアントの制御部は、サーバ１に応答する（ステップＳ４２５）。
【００９０】
ステップＳ４２２において、一のクライアントから計測要求を受信した他のクライアントは、一のクライアントに応答する。
図１２は一のクライアントから通信速度の計測要求を受信した他のクライアントの制御部における処理を説明するフローチャートである。
他のクライアントの制御部は、ステップＳ４２２にて、一のクライアントと他のクライアントとの通信速度の計測を要求されたか否かを判定し（ステップＳ４３１）、該要求があるまで待機する（ステップＳ４３１：ＮＯ）。前記要求があった場合に（ステップＳ４３１：ＹＥＳ）、他のクライアントの制御部は前記要求を受信した時点の時刻及び応答時の時点の時刻を示す情報と共に応答する（ステップＳ４３２）。
【００９１】
図１３はサーバの制御部による選定処理の第２実施例を説明するフローチャートである。なお初期状態において通信経路情報テーブルには情報が記録されていないものとする。
サーバ１の制御部１ａは、同一のサブネットワークに接続されたクライアントに同一のグループ情報を付与するグルーピング処理（ステップＳ２０）、同一のサブネットワークに接続されているクライアントから、優先的に転送元クライアント及び転送先クライアントを選定するグループ優先処理（ステップＳ３０）、二つのクライアント間の通信速度が最速である場合に、両クライアントを転送元クライアント及び転送先クライアントに選定する最速処理（ステップＳ６０）を順に実行し、転送先クライアントのＩＰアドレスを転送元クライアントに送信する（ステップＳ５０）。なお最速処理（ステップＳ６０）を行わずに、グループ優先処理（ステップＳ３０）を行った後に、転送先クライアントのＩＰアドレスを転送元クライアントに送信しても良い（ステップＳ５０）。
【００９２】
図１４はサーバの制御部による最速処理を説明するフローチャートである。
【００９３】
サーバ１の制御部１ａは、記憶部１ｅにアクセスして通信経路情報テーブルを参照し（ステップＳ６０１）、全ての孤立クライアントに対応するエントリーナンバーを抽出する（ステップＳ６０２）。そしてサーバ１の制御部１ａは、抽出したエントリーナンバーに対応する孤立番号を、昇順に並んだエントリーナンバーに対応させて昇順に、通信経路情報テーブルの制御情報に記録する（ステップＳ６０３）。次にサーバ１の制御部１ａは変数ｉをＲＡＭに設定して変数ｉに最小の孤立番号を記録し（ステップＳ６０４）、孤立番号ｉ＋１が存在するか否か、すなわち孤立番号ｉと対をなし得る連続した孤立番号が存在するか否かを判定する（ステップＳ６０５）。
【００９４】
孤立番号ｉ＋１が存在しない場合に（ステップＳ６０５：ＮＯ）、サーバ１の制御部１ａは最速処理を終了し、記憶部１ｅにアクセスして通信経路情報テーブルを参照し、転送元クライアントに転送先ＩＰアドレスを送信する（ステップＳ５０、図１３参照）。孤立番号ｉ＋１が存在する場合に（ステップＳ６０５：ＹＥＳ）、サーバ１の制御部１ａはＲＡＭに変数ｊを設定して変数ｊにｉ＋１を記録する（ステップＳ６０６）。
【００９５】
そしてサーバ１の制御部１ａは、孤立番号ｉ又は孤立番号ｊに対応するクライアントに、孤立番号ｉ及び孤立番号ｊに対応する両クライアント間の通信速度の計測を要求する（ステップＳ６０７）。このとき孤立番号ｉ及び孤立番号ｊに対応する両クライアントによって、両クライアント間の通信速度が計測される（図１１及び図１２参照）。孤立番号ｉ又は孤立番号ｊに対応するクライアントから通信速度が返信されたか否かを判定し（ステップＳ６０８）、返信されるまで待機する（ステップＳ６０８：ＮＯ）。孤立番号ｉ又は孤立番号ｊに対応するクライアントから通信速度が返信された場合に（ステップＳ６０８：ＹＥＳ）、サーバ１の制御部１ａは通信速度を、孤立番号ｉ又は孤立番号ｊに対応する通信情報テーブルの制御情報に記録し（ステップＳ６０９）、変数ｊをインクリメントする（ステップＳ６１０）。次にサーバ１の制御部１ａは、孤立番号ｊが孤立番号の最大値よりも大きいか否か、すなわち孤立番号ｉに対応するクライアントと孤立番号ｉよりも大きな番号である孤立番号ｊに対応する全てのクライアントとの間において、通信速度を計測したか否かを判定する（ステップＳ６１１）。孤立番号ｊが孤立番号の最大値以下である場合、すなわち孤立番号ｉに対応するクライアントとの間で通信速度が未計測である孤立番号ｊに対応するクライアントが存在する場合に（ステップＳ６１１：ＮＯ）、サーバ１の制御部１ａはステップＳ６０７へ処理を戻す。
【００９６】
孤立番号ｊが孤立番号の最大値よりも大きい場合、すなわち孤立番号ｉに対応するクライアントと孤立番号ｉよりも大きな番号である孤立番号ｊに対応する全てのクライアントとの間において、通信速度を計測した場合に（ステップＳ６１１：ＹＥＳ）、サーバ１の制御部１ａは記憶部１ｅの通信情報テーブルを参照して、最速の通信速度を抽出し（ステップＳ６１２）、孤立番号ｉに対応する転送先ＩＰアドレスに最速の通信速度に対応したＩＰアドレスを記録（上書き）する（ステップＳ６１３）。次にサーバ１の制御部１ａは最速の通信速度に対応したエントリナンバの転送先ＩＰアドレスに、ｎｕｌｌを記録（上書き）する（ステップＳ６１４）。このとき孤立番号ｉに対応する孤立クライアントは転送元クライアントとなり、孤立番号ｊに対応する孤立クライアントは転送先クライアントとなる。
【００９７】
そしてサーバ１の制御部１ａは変数ｉにｉ＋２を記録して（ステップＳ６１５）、孤立番号ｉが孤立番号の最大値よりも大きいか否か、すなわち全ての孤立クライアント間における通信速度を計測し、最速の通信速度に対応する孤立クライアントの対を転送元クライアント及び転送先クライアントとしたか否かを判定する（ステップＳ６１６）。孤立番号ｉが孤立番号の最大値以下である場合、すなわち通信速度を計測していない孤立クライアントの対が存在する場合に（ステップＳ６１６：ＮＯ）、サーバ１の制御部１ａはステップＳ６０５へ処理を戻す。孤立番号ｉが孤立番号の最大値よりも大きい場合、すなわち全ての孤立クライアント間における通信速度を計測し、最速時間に対応する孤立クライアントの対を転送元クライアント及び転送先クライアントとした場合（ステップＳ６１６：ＹＥＳ）に、サーバ１の制御部１ａは最速処理を終了して記憶部１ｅにアクセスし、通信経路情報テーブルを参照して、転送元クライアントに転送先ＩＰアドレスを送信する（ステップＳ５０、図１３参照）。
【００９８】
なおグルーピング処理（ステップＳ２０）及びグループ優先処理（ステップＳ３０）は選定処理の第１実施例と同様であり、その詳細な説明を省略する。
【００９９】
図１５はサーバの制御部による選定処理の第３実施例を説明するフローチャートである。なお初期状態において通信経路情報テーブルには情報が記録されていないものとする。
サーバ１の制御部１ａは、サーバ１及びクライアント間の通信速度を計測するサーバ・クライアント通信速度計測処理（ステップＳ７０）、サーバ１及びクライアント間の通信速度（応答速度）とクライアント間の通信速度（応答速度）とに基づいて、クライアント間の通信経路を決定するクライアント間通信経路決定処理（ステップＳ８０）を順に実行し、転送先クライアントのＩＰアドレスを転送元クライアントに送信する（ステップＳ５０）。
【０１００】
図１６はサーバの制御部におけるサーバ・クライアント通信速度計測処理を説明するフローチャートである。
【０１０１】
図１６に示すように、サーバ１の制御部１ａはサーバ１とクライアントとの通信速度（応答速度）の計測をクライアントに要求する（ステップＳ７０１）。このときサーバ１の制御部１ａはタイマを参照して、サーバ１とクライアントとの通信速度（応答速度）の計測を要求した時点の時刻をＲＡＭに記録する。またクライアントはサーバ１からの要求に対して応答する（ステップＳ４３１及びステップＳ４３２において「一のクライアント」を「サーバ１」に、「他のクライアント」を「クライアント」に読み替えて図１２参照）。サーバ１の制御部１ａはクライアントから応答があったか否かを判定し（ステップＳ７０２）、応答があるまで待機する（ステップＳ７０２：ＮＯ）。クライアントから応答があった場合に（ステップＳ７０２：ＹＥＳ）、サーバ１の制御部１ａは、サーバ１がクライアントに要求した時点の時刻、応答に含まれており、クライアントが要求を受信した時点の時刻及びクライアントが応答を送信した時点の時刻、サーバ１が応答を受信した時点の時刻並びにサーバ１及びクライアント間の遅延などに基づいて第１通信速度を算出する（ステップＳ７０３）。なおサーバ１の制御部１ａはクライアントから応答があった場合に、クライアントが要求を受信した時点の時刻及びクライアントが応答を送信した時点の時刻、サーバ１が応答を受信した時点の時刻をＲＡＭに記録する。またサーバ１及びクライアント間の遅延は、サーバ１のＲＡＭに予め設定されているものとする。なおサーバ１・クライアント間の通信速度を計測する技術としては、パケットの伝達速度の速いＵＤＰを利用したＮＴＰによる送受信の遅延を考慮した時計同期システムが挙げられる。
【０１０２】
そしてサーバ１の制御部１ａは、算出した第１通信速度（応答速度）を、応答したクライアントに対応する通信経路情報テーブルの制御情報に記録する（ステップＳ７０４）。そしてサーバ１の制御部１ａは、サーバ１と全てのクライアントとの第１通信速度（応答速度）を記録したか否かを判定する（ステップＳ７０５）。
【０１０３】
第１通信速度（応答速度）を記録していないクライアントが存在する場合（ステップＳ７０５：ＮＯ）に、サーバ１の制御部１ａはステップＳ７０１に処理を戻す。サーバ１と全てのクライアントとの第１通信速度（応答速度）を記録した場合（ステップＳ７０５：ＹＥＳ）に、サーバ１の制御部１ａはサーバ１・クライアント通信速度計測処理を終了し、クライアント間通信経路決定処理を実行する（ステップＳ８０、図１５参照）。
【０１０４】
図１７はサーバの制御部におけるクライアント間通信経路決定処理を説明するフローチャートである。
【０１０５】
サーバ１の制御部１ａは、各クライアントとサーバ１との第１通信速度（応答速度）の全てが、ＲＡＭに設定された所定速度以上であるか否かを判定する（ステップＳ８０１）。各クライアントとサーバ１との第１通信速度（応答速度）の全てが所定速度以上である場合に（ステップＳ８０１：ＹＥＳ）、サーバ１の制御部１ａは、前述したグルーピング処理（ステップＳ２０）、グループ優先処理（ステップＳ３０）及び最速処理（ステップＳ６０）を順に実行する。なお最速処理（ステップＳ６０）に代えて、閾値処理（ステップＳ４０）を実行しても良い。そしてサーバ１の制御部１ａはクライアント間通信経路決定処理を終了して記憶部１ｅにアクセスし、通信経路情報テーブルを参照して、転送元クライアントに転送先ＩＰアドレスを送信する（ステップＳ５０、図１５参照）。
【０１０６】
サーバ１との第１通信速度が前記所定速度未満のクライアントが存在する場合に（ステップＳ８０１：ＮＯ）、サーバ１の制御部１ａは所定速度未満の第１通信速度に対応する一のクライアントを抽出し（ステップＳ８０２）、該一のクライアントと他のクライアントとの間の第２通信速度（応答速度）の計測を一のクライアントに要求する（ステップＳ８０３）。このとき一のクライアントにおいて、一のクライアントと他のクライアントとの間の第２通信速度（応答速度）が算出され、一のクライアントは第２通信速度と共にサーバ１に応答する（図１１及び図１２参照）。なおサーバ１の制御部１ａが、第１通信速度が所定速度以上のクライアントを他のクライアントに指定し、一のクライアントは、指定された他のクライアントとの間の第２通信速度を算出する構成であっても良い。
【０１０７】
次にサーバ１の制御部１ａは、一のクライアントから応答があったか否かを判定し（ステップＳ８０４）、応答があるまで待機する（ステップＳ８０４：ＮＯ）。一のクライアントから応答があった場合に（ステップＳ８０４：ＹＥＳ）、サーバ１の制御部１ａは記憶部１ｅにアクセスして、応答に含まれる第２通信速度を他のクライアントに対応する通信経路情報テーブルの制御情報に記録する（ステップＳ８０５）。そしてサーバ１の制御部１ａは、第２通信速度が第１通信速度よりも速いか否かを判定する（ステップＳ８０６）。第２通信速度が第１通信速度よりも遅い場合に（ステップＳ８０６：ＮＯ）、サーバ１の制御部１ａは、一のクライアントと全ての他のクライアントとの間の第２通信速度を制御情報に記録したか否かを判定する（ステップＳ８０７）。一のクライアントと全ての他のクライアントとの間の第２通信速度を制御情報に記録した場合に（ステップＳ８０７：ＹＥＳ）、サーバ１の制御部１ａは、記憶部１ｅにアクセスして一のクライアントに対応する通信経路情報テーブルの制御情報にフラグを立てる（ステップＳ８０９）。そしてサーバ１の制御部１ａは、ステップＳ８０１へ処理を戻す。該フラグは、ステップＳ８０１において無視することを示しており、ステップＳ８０１において、該フラグが存在するクライアントとサーバ１との第１通信速度は判定対象から除外される。
【０１０８】
制御情報に記録していない第２通信速度が存在する場合に（ステップＳ８０７：ＮＯ）、サーバ１の制御部１ａは、記憶部１ｅにアクセスして通信経路情報テーブルを参照し、エントリーナンバーが他のクライアントの次に大きいクライアント（一のクライアントを除く）を新たな他のクライアントに指定し（ステップＳ８０８）、ステップＳ８０３へ処理を戻す。
【０１０９】
ステップＳ８０６において、第２通信速度が第１通信速度よりも速い場合に（ステップＳ８０６：ＹＥＳ）、サーバ１の制御部１ａは、他のクライアントに対応する転送先ＩＰアドレスに一のクライアントのＩＰアドレスを記録し（ステップＳ８１０）、一のクライアントに対応する転送先ＩＰアドレスにｎｕｌｌを記録する（ステップＳ８１１）。このとき他のクライアントは転送元クライアントとなり、一のクライアントは転送先クライアントとなる。そしてサーバ１の制御部１ａはステップＳ８１０及びステップＳ８１１において記録した転送先ＩＰアドレスの記載をロックし（ステップＳ８１２）、ステップＳ８０９へ処理を進める。前記ロックによって、グループ優先処理（ステップＳ３０）、最速処理（ステップＳ６０）及び閾値処理（ステップＳ４０）において、一のクライアント及び他のクライアントは処理対象から除外される。なお前記ロックは必要に応じて解除することができる。
【０１１０】
本発明に係るデータ配信システムは、転送元クライアント及び転送先クライアントを選定する選定処理が終了した場合、サーバ１から転送元クライアントへデータを送信する前に、選定された転送元クライアント及び転送先クライアントの間でコネクションを確立させる。
【０１１１】
図１８はクライアントの制御部によるコネクション確立処理を説明するフローチャート、図１９は転送元クライアント及び転送先クライアント間でのコネクションの確立を示す概念図である。
【０１１２】
クライアントの制御部は、サーバ１から転送先ＩＰアドレスを受信したか否かを判定する（ステップＳ９１）。サーバ１から転送先ＩＰアドレスを受信した場合、すなわち転送元クライアント又は孤立クライアントに指定された場合に（ステップＳ９１：ＹＥＳ）、クライアントの制御部は受信した転送先ＩＰアドレスが自身のＩＰアドレスと一致するか否かを判定する（ステップＳ９２）。受信した転送先ＩＰアドレスが自身のＩＰアドレスと一致する場合、すなわち孤立クライアントに指定された場合に（ステップＳ９２：ＹＥＳ）、孤立クライアントの制御部はコネクション確立処理を終了する。
【０１１３】
受信した転送先ＩＰアドレスが自身のＩＰアドレスと一致しない場合、すなわち転送元クライアントに指定された場合に（ステップＳ９２：ＮＯ）、転送元クライアントの制御部は受信した転送先ＩＰアドレスに基づいて、転送先クライアントへコネクションの接続を要求し（ステップＳ９３）、転送先クライアントから応答があったか否かを判定し（ステップＳ９４）、応答があるまで待機する（ステップＳ９４：ＮＯ）。転送先クライアントから応答があった場合に（ステップＳ９４：ＹＥＳ）、転送元クライアントの制御部は、転送先クライアントへ接続許可を送信し（ステップＳ９５）、転送先クライアントとのコネクションを確立する（ステップＳ９６）。そして転送元クライアントの制御部はコネクションを確立したことを示す情報をサーバ１へ送信する（ステップＳ９７）。なお転送先クライアントからの応答には、転送元クライアントへの接続許可及び接続要求が含まれている。
【０１１４】
前述したステップＳ９１において、サーバ１から転送先ＩＰアドレスを受信していない場合、すなわち転送元クライアント又は孤立クライアントに指定されていない場合に（ステップＳ９１：ＮＯ）、クライアントの制御部は転送元クライアントから接続を要求されているか否かを判定する（ステップＳ９８）。転送元クライアントから接続を要求されていない場合、すなわち転送元クライアント、転送先クライアント及び孤立クライアントのいずれにもに指定されていない場合に（ステップＳ９８：ＮＯ）、クライアントの制御部はステップＳ９１に処理を戻す。
【０１１５】
転送元クライアントから接続を要求されている場合、すなわち転送先クライアントに指定された場合に（ステップＳ９８：ＹＥＳ）、転送先クライアントの制御部は、転送元クライアントへの接続許可及び転送元クライアントへの接続要求と共に転送元クライアントに応答する（ステップＳ９９）。そして転送先クライアントの制御部は転送元クライアントから接続許可を受信したか否かを判定し（ステップＳ１００）、接続許可を受信するまで待機する（ステップＳ１００：ＮＯ）。接続許可を受信した場合に、転送先クライアントの制御部は転送元クライアントとのコネクションを確立する（ステップＳ１０１）。
【０１１６】
本発明に係るデータ配信システムは、一のクライアントにて共有データが更新された場合に、他のクライアント及びサーバ１が所有する共有データを更新する。
図２０は転送元クライアントにて共有データが更新された場合における転送元クライアントの制御部による更新処理を説明するフローチャートである。
【０１１７】
転送元クライアントの制御部は、操作部１１ｂ〜１９ｂからの入力によって共有データが変更され、共有データを更新する指令が入力されたか否かを判定し（ステップＳ１１１）、共有データを更新する指令が入力されるまで待機する（ステップＳ１１１：ＮＯ）。共有データを更新する指令が入力された場合に（ステップＳ１１１：ＹＥＳ）、転送元クライアントの制御部は共有データを更新し（ステップＳ１１２）、自身のＩＰアドレス（転送元ＩＰアドレス）と更新データ（更新した共有データ又は更新前後の共有データの差分データ）とをサーバ１へ送信する（ステップＳ１１３）。このとき転送元ＩＰアドレス及び更新データを受信したサーバ１は、自身の共有データを更新すると共に、通信経路情報テーブルを参照して、受信した転送元ＩＰアドレスを除く転送元ＩＰアドレスを宛先にして更新データを送信する。そして転送元クライアントの制御部は更新データを転送先クライアントへ転送する（ステップＳ１１４）。
【０１１８】
転送先クライアントは更新データを受信した場合に自身が所有する共有データを更新する。
図２１は更新データを受信した場合における転送先クライアントの制御部による共有データの更新処理を説明するフローチャートである。
【０１１９】
転送先クライアントは転送元クライアントから更新データを受信したか否かを判定し（ステップＳ１２１）、更新データを受信するまで待機する（ステップＳ１２１：ＮＯ）。転送元クライアントから更新データを受信した場合に（ステップＳ１２１：ＹＥＳ）、転送先クライアントの制御部は記憶部１ｅにアクセスして共有データを更新する（ステップＳ１２２）。
【０１２０】
図２２は転送先クライアントにて共有データが更新された場合における転送先クライアントの制御部による更新処理を説明するフローチャートである。
【０１２１】
転送先クライアントの制御部は、操作部１１ｂ〜１９ｂからの入力によって共有データが変更され、共有データを更新する指令が入力されたか否かを判定し（ステップＳ１３１）、共有データを更新する指令が入力されるまで待機する（ステップＳ１３１：ＮＯ）。共有データを更新する指令が入力された場合に（ステップＳ１３１：ＹＥＳ）、転送先クライアントの制御部は記憶部１１ｅ〜１９ｅにアクセスして共有データを更新し（ステップＳ１３２）、自身のＩＰアドレス（転送先ＩＰアドレス）と更新データ（更新した共有データ又は更新前後の共有データの差分データ）とを転送元クライアントへ送信する（ステップＳ１３３）。なお転送元クライアントは正常に動作しており、ステップＳ１３３における転送元クライアントへのデータの送信に対し、転送元クライアントは、転送先ＩＰアドレスと更新データとを受信したことを転送先クライアントに応答する。該応答を受信した転送先クライアントは前述した更新処理を終了する。
【０１２２】
転送先ＩＰアドレスと更新データとを受信した転送元クライアントは自身の共有データを更新する。図２３は転送先クライアントから転送先ＩＰアドレスと更新データとを受信した場合における転送元クライアントの制御部による更新処理を説明するフローチャートである。
【０１２３】
転送元クライアントの制御部は、転送先クライアントから転送先ＩＰアドレスと更新データとを受信したか否かを判定し（ステップＳ１４１）、転送先ＩＰアドレスと更新データとを受信するまで待機する（ステップＳ１４１：ＮＯ）。転送先ＩＰアドレスと更新データとを受信した場合に（ステップＳ１４１：ＹＥＳ）、転送元クライアントの制御部は記憶部１１ｅ〜１９ｅにアクセスして共有データを更新し（ステップＳ１４２）、自己のＩＰアドレス（転送元ＩＰアドレス）と更新データとをサーバ１へ送信する（ステップＳ１４３）。このとき転送元ＩＰアドレス及び更新データを受信したサーバ１は、自身の共有データを更新すると共に、通信経路情報テーブルを参照して、受信した転送元ＩＰアドレスを除く転送元ＩＰアドレスを宛先にして更新データを送信する。また転送元クライアントは、転送先ＩＰアドレスと更新データとを受信したことを転送先クライアントに応答する。
【０１２４】
更新データを受信したサーバ１は、自身が所有する共有データを更新する。
図２４は更新データを受信した場合におけるサーバの制御部による共有データの更新処理を説明するフローチャートである。
【０１２５】
サーバ１の制御部１ａは、転送元ＩＰアドレス及び更新データを受信したか否かを判定し（ステップＳ１５１）、転送元ＩＰアドレス及び更新データを受信するまで待機する（ステップＳ１５１：ＮＯ）。転送元ＩＰアドレス及び更新データを受信した場合に（ステップＳ１５１：ＹＥＳ）、サーバ１の制御部１ａは記憶部１ｅにアクセスして共有データを更新する（ステップＳ１５２）。そしてサーバ１の制御部１ａは記憶部１ｅにアクセスして通信経路情報テーブルを参照し（ステップＳ１５３）、転送元ＩＰアドレス（受信した転送元ＩＰアドレスを除く）を宛先にして更新データを送信する（ステップＳ１５４）。
【０１２６】
ステップＳ１５４においてサーバ１が送信した更新データを受信した転送元クライアントは、共有データを更新する。
図２５はサーバから更新データを受信した場合における転送元クライアントの制御部による共有データの更新処理を説明するフローチャートである。
【０１２７】
転送元クライアントの制御部は、サーバ１から更新データを受信したか否かを判定し（ステップＳ１５５）、更新データを受信するまで待機する（ステップＳ１５５：ＮＯ）。サーバ１から更新データを受信した場合に（ステップＳ１５５：ＹＥＳ）、転送元クライアントの制御部は記憶部１１ｅ〜１９ｅにアクセスし、受信した更新データに基づいて共有データを更新する（ステップＳ１５６）。そして転送元クライアントの制御部は、転送先クライアントとの間にコネクションが確立されているか否かを判定し（ステップＳ１５７）、コネクションが確立されるまで待機する（ステップＳ１５７：ＮＯ）。転送先クライアントとの間にコネクションが確立されている場合に（ステップＳ１５７：ＹＥＳ）、転送元クライアントの制御部は、更新データを転送先クライアントへ転送する（ステップＳ１５８）。
【０１２８】
次に一のクライアントが本発明に係るデータ配信システムから退出する場合について説明する。
図２６は、転送元クライアントがデータ配信システムから退出する場合において、転送元クライアントの制御部が実行する退出処理を説明するフローチャートである。
【０１２９】
転送元クライアントの制御部は、ユーザによる操作部１１ｂ〜１９ｂの操作又は制御プログラムの例外処理などによって退出指令が入力されたか否かを判定し（ステップＳ１６１）、退出指令が入力されるまで待機する（ステップＳ１６１：ＮＯ）。退出指令が入力された場合に（ステップＳ１６１：ＹＥＳ）、転送元クライアントの制御部は、転送先クライアントへの切断要求及び退出に必要な制御情報を含む退出データを転送先クライアントへ送信する（ステップＳ１６２）。次に転送元クライアントの制御部は、転送先クライアントから応答があったか否かを判定し（ステップＳ１６３）、応答があるまで待機する（ステップＳ１６３：ＮＯ）。なお転送先クライアントからの応答には切断許可及び切断要求が含まれる。転送先クライアントから応答があった場合に（ステップＳ１６３：ＹＥＳ）、転送元クライアントの制御部は、転送先クライアントに切断許可を送信し、転送先クライアントとのコネクションを切断する（ステップＳ１６４）。
【０１３０】
そして転送元クライアントの制御部はサーバ１へ、サーバ１への切断要求及び退出に必要な制御情報を含む退出データを送信し、サーバ１へコネクションの切断を要求する（ステップＳ１６５）。次に転送元クライアントの制御部は、サーバ１からの応答があったか否かを判定し（ステップＳ１６６）、応答があるまで待機する（ステップＳ１６６：ＮＯ）。サーバ１からの応答には、サーバ１からの切断許可及び切断要求が含まれる。サーバ１からの応答があった場合に（ステップＳ１６６：ＹＥＳ）、転送元クライアントの制御部はサーバ１へ切断許可を送信し、サーバ１とのコネクションを切断する（ステップＳ１６７）。
【０１３１】
ステップＳ１６２において、転送元クライアントから退出データを受信した転送先クライアントは、転送元クライアントがデータ配信システムから退出するための処理を実行する。図２７は転送元クライアントから退出データを受信した場合における転送先クライアントの制御部による処理を説明するフローチャートである。
【０１３２】
転送先クライアントの制御部は、転送元クライアントから退出データを受信したか否かを判定し（ステップＳ１７１）、転送元クライアントから退出データを受信するまで待機する（ステップＳ１７１：ＮＯ）。該退出データには切断要求が含まれている。転送元クライアントから退出データを受信した場合に（ステップＳ１７１：ＹＥＳ）、転送先クライアントの制御部は、転送先クライアントの制御部は転送元クライアントに応答する（ステップＳ１７２）。該応答には転送元クライアントへの切断許可及び切断要求が含まれる。次に転送先クライアントの制御部は、転送元クライアントから切断許可を受信したか否かを判定し（ステップＳ１７３）、切断許可を受信するまで待機する（ステップＳ１７３：ＮＯ）。転送元クライアントから切断許可を受信した場合に（ステップＳ１７３：ＹＥＳ）、転送先クライアントの制御部は転送元クライアントとのコネクションを切断する（ステップＳ１７４）。
【０１３３】
ステップＳ１６５において転送元クライアントから送信された退出データを受信したサーバ１は、転送元クライアントとのコネクションを切断する。図２８はサーバの制御部による転送元クライアントとのコネクションを切断する処理について説明するフローチャートである。
【０１３４】
サーバ１の制御部１ａは、転送元クライアントから退出データを受信したか否かを判定し（ステップＳ１８１）、転送元クライアントから退出データを受信するまで待機する（ステップＳ１８１：ＮＯ）。転送元クライアントから退出データを受信した場合に（ステップＳ１８１：ＹＥＳ）、サーバ１の制御部１ａは、転送元クライアントに応答する（ステップＳ１８２）。該応答には転送元クライアントへの切断許可及び切断要求が含まれる。次にサーバ１の制御部１ａは、転送元クライアントから切断許可を受信したか否かを判定し（ステップＳ１８３）、転送元クライアントから切断許可を受信するまで待機する（ステップＳ１８３：ＮＯ）。転送元クライアントから切断許可を受信した場合に（ステップＳ１８３：ＹＥＳ）、サーバ１の制御部１ａは、転送元クライアントとのコネクションを切断する（ステップＳ１８４）。
【０１３５】
そしてサーバ１の制御部１ａは、記憶部１ｅにアクセスして通信経路情報テーブルを参照し（ステップＳ１８５）、前記転送元クライアントに対応する転送先クライアントの転送先ＩＰアドレスに転送先クライアントのＩＰアドレスを記録（上書き）する（ステップＳ１８６）。このとき転送先クライアントは孤立クライアントになる。次にサーバ１の制御部１ａは、コネクションを切断した転送元クライアントの情報を通信経路情報テーブルから削除し（ステップＳ１８７）、孤立クライアントが複数存在するか否かを判定する（ステップＳ１８８）。孤立クライアントが単数である場合に（ステップＳ１８８：ＮＯ）、サーバ１の制御部１ａは処理を終了する。
【０１３６】
孤立クライアントが複数存在する場合に（ステップＳ１８８：ＹＥＳ）、サーバ１の制御部１ａは、孤立クライアント同士の間で、前述したグルーピング処理、グループ優先処理、最速処理又は閾値処理などを実行し、通信経路情報テーブルを再構築する（ステップＳ１８９）。そしてサーバ１の制御部１ａは、全ての転送元クライアント又はステップＳ１８９において新たに指定された転送元クライアントに転送先ＩＰアドレスを送信する（ステップＳ１９０）。なおステップＳ１８９においてグルーピング処理、グループ優先処理、最速処理又は閾値処理などを実行しても複数の孤立クライアントから転送元クライアント及び転送先クライアントを新たに指定できなかった場合には、ステップＳ１９０は実行しない。
【０１３７】
次に転送先クライアントがデータ配信システムから退出する場合について説明する。図２９は、転送先クライアントがデータ配信システムから退出する場合において、転送先クライアントの制御部が実行する退出処理を説明するフローチャートである。
【０１３８】
転送先クライアントの制御部は、ユーザによる操作部１１ｂ〜１９ｂの操作又は制御プログラムの例外処理などによって退出指令が入力されたか否かを判定し（ステップＳ２５１）、退出指令が入力されるまで待機する（ステップＳ２５１：ＮＯ）。退出指令が入力された場合に（ステップＳ２５１：ＹＥＳ）、転送先クライアントの制御部は、転送元クライアントへ退出データを送信する（ステップＳ２５２）。該退出データには転送元クライアントへの切断要求が含まれている。そして転送先クライアントの制御部は、転送元クライアントから応答があったか否かを判定し（ステップＳ２５３）、転送元クライアントから応答があるまで待機する（ステップＳ２５３：ＮＯ）。転送元クライアントからの応答には転送先クライアントへの切断要求が含まれている。
【０１３９】
転送元クライアントから応答があった場合に（ステップＳ２５３：ＹＥＳ）、転送先クライアントの制御部は、転送元クライアントに切断要求に対する切断許可を送信し、転送元クライアントとのコネクションを切断する（ステップＳ２５４）。
【０１４０】
ステップＳ２５２において転送先クライアントから送信された退出データを受信した転送元クライアントは、転送先クライアントがデータ配信システムから退出するための処理を実行する。図３０は転送先クライアントから退出データを受信した場合における転送元クライアントの制御部が実行する処理を説明するフローチャートである。
【０１４１】
転送元クライアントの制御部は、転送先クライアントから切断情報を含む退出データを受信したか否かを判定し（ステップＳ２６１）、転送先クライアントから退出データを受信するまで待機する（ステップＳ２６１：ＮＯ）。転送先クライアントから退出データを受信した場合に（ステップＳ２６１：ＹＥＳ）、転送元クライアントの制御部は、転送先クライアントに応答する（ステップＳ２６２）。該応答には転送先クライアントへの切断許可及び切断要求が含まれている。次に転送元クライアントの制御部は、転送先クライアントから切断許可を受信したか否かを判定し（ステップＳ２６３）、切断許可を受信するまで待機する（ステップＳ２６３：ＮＯ）。切断許可を受信した場合に（ステップＳ２６３：ＹＥＳ）、転送元クライアントの制御部は、転送先クライアントとのコネクションを切断し（ステップＳ２６４）、サーバ１へ転送先クライアントの退出データを送信する（ステップＳ２６５）。
【０１４２】
転送元クライアントから転送先クライアントの退出データを受信したサーバ１は、転送先クライアントがデータ配信システムから退出するための処理を実行する。図３１は転送元クライアントから転送先クライアントの退出データを受信した場合におけるサーバの制御部が実行する処理を説明するフローチャートである。
【０１４３】
サーバ１の制御部１ａは、転送元クライアントから転送先クライアントの退出データを受信したか否かを判定し（ステップＳ２７１）、転送先クライアントの退出データを受信するまで待機する（ステップＳ２７１：ＮＯ）。転送先クライアントの退出データを受信した場合に（ステップＳ２７１：ＹＥＳ）、サーバ１の制御部１ａは、記憶部１ｅにアクセスして通信経路情報テーブルを参照し（ステップＳ２７２）、転送元クライアントの転送先ＩＰアドレスに転送元クライアントのＩＰアドレスを記録（上書き）する（ステップＳ２７３）。このとき転送元クライアントは孤立クライアントになる。そしてサーバ１の制御部１ａは、退出した転送先クライアントの情報を通信経路情報テーブルから削除し（ステップＳ２７４）、孤立クライアントが複数存在するか否かを判定する（ステップＳ２７５）。孤立クライアントが単数である場合に（ステップＳ２７５：ＮＯ）、サーバ１の制御部１ａは処理を終了する。
【０１４４】
孤立クライアントが複数存在する場合に（ステップＳ２７５：ＹＥＳ）、サーバ１の制御部１ａは孤立クライアント同士の間で、前述したグルーピング処理、グループ優先処理、最速処理又は閾値処理などを実行し、通信経路情報テーブルを再構築する（ステップＳ２７６）。そしてサーバ１の制御部１ａは、ステップＳ２７６において新たに指定された転送元クライアントに転送先ＩＰアドレスを送信する（ステップＳ２７７）。なおステップＳ２７６においてグルーピング処理、グループ優先処理、最速処理又は閾値処理などを実行しても複数の孤立クライアントから転送元クライアント及び転送先クライアントを新たに指定できなかった場合には、ステップＳ２７７は実行しない。
【０１４５】
次に孤立クライアントがデータ配信システムから退出する場合について説明する。図３２は、孤立クライアントの制御部によるデータ配信システムからの退出処理を説明するフローチャートである。
【０１４６】
孤立クライアントの制御部は、ユーザによる操作部１１ｂ〜１９ｂの操作又は制御プログラムの例外処理などによって退出指令が入力されたか否かを判定し（ステップＳ２８１）、退出指令が入力されるまで待機する（ステップＳ２８１：ＮＯ）。退出指令が入力された場合に（ステップＳ２８１：ＹＥＳ）、孤立クライアントの制御部は、サーバ１へ退出データを送信する（ステップＳ２８２）。該退出データには、サーバ１への切断要求が含まれる。そして孤立クライアントの制御部は、サーバ１から応答があったか否かを判定し（ステップＳ２８３）、サーバ１から応答があるまで待機する（ステップＳ２８３：ＮＯ）。サーバ１からの応答には、サーバ１からの切断許可及び切断要求が含まれる。
【０１４７】
サーバ１から応答があった場合に（ステップＳ２８３：ＹＥＳ）、孤立クライアントの制御部はサーバ１に切断許可を送信し、サーバ１とのコネクションを切断する（ステップＳ２８４）。
【０１４８】
ステップＳ２８２において孤立クライアントから退出データを受信したサーバ１は、孤立クライアントがデータ配信システムから退出するための処理を実行する。図３３は、孤立クライアントから退出データを受信したサーバの制御部が実行する処理を説明するフローチャートである。
【０１４９】
サーバ１の制御部１ａは孤立クライアントから退出データを受信したか否かを判定し（ステップＳ２９１）、孤立クライアントから退出データを受信するまで待機する（ステップＳ２９１：ＮＯ）。退出データには、孤立クライアントからの切断要求が含まれる。孤立クライアントから退出データを受信した場合に（ステップＳ２９１：ＹＥＳ）、サーバ１の制御部１ａは孤立クライアントに応答する（ステップＳ２９２）。該応答には、孤立クライアントへの切断許可及び切断要求が含まれる。次にサーバ１の制御部１ａは、孤立クライアントから切断許可を受信したか否かを判定し（ステップＳ２９３）、孤立クライアントから切断許可を受信するまで待機する（ステップＳ２９３：ＮＯ）。
【０１５０】
孤立クライアントから切断許可を受信した場合に（ステップＳ２９３：ＹＥＳ）、サーバ１の制御部１ａは孤立クライアントとのコネクションを切断する（ステップＳ２９４）。そしてサーバ１の制御部１ａは、記憶部１ｅにアクセスして通信経路情報テーブルを参照し（ステップＳ２９５）、コネクションを切断した孤立クライアントの情報を通信経路情報テーブルから削除する（ステップＳ２９６）。
【０１５１】
次に通信経路情報テーブル作成後に新たなクライアントがサーバ１に接続された場合のサーバ１の処理について説明する。図３４は、通信経路情報テーブル作成後に新たなクライアントがサーバに接続された場合に、サーバの制御部が実行する処理を説明するフローチャートである。
【０１５２】
サーバ１の制御部１ａは、新たに接続されたクライアントからの接続要求を受信したか否かを判定し（ステップＳ３５１）、クライアントからの接続要求を受信するまで待機する（ステップＳ３５１：ＮＯ）。クライアントからの接続要求にはクライアントのエントリーナンバー、ＩＰアドレス及びサブネットマスクなどが含まれる。クライアントからの接続要求を受信した場合に（ステップＳ３５１：ＹＥＳ）、サーバ１の制御部１ａは接続要求を受信したクライアントのエントリーナンバー、ＩＰアドレス及びサブネットマスクを通信経路情報テーブルに記録する（ステップＳ３５２）。なおエントリーナンバーは、クライアントからの接続要求を受信した順にＩＰアドレスと共に通信経路情報テーブルに記録され、エントリーナンバーとＩＰアドレスとは対応する。
【０１５３】
次にサーバ１の制御部１ａは、接続要求を受信した新たなクライアントに応答する（ステップＳ３５３）。該応答には新たなクライアントへの接続許可と接続要求とが含まれる。そしてサーバ１の制御部１ａは、新たなクライアントから接続許可を受信したか否かを判定し（ステップＳ３５４）、新たなクライアントから接続許可を受信するまで待機する（ステップＳ３５４：ＮＯ）。新たなクライアントから接続許可を受信した場合に（ステップＳ３５４：ＹＥＳ）、サーバ１の制御部１ａは、新たなクライアントとのコネクションを確立する（ステップＳ３５５）。
【０１５４】
次にサーバ１の制御部１ａは、記憶部１ｅにアクセスして通信経路情報テーブルを参照し（ステップＳ３５６）、新たなクライアントの転送先ＩＰアドレスに新たなクライアントのＩＰアドレスを記録する（ステップＳ３５７）。このとき新たなクライアントは孤立クライアントとなる。そしてサーバ１の制御部１ａは、孤立クライアントが複数存在するか否かを判定し（ステップＳ３５８）、孤立クライアントが単数である場合に（ステップＳ３５８：ＮＯ）、サーバ１の制御部１ａは処理を終了する。
【０１５５】
孤立クライアントが複数存在する場合に（ステップＳ３５８：ＹＥＳ）、サーバ１の制御部１ａは孤立クライアント同士の間で、前述したグルーピング処理、グループ優先処理、最速処理又は閾値処理などを実行し、通信経路情報テーブルを再構築する（ステップＳ３５９）。そしてサーバ１の制御部１ａは、ステップＳ３５９において新たに指定された転送元クライアントに転送先ＩＰアドレスを送信する（ステップＳ３６０）。なおステップＳ３５９においてグルーピング処理、グループ優先処理、最速処理又は閾値処理などを実行しても複数の孤立クライアントから転送元クライアント及び転送先クライアントを新たに指定できなかった場合には、ステップＳ３６０は実行しない。
【０１５６】
次に転送先クライアントにて共有データが更新され、転送元クライアントに障害が発生している場合に、転送先クライアントの制御部が実行する障害対策処理について説明する。図３５は転送先クライアントにて共有データが更新され、転送元クライアントに障害が発生している場合に、転送先クライアントの制御部が実行する障害対策処理を説明するフローチャートである。
【０１５７】
転送先クライアントの制御部は、操作部１１ｂ〜１９ｂの操作によって共有データが変更され、共有データを更新する指令が入力された場合に、自身のＩＰアドレス（転送先ＩＰアドレス）と更新データ（更新した共有データ又は更新前後の共有データの差分データ）とを転送元クライアントへ送信する（ステップＳ３７１）。このとき転送先クライアントの制御部は、転送元クライアントへ送信した回数を数えてＲＡＭに記憶する。そして転送先クライアントの制御部は、タイマを起動させて、転送元クライアントから転送先ＩＰアドレスと更新データとを受信した旨の応答が所定時間内にあったか否かを判定する（ステップＳ３７２）。転送元クライアントから転送先ＩＰアドレスと更新データとを受信した旨の応答があった場合には（ステップＳ３７２：ＹＥＳ）、処理を終了する。
【０１５８】
転送元クライアントから転送先ＩＰアドレスと更新データとを受信した旨の応答がない場合には（ステップＳ３７２：ＮＯ）、転送先クライアントの制御部は、転送先ＩＰアドレスと更新データとを送信した回数を数えてＲＡＭに記録し、転送先ＩＰアドレスと更新データとを所定回数以上送信したか否かを判定する（ステップＳ３７３）。なお前記所定回数は転送先クライアントの起動時にＲＡＭに設定されている。送信回数が所定回数未満である場合に（ステップＳ３７３：ＮＯ）、転送先クライアントの制御部はステップＳ３７１に処理を戻す。送信回数が所定回数以上である場合に（ステップＳ３７３：ＹＥＳ）、転送先クライアントの制御部は転送元クライアントに障害が発生したことを示す情報（転送元障害情報）をサーバ１へ送信する（ステップＳ３７４）。そして転送先クライアントの制御部は、転送元クライアントへリセット情報を送信し、転送元クライアントとのコネクションを強制的に切断する（ステップＳ３７５）。
【０１５９】
転送元障害情報を受信したサーバ１は、障害が発生している転送元クライアントの情報を通信経路情報テーブルから削除する削除処理を実行する。図３６は、転送先クライアントにて共有データが更新され、転送元クライアントに障害が発生している場合に、サーバの制御部が実行する削除処理を説明するフローチャートである。
【０１６０】
サーバ１の制御部１ａは、転送元障害情報を受信したか否かを判定し（ステップＳ３８１）、転送元障害情報を受信するまで待機する（ステップＳ３８１：ＮＯ）。転送元障害情報を受信した場合に（ステップＳ３８１：ＹＥＳ）、サーバ１の制御部１ａは、転送元クライアントにリセット情報を送信し、転送元クライアントとのコネクションを強制的に切断する（ステップＳ３８２）。次にサーバ１の制御部１ａは、記憶部１ｅにアクセスして通信経路情報テーブルを参照し、転送元クライアントの情報を削除する（ステップＳ３８３）。このとき転送先クライアントの転送先ＩＰアドレスには転送先クライアントのＩＰアドレスが記録（上書き）され、転送先クライアントは孤立クライアントになる。そしてサーバ１の制御部１ａは、孤立クライアントが複数存在するか否かを判定し（ステップＳ３８４）、孤立クライアントが単数である場合に（ステップＳ３８４：ＮＯ）、処理を終了する。
【０１６１】
孤立クライアントが複数存在する場合に（ステップＳ３８４：ＹＥＳ）、サーバ１の制御部１ａは、孤立クライアント同士の間で、前述したグルーピング処理、グループ優先処理、最速処理又は閾値処理などを実行し、通信経路情報テーブルを再構築する（ステップＳ３８５）。そしてサーバ１の制御部１ａは、全ての転送元クライアント又はステップＳ３８５において新たに指定された転送元クライアントに転送先ＩＰアドレスを送信する（ステップＳ３８６）。なおステップＳ３８５においてグルーピング処理、グループ優先処理、最速処理又は閾値処理などを実行しても複数の孤立クライアントから転送元クライアント及び転送先クライアントを新たに指定できなかった場合には、ステップＳ３８６は実行しない。
【０１６２】
その後、共有データを更新した前記クライアントがステップＳ３８５において新たな転送元クライアントに指定された場合に、サーバ１と、新たな転送元クライアントに対応する新たな転送先クライアントとに新たな転送元クライアントから更新データが送信・転送され、共有データを更新した前記クライアントがステップＳ３８５において新たな転送先クライアントに指定された場合に、新たな転送先クライアントから該新たな転送先クライアントに対応する新たな転送元クライアントに更新データが送信され、また共有データを更新した前記クライアントが孤立クライアントである場合に、該孤立クライアントからサーバ１に更新データが送信される。
【０１６３】
次に転送元クライアントにて共有データが更新され、転送先クライアントに障害が発生している場合に、転送元クライアントの制御部が実行する障害対策処理について説明する。図３７は転送元クライアントにて共有データが更新され、転送先クライアントに障害が発生している場合に、転送元クライアントの制御部が実行する障害対策処理を説明するフローチャートである。
【０１６４】
転送元クライアントの制御部は、共有データを更新する指令が入力された場合に、更新データ（更新した共有データ又は更新前後の共有データの差分データ）を転送先クライアントへ送信する（ステップＳ４７１）。このとき転送元クライアントの制御部は、転送先クライアントへ送信した回数を数えてＲＡＭに記憶する。そして転送元クライアントの制御部は、タイマを起動させて、転送先クライアントから更新データを受信した旨の応答が所定時間内にあったか否かを判定する（ステップＳ４７２）。転送先クライアントから更新データを受信した旨の応答があった場合には（ステップＳ４７２：ＹＥＳ）、処理を終了する。
【０１６５】
転送先クライアントから更新データを受信した旨の応答がない場合には（ステップＳ４７２：ＮＯ）、転送元クライアントの制御部は更新データを送信した回数を数えてＲＡＭに記録し、更新データを所定回数以上送信したか否かを判定する（ステップＳ４７３）。なお前記所定回数は転送元クライアントの起動時にＲＡＭに設定されている。送信回数が所定回数未満である場合に（ステップＳ４７３：ＮＯ）、転送元クライアントの制御部はステップＳ４７１に処理を戻す。送信回数が所定回数以上である場合に（ステップＳ４７３：ＹＥＳ）、転送元クライアントの制御部は転送先クライアントに障害が発生したことを示す情報（転送先障害情報）をサーバ１へ送信する（ステップＳ４７４）。そして転送元クライアントの制御部は、転送先クライアントにリセット情報を送信し、転送先クライアントとのコネクションを強制的に切断する（ステップＳ４７５）。
【０１６６】
転送先障害情報を受信したサーバ１は、障害が発生している転送先クライアントの情報を通信経路情報テーブルから削除する削除処理を実行する。図３８は、転送元クライアントにて共有データが更新され、転送先クライアントに障害が発生している場合に、サーバの制御部が実行する削除処理を説明するフローチャートである。
【０１６７】
サーバ１の制御部１ａは、転送先障害情報を受信したか否かを判定し（ステップＳ４８１）、転送先障害情報を受信するまで待機する（ステップＳ４８１：ＮＯ）。転送先障害情報を受信した場合に（ステップＳ４８１：ＹＥＳ）、サーバ１の制御部１ａは、記憶部１ｅにアクセスして通信経路情報テーブルを参照し、転送先クライアントの情報を削除する（ステップＳ４８２）。このとき転送元クライアントの転送先ＩＰアドレスには転送元クライアントのＩＰアドレスが記録（上書き）され、転送元クライアントは孤立クライアントになる。そしてサーバ１の制御部１ａは、孤立クライアントが複数存在するか否かを判定し（ステップＳ４８３）、孤立クライアントが単数である場合に（ステップＳ４８３：ＮＯ）、処理を終了する。
【０１６８】
孤立クライアントが複数存在する場合に（ステップＳ４８３：ＹＥＳ）、サーバ１の制御部１ａは、孤立クライアント同士の間で、前述したグルーピング処理、グループ優先処理、最速処理又は閾値処理などを実行し、通信経路情報テーブルを再構築する（ステップＳ４８４）。そしてサーバ１の制御部１ａは、全ての転送元クライアント又はステップＳ４８４において新たに指定された転送元クライアントに転送先ＩＰアドレスを送信する（ステップＳ４８５）。なおステップＳ４８４においてグルーピング処理、グループ優先処理、最速処理又は閾値処理などを実行しても複数の孤立クライアントから転送元クライアント及び転送先クライアントを新たに指定できなかった場合には、ステップＳ４８５は実行しない。
【０１６９】
サーバ１が更新データを送信した転送元クライアントに障害が発生している場合に、サーバ１の制御部１ａは障害が発生している転送元クライアントの情報を通信経路情報テーブルから削除する削除処理を実行する。図３９はサーバが更新データを送信した転送元クライアントに障害が発生している場合に、サーバの制御部が実行する削除処理を説明するフローチャートである。
【０１７０】
ステップＳ１５１〜ステップＳ１５４にて説明したように、更新データを受信したサーバ１の制御部１ａは、転送元クライアントへ更新データを送信する（ステップＳ５７１）。そしてサーバ１の制御部１ａは、タイマを起動させて、更新データを送信した転送元クライアントから更新データを受信したことを示す応答が所定時間内にあったか否かを判定する（ステップＳ５７２）。転送元クライアントから更新データを受信したことを示す応答が所定時間内にあった場合に（ステップＳ５７２：ＹＥＳ）、サーバ１の制御部１ａは処理を終了する。
【０１７１】
転送元クライアントから更新データを受信したことを示す応答がない場合に（ステップＳ５７２：ＮＯ）、サーバ１の制御部１ａは更新データを送信した回数を数えてＲＡＭに記録し、更新データを所定回数以上送信したか否かを判定する（ステップＳ５７３）。なお前記所定回数はサーバ１の起動時にＲＡＭに設定されている。更新データの送信回数が所定回数未満である場合に（ステップＳ５７３：ＮＯ）、サーバ１の制御部１ａはステップＳ５７１に処理を戻す。更新データを所定回数以上送信している場合に（ステップＳ５７３：ＹＥＳ）、サーバ１の制御部１ａは記憶部１ｅにアクセスして通信経路情報テーブルを参照し、転送元クライアントを示す情報を削除する（ステップＳ５７４）。このとき転送先クライアントの転送先ＩＰアドレスには転送先クライアントのＩＰアドレスが記録（上書き）され、転送先クライアントは孤立クライアントになる。次にサーバ１の制御部１ａは、応答しない転送元クライアントに対応する転送先クライアントへ、前記転送元クライアントとのコネクションを強制的に切断する指令（リセット）を送信する（ステップＳ５７５）。
【０１７２】
そしてサーバ１の制御部１ａは、転送先クライアントから転送元クライアントとのコネクションを強制的に切断したことを示す応答があったか否かを判定し（ステップＳ５７６）、応答があるまで待機する（ステップＳ５７６：ＮＯ）。転送先クライアントから転送元クライアントとのコネクションを強制的に切断したことを示す応答があった場合に（ステップＳ５７６：ＹＥＳ）、サーバ１の制御部１ａは、孤立クライアントが複数存在するか否かを判定し（ステップＳ５７７）、孤立クライアントが単数である場合に（ステップＳ５７７：ＮＯ）、処理を終了する。
【０１７３】
孤立クライアントが複数存在する場合に（ステップＳ５７７：ＹＥＳ）、サーバ１の制御部１ａは、孤立クライアント同士の間で、前述したグルーピング処理、グループ優先処理、最速処理又は閾値処理などを実行し、通信経路情報テーブルを再構築する（ステップＳ５７８）。そしてサーバ１の制御部１ａは、全ての転送元クライアント又はステップＳ５７８において新たに指定された転送元クライアントに転送先ＩＰアドレスを送信する（ステップＳ５７９）。なおステップＳ５７８においてグルーピング処理、グループ優先処理、最速処理又は閾値処理などを実行しても複数の孤立クライアントから転送元クライアント及び転送先クライアントを新たに指定できなかった場合には、ステップＳ５７９は実行しない。
【０１７４】
ステップＳ５７５におけるサーバ１の処理によって、転送元クライアントとのコネクションを強制的に切断する指令（リセット）を受信した転送先クライアントは、転送元クライアントとのコネクションを強制的に切断する切断処理を実行する。図４０は転送元クライアントとのコネクションを強制的に切断する指令を受信した場合における転送先クライアントの制御部が実行する切断処理を説明するフローチャートである。
【０１７５】
転送先クライアントの制御部は、サーバ１から転送元クライアントとのコネクションを強制的に切断する指令（リセット）を受信したか否かを判定し（ステップＳ５８１）、リセットを受信するまで待機する（ステップＳ５８１：ＮＯ）。リセットを受信した場合に（ステップＳ５８１：ＹＥＳ）、転送先クライアントの制御部は転送元クライアントとのコネクションを強制的に切断し（ステップＳ５８２）、サーバ１に、転送元クライアントとのコネクションを強制的に切断したことを応答する（ステップＳ５８３）。
【０１７６】
転送元クライアントから更新データを転送された転送先クライアントに障害が発生している場合に、サーバ１の制御部１ａは障害が発生している転送先クライアントの情報を通信経路情報テーブルから削除する削除処理を実行する。図４１は転送元クライアントから更新データを転送された転送先クライアントに障害が発生している場合に、サーバの制御部が実行する削除処理を説明するフローチャートである。
【０１７７】
ステップＳ１５１〜ステップＳ１５４にて説明したように、更新データを受信したサーバ１の制御部１ａは、転送元クライアントへ更新データを送信する（ステップＳ６７１）。そしてサーバ１の制御部１ａは、転送元クライアントから転送先クライアントへ更新データを転送したことを示す応答があったか否かを判定する（ステップＳ６７２）。転送元クライアントから転送先クライアントへ更新データを転送したことを示す応答があった場合に（ステップＳ６７２：ＹＥＳ）、サーバ１の制御部１ａは処理を終了する。転送元クライアントから転送先クライアントへ更新データを転送したことを示す応答がない場合に（ステップＳ６７２：ＮＯ）、サーバ１の制御部１ａは、転送元クライアントから転送先クライアントに障害が発生したことを示す情報（転送先障害情報）を受信したか否かを判定する（ステップＳ６７３）。転送先障害情報を受信していない場合に（ステップＳ６７３：ＮＯ）、サーバ１の制御部１ａはステップＳ６７２に処理を戻す。
【０１７８】
転送先障害情報を受信した場合に（ステップＳ６７３：ＹＥＳ）、サーバ１の制御部１ａは記憶部１ｅにアクセスして通信経路情報テーブルを参照し、転送先クライアントの情報を通信経路情報テーブルから削除する（ステップＳ６７４）。このとき転送元クライアントの転送先ＩＰアドレスには転送元クライアントのＩＰアドレスが記録（上書き）され、転送元クライアントは孤立クライアントになる。そしてサーバ１の制御部１ａは、孤立クライアントは複数存在するか否かを判定し（ステップＳ６７５）、孤立クライアントが単数である場合に（ステップＳ６７５：ＮＯ）、処理を終了する。
【０１７９】
孤立クライアントが複数存在する場合に、サーバ１の制御部１ａは、孤立クライアント同士の間で、前述したグルーピング処理、グループ優先処理、最速処理又は閾値処理などを実行し、通信経路情報テーブルを再構築する（ステップＳ６７６）。そしてサーバ１の制御部１ａは、全ての転送元クライアント又はステップＳ６７６において新たに指定された転送元クライアントに転送先ＩＰアドレスを送信する（ステップＳ６７７）。なおステップＳ６７６においてグルーピング処理、グループ優先処理、最速処理又は閾値処理などを実行しても複数の孤立クライアントから転送元クライアント及び転送先クライアントを新たに指定できなかった場合には、ステップＳ６７７は実行しない。
【０１８０】
ステップＳ６７１においてサーバ１から送信された更新データを受信した転送元クライアントは、転送先クライアントへ更新データを転送する。転送元クライアントは、転送先クライアントから更新データを受信したことを示す応答がない場合に、転送先クライアントとのコネクションを強制的に切断する切断処理を実行する。図４２は転送先クライアントから更新データを受信したことを示す応答がない場合に、転送元クライアントの制御部が実行する切断処理を説明するフローチャートである。
【０１８１】
転送元クライアントの制御部は、サーバ１から更新データを受信したか否かを判定し（ステップＳ６８１）、サーバ１から更新データを受信するまで待機する（ステップＳ６８１：ＮＯ）。サーバ１から更新データを受信した場合に（ステップＳ６８１：ＹＥＳ）、転送元クライアントの制御部は転送先クライアントへ更新データを転送する（ステップＳ６８２）。そして転送元クライアントの制御部は、タイマを起動させて、転送先クライアントから更新データを受信したことを示す応答が所定時間内にあったか否かを判定する（ステップＳ６８３）。転送先クライアントから更新データを受信したことを示す応答があった場合に（ステップＳ６８３：ＹＥＳ）、転送元クライアントの制御部は処理を終了する。
【０１８２】
転送先クライアントから更新データを受信したことを示す応答がない場合に（ステップＳ６８３：ＮＯ）、転送元クライアントの制御部は、更新データを転送した回数を数えてＲＡＭに記録し、更新データを所定回数以上転送したか否かを判定する（ステップＳ６８４）。なお前記所定回数は転送元クライアントの起動時にＲＡＭに設定されている。転送回数が所定回数未満である場合に（ステップＳ６８４：ＮＯ）、転送元クライアントの制御部はステップＳ６８２に処理を戻す。転送回数が所定回数以上である場合に（ステップＳ６８４：ＹＥＳ）、転送元クライアントの制御部は転送先クライアントに障害が発生したことを示す情報（転送先障害情報）をサーバ１へ送信する（ステップＳ６８５）。そして転送元クライアントの制御部は、転送先クライアントへリセット情報を送信し、転送先クライアントとのコネクションを強制的に切断する（ステップＳ６８６）。
【０１８３】
実施の形態にあっては、同一のサブネットワーク（通信網）に接続している複数のクライアントの内、一のクライアントを転送元クライアントに指定し、他のクライアントを転送先クライアントに指定する。そしてサーバ１からデータを受信した転送元クライアントが、転送先クライアントへデータを転送する。そのためデータを配信するシステムが大規模化しても、システムは簡素な制御でデータを送信・転送することができ、サーバ１から転送元クライアントへ効率良くデータを配信し、転送元クライアント及び転送先クライアント間でルータを経由させることなく、迅速にデータを転送することができる。データはルータを経由せずに転送されるので、転送先クライアントへ短時間で転送される。また通信網を識別する識別情報をサーバ１にて記憶・管理しているので、クライアントとサーバ１との接続／切断などによってシステムの構成が変更されても、容易に転送元クライアント及び転送先クライアントを再指定することができる。
【０１８４】
またサーバ１に接続された複数のクライアントの中から転送元クライアントを指定し、該転送元クライアントと最速時間で通信することができるクライアントを転送先クライアントに指定する。そのためデータを配信するシステムが大規模化しても、システムは簡素な制御でデータを送信・転送することができ、サーバ１から各転送元クライアントへ効率良くデータを配信し、転送元クライアント及び転送先クライアント間で迅速にデータを転送することができる。またサーバ１に接続された複数のクライアント間の通信速度をサーバ１にて記憶・管理しているので、クライアントとサーバ１との接続／切断などによってシステムの構成が変更されても、転送元クライアント及び転送先クライアントを容易に再指定することができる。
【０１８５】
またサーバ１に接続された一のクライアント及び他のクライアントの間の通信速度が予め設定された閾値よりも速い場合に、両クライアントをそれぞれ転送元クライアント及び転送先クライアントに指定し、転送元クライアント及び転送先クライアントを示す情報をサーバ１にて記憶する。そのためデータを配信するシステムが大規模化しても、システムは簡素な制御でデータを送信・転送することができ、サーバ１から各転送元クライアントへ効率良くデータを配信し、転送元クライアント及び転送先クライアント間で迅速にデータを転送することができる。また新たなクライアントがサーバ１に接続し、システムの構成が変更されても、新たなクライアントと既存のクライアントとの通信速度を閾値と比較するだけで、転送元クライアント及び転送先クライアントを再指定するか否かを判定することができ、転送元クライアント及び転送先クライアントを容易に再指定することができる。
【０１８６】
またサーバ１と一のクライアントとの通信速度が、該一のクライアントと他のクライアントとの通信速度よりも遅い場合に、一のクライアントを転送先クライアントに指定し、他のクライアントを転送元クライアントに指定する。そのためデータを配信するシステムが大規模化しても、システムは簡素な制御でデータを送信・転送することができ、サーバ１から各転送元クライアントへ効率良くデータを配信し、転送元クライアント及び転送先クライアント間で迅速にデータを転送することができる。また転送元クライアント及び転送先クライアントを示す情報をサーバ１にて記憶・管理しているので、クライアントとサーバ１との接続／切断などによってシステムの構成が変更されても、転送元クライアント及び転送先クライアントを容易に再指定することができる。
【０１８７】
またサーバ１から転送元クライアントにデータを送信する前に、転送先クライアントを示す情報を転送元クライアントに送信して、転送元クライアント及び転送先クライアント間にデータの送受信が可能な送受信可能状態（コネクション）を確立させる。そのためサーバ１から転送元クライアントに送信されたデータは転送先クライアントへ直ちに転送される。
【０１８８】
また前述したコネクションは、転送元クライアントと転送先クライアントとの間で一対一で確立されるので、サーバ１は複数のクライアントの内、半分のクライアントを転送元クライアントに指定して、データを各転送元クライアントに配信すればよいので、サーバ１の負荷が軽減される。また転送元クライアントと転送先クライアントとの間で一対多でコネクションを確立する場合に比較して、システムのデータ送信・転送制御が簡素化される。
【０１８９】
また転送元クライアントと転送先クライアントとの間におけるコネクションが切断される若しくは転送元クライアント又は転送先クライアントがシステムから退出するによって、コネクションが未確立のクライアントが複数存在するときに、コネクションが未確立の複数のクライアントから、コネクションが確立されるべき複数のクライアントを抽出し、抽出したクライアント間でコネクションを確立させる。
【０１９０】
また転送元クライアントにてデータを受信することが不可能である場合に、サーバ１は前記転送元クライアントとコネクションを確立した転送先クライアントに前記コネクションを切断させる。そのためデータを受信することが不可能な前記転送元クライアントをデータ配信システムから除外し、データ配信システムを保全することができる。またデータを受信することが不可能な前記転送元クライアントの情報を通信経路情報テーブルから除外することで、コネクションが未確立の複数のクライアントから、コネクションが確立されるべき複数のクライアントを抽出し、抽出したクライアント間でコネクションを確立させることができる。
【０１９１】
また転送先クライアントにてデータを受信することが不可能である場合に、転送元クライアントは、データの受信が不可能な転送先クライアントを示す情報を前記サーバ１へ送信し、転送先クライアントとの間で確立されたコネクションを強制的に切断する。データの受信が不可能な転送先クライアントを示す情報を受信したサーバ１は、データを受信することが不可能な転送先クライアントを示す情報を通信経路情報テーブルから除外することで、コネクションが未確立の複数のクライアントから、コネクションが確立されるべき複数のクライアントを抽出し、抽出したクライアント間でコネクションを確立させることができる。
【０１９２】
またクライアントがサーバ１に接続した場合、すなわちクライアントがデータ配信システムに入室した場合に、入室したクライアントを示す情報を通信経路情報テーブルに追加し、またクライアントがサーバ１との接続を切断した場合、すなわちクライアントがデータを配信するシステムから退室した場合に、通信経路情報テーブルから退室したクライアントを示す情報を削除するので、クライアントの管理を円滑且つ確実に行うことができる。
【０１９３】
実施の形態においては、サーバ１及びクライアントのＲＯＭには制御プログラムが予めインストールされているが、制御プログラムを記録した光ディスク及び磁気ディスクなどの記録媒体からサーバ１及びクライアントにインストールする構成でも良い。またＩ／Ｆ部を介して通信網からサーバ１及びクライアントに制御プログラムをダウンロードする構成であっても良い。
【０１９４】
またサーバの制御部による選定処理の第１実施例においては、グループ優先処理を行った後に閾値処理を行っているが、いずれか一方の処理を行う構成でも良い。またサーバの制御部による選定処理の第２実施例においては、グループ優先処理を行った後に最速処理を行っているが、いずれか一方の処理を行う構成でも良い。また選定処理の第１実施例〜第３実施例を構成する各処理を適宜組み合わせて、選定処理を行っても良い。
【０１９５】
また実施の形態においては、ＩＰアドレスによって各クライアントを識別しているが、ＮＡＰＴ（Network Address Port Translation）機能を使用している場合には、ポート番号も通信経路情報テーブルに記憶し、ＩＰアドレスとポート番号との組み合わせによって、各クライアントを識別しても良い。また実施の形態においては、転送元クライアントと転送先クライアントとを一対一で対応させているが、一の転送元クライアントに複数の転送先クライアントを対応させて、一の転送元クライアントから複数の転送先クライアントへデータが転送される構成としても良い。
【０１９６】
以上説明した実施の形態は特許請求の範囲に記載した事項の例示であり、特許請求の範囲に記載された事項及び特許請求の範囲に記載された発明と均等の範囲内において種々変更することができる。
【符号の説明】
【０１９７】
１  サーバ
１ａ  制御部
１ｂ  操作部
１ｃ  表示部
１ｄ  Ｉ／Ｆ部
１ｅ  記憶部
１１〜１９  クライアント
１１ａ〜１９ａ  制御部
１１ｂ〜１９ｂ  操作部
１１ｃ〜１９ｃ  表示部
１１ｄ〜１９ｄ  Ｉ／Ｆ部
１１ｄ〜１９ｄ  記憶部
２１〜２５  ルータ
３１〜３３  スイッチ
５０  通信網
【図１】
2011076532.tif 000003
【図２】
2011076532.tif 000004
【図３】
2011076532.tif 000005
【図４】
2011076532.tif 000006
【図５】
2011076532.tif 000007
【図６】
2011076532.tif 000008
【図７】
2011076532.tif 000009
【図８】
2011076532.tif 000010
【図９】
2011076532.tif 000011
【図１０】
2011076532.tif 000012
【図１１】
2011076532.tif 000013
【図１２】
2011076532.tif 000014
【図１３】
2011076532.tif 000015
【図１４】
2011076532.tif 000016
【図１５】
2011076532.tif 000017
【図１６】
2011076532.tif 000018
【図１７】
2011076532.tif 000019
【図１８】
2011076532.tif 000020
【図１９】
2011076532.tif 000021
【図２０】
2011076532.tif 000022
【図２１】
2011076532.tif 000023
【図２２】
2011076532.tif 000024
【図２３】
2011076532.tif 000025
【図２４】
2011076532.tif 000026
【図２５】
2011076532.tif 000027
【図２６】
2011076532.tif 000028
【図２７】
2011076532.tif 000029
【図２８】
2011076532.tif 000030
【図２９】
2011076532.tif 000031
【図３０】
2011076532.tif 000032
【図３１】
2011076532.tif 000033
【図３２】
2011076532.tif 000034
【図３３】
2011076532.tif 000035
【図３４】
2011076532.tif 000036
【図３５】
2011076532.tif 000037
【図３６】
2011076532.tif 000038
【図３７】
2011076532.tif 000039
【図３８】
2011076532.tif 000040
【図３９】
2011076532.tif 000041
【図４０】
2011076532.tif 000042
【図４１】
2011076532.tif 000043
【図４２】
2011076532.tif 000044