(57)【要約】【課題】  受動的な接続ができないクライアント間におけるパケットの送受信を可能とする。【解決手段】  第１コンピュータが、（１）第２コンピュータの第２ＩＤ、第２ＩＰアドレス、第２ポート番号、及び第２コンピュータへの直接接続の可否、並びに第３コンピュータの第３ＩＤ、第３ＩＰアドレス、第３ポート番号、及び第３コンピュータへの直接接続の可否を記憶し、（２）データ送信先のコンピュータに直接接続できるか判断し（ステップＳ２０１）、（３）データ送信先が直接接続不可能な第２コンピュータの場合、転送用パケットであることを示す転送用ヘッダ及び第２ＩＤを含み、第３ＩＰアドレスを宛先ＩＰアドレスとし、第３ポート番号を宛先ポート番号とするパケットを生成し（ステップＳ２０３，５）、（４）送信しようとするデータの宛先が直接接続可能な第３コンピュータの場合、転送用ヘッダ等を含まないパケットを生成する（ステップＳ２０７）。【選択図】      図１２
2005033738.tif 000002
【特許請求の範囲】
【請求項１】
第１、第２及び第３コンピュータ間で相互にデータを送受信する場合において、前記第１コンピュータが、直接接続が不可能な前記第２コンピュータ又は直接接続が可能な前記第３コンピュータへ送るパケットを生成する方法であって、前記第１コンピュータは、
少なくとも前記第２コンピュータを識別する第２ＩＤ、前記第２コンピュータに割り当てられている第２コンピュータアドレス、前記第２コンピュータ内でデータを受信するアプリケーションに割り当てられている第２アプリケーション番号、及び前記第２コンピュータへの直接接続の可否、並びに前記第３コンピュータを識別する第３ＩＤ、前記第３コンピュータに割り当てられている第３コンピュータアドレス、及び前記第３コンピュータ内でデータを受信又は転送するアプリケーションに割り当てられている第３アプリケーション番号を記憶し、
記憶されている直接接続の可否に基づいて、データを送信しようとする宛先のコンピュータに直接接続できるかを判断し、
送信しようとするデータの宛先が直接接続不可能な前記第２コンピュータである場合は、転送用パケットであることを示す転送用ヘッダ及び前記第２ＩＤを含み、かつ前記第３コンピュータアドレスを宛先コンピュータアドレスとし、前記第３アプリケーション番号を宛先アプリケーション番号として含むパケットを生成し、
送信しようとするデータの宛先が直接接続可能な前記第３コンピュータである場合は、前記第３コンピュータアドレスを宛先コンピュータアドレスとし、前記第３アプリケーション番号を宛先アプリケーション番号として含むパケットを生成する、
ことを特徴とするパケット生成方法。
【請求項２】
第３コンピュータが、第１コンピュータから送信された第１パケットに含まれるデータを、受信又は第２コンピュータへ転送する方法であって、前記第３コンピュータは、
少なくとも前記第１コンピュータを識別する第１ＩＤ、前記第１コンピュータに割り当てられている第１コンピュータアドレス、及び前記第１コンピュータ内でデータを生成したアプリケーションに割り当てられている第１アプリケーション番号、並びに前記第２コンピュータを識別する第２ＩＤ、前記第２コンピュータに割り当てられている第２コンピュータアドレス、及び前記第２コンピュータ内でデータを受信するアプリケーションに割り当てられている第２アプリケーション番号を記憶し、
前記第１コンピュータから受信したパケット内に転送用パケットであることを示す転送用ヘッダが含まれているかを調べ、
前記転送用ヘッダが含まれている場合は、前記第１パケットから送信元コンピュータアドレスとして前記第１コンピュータアドレス及び送信元アプリケーション番号として前記第１アプリケーション番号を読み取り、前記第１コンピュータアドレス及び前記第１アプリケーション番号に対応する前記第１ＩＤを取得し、前記第１パケット内に含まれている前記第２ＩＤを前記第１ＩＤに変更し、かつ前記第２ＩＤに対応する前記第２コンピュータアドレスを宛先コンピュータアドレスとし、前記第２アプリケーション番号を宛先アプリケーション番号として含む第２パケットを生成して転送し、
前記転送用ヘッダが含まれていない場合は、前記第１パケットから送信元コンピュータアドレスとして前記第１コンピュータアドレス及び送信元アプリケーション番号として前記第１アプリケーション番号を読み取り、前記第１コンピュータアドレス及び前記第１アプリケーション番号に対応する前記第１ＩＤ用のデータ格納領域に、前記第１パケット内のデータを保存する、ことを特徴とするパケット転送・受信方法。
【請求項３】
第２コンピュータが、第１コンピュータ又は第３コンピュータにおいて生成されたデータを含むパケットを受信する方法であって、前記第２コンピュータは、
少なくとも前記第１コンピュータを識別する第１ＩＤ、前記第３コンピュータを識別する第３ＩＤ、前記第３コンピュータの第３コンピュータアドレス、前記第３コンピュータ内でデータの転送をするアプリケーションに割り当てられている第３アプリケーション番号を予め記憶し、
受信したパケット内に転送されてきたパケットであることを示す転送用ヘッダが含まれているかを調べ、
前記転送用ヘッダが含まれている場合は、前記パケットから前記第１ＩＤを読み取り、前記第１ＩＤ用のデータ格納領域に前記パケット内のデータを保存し、
前記転送用ヘッダが含まれていない場合は、前記パケットから送信元コンピュータアドレスとして前記第３コンピュータアドレス及び送信元アプリケーション番号として前記第３アプリケーション番号を読み取り、前記第３コンピュータアドレス及び前記第３アプリケーション番号に対応する前記第３ＩＤ用のデータ格納領域に、前記パケット内のデータを保存する、ことを特徴とするパケット受信方法。
【請求項４】
第１、第２及び第３コンピュータ間で相互にデータを送受信する場合において、前記第１コンピュータに、直接接続が不可能な前記第２コンピュータ又は直接接続が可能な前記第３コンピュータへ送るパケットを生成させるためのプログラムであって、前記第１コンピュータを、
少なくとも前記第２コンピュータを識別する第２ＩＤ、前記第２コンピュータの第２コンピュータアドレス、前記第２コンピュータ内でデータを受信するアプリケーションに割り当てられている第２アプリケーション番号、及び前記第２コンピュータへの直接接続の可否、並びに前記第３コンピュータを識別する第３ＩＤ、前記第３コンピュータの第３コンピュータアドレス、及び前記第３コンピュータ内でデータを受信又は転送するアプリケーションに割り当てられている第３アプリケーション番号を記憶する記憶手段、
データを送信しようとする宛先のコンピュータに直接接続できるかを判断し、その判断結果を出力する接続可否判別手段、
前記判断結果を受け取り、送信しようとするデータの宛先が直接接続できない前記第２コンピュータである場合に、転送用パケットであることを示す転送用ヘッダ及び前記第２ＩＤを付加する転送用ヘッダ付加手段、
送信しようとするデータの宛先が前記第２コンピュータ又は前記第３コンピュータのいずれであっても、
パケットを送信する手段に前記第３アプリケーション番号を宛先アプリケーション番号として通知するアプリケーション番号通知手段、
パケットを送信する手段に前記第３コンピュータアドレスを宛先コンピュータアドレスとして通知するコンピュータアドレス通知手段、
として機能させるためのパケット生成プログラム。
【請求項５】
第３コンピュータに、第１コンピュータから送信された第１パケットに含まれるデータを、受信又は第２コンピュータへ転送させるためのプログラムであって、前記第３コンピュータを、
少なくとも前記第１コンピュータを識別する第１ＩＤ、前記第１コンピュータの第１コンピュータアドレス、及び前記第１コンピュータ内でデータを生成したアプリケーションに割り当てられている第１アプリケーション番号、並びに前記第２コンピュータを識別する第２ＩＤ、前記第２コンピュータの第２コンピュータアドレス、及び前記第２コンピュータ内でデータを受信するアプリケーションに割り当てられている第２アプリケーション番号を記憶するクライアントリスト記憶手段、
前記第１パケット内に含まれるアプリケーションデータを記憶するアプリケーションデータ記憶手段、
前記第１パケット内に転送用パケットであることを示す転送用ヘッダが含まれているかを調べるヘッダ判別手段、
前記第１パケットから送信元コンピュータアドレスとして前記第１コンピュータアドレスを読み出すコンピュータアドレス読み出し手段、
前記第１パケットから送信元アプリケーション番号として前記第１アプリケーション番号を読み出すアプリケーション番号読み出し手段、
前記ヘッダ判別手段によって転送用ヘッダが含まれていないと判断された場合に、前記アプリケーションデータ記憶手段内の前記第１コンピュータアドレス及び前記第１アプリケーション番号に対応する前記第１ＩＤ用のデータ格納領域にアプリケーションデータを書き込むデータ書き込み手段、
前記ヘッダ判別手段によって転送用ヘッダが含まれていると判断された場合に、
前記第１パケットから前記第２ＩＤを読み出すクライアントＩＤ読み出し手段、
前記第１パケット内に含まれている前記第２ＩＤを、前記第１コンピュータアドレス及び前記第１アプリケーション番号に対応する前記第１ＩＤに変更するクライアントＩＤ変更手段、
パケットを送信する手段に前記第２アプリケーション番号を宛先アプリケーション番号として通知するアプリケーション番号通知手段、
パケットを送信する手段に前記第２コンピュータアドレスを宛先コンピュータアドレスとして通知するコンピュータアドレス通知手段、
として機能させるためのパケット転送・受信プログラム。
【請求項６】
第２コンピュータに、第１コンピュータ又は第３コンピュータにおいて生成されたデータを含むパケットを受信させるプログラムであって、前記第２コンピュータを、
少なくとも前記第１コンピュータを識別する第１ＩＤ、前記第３コンピュータを識別する第３ＩＤ、前記第３コンピュータの第３コンピュータアドレス、前記第３コンピュータ内でデータを転送するプログラムに割り当てられている第３アプリケーション番号を記憶するクライアントリスト記憶手段、
前記パケット内に含まれるアプリケーションデータを記憶するアプリケーションデータ記憶手段、
前記パケット内に転送されてきたパケットであることを示す転送用ヘッダが含まれているかを判別するヘッダ判別手段、
前記ヘッダ判別手段によって、前記転送用ヘッダが含まれていると判断された場合に、前記パケット内に含まれている前記第１ＩＤを読み出すクライアントＩＤ読み出し手段、
前記ヘッダ判別手段によって、前記転送用ヘッダが含まれていないと判断された場合に、
前記パケットから送信元コンピュータアドレスとして前記第３コンピュータアドレスを読み出すコンピュータアドレス読み出し手段、
前記パケットから送信元アプリケーション番号として前記第３アプリケーション番号を読み出すアプリケーション番号読み出し手段、
前記クライアントＩＤ読み出し手段によって前記第１ＩＤが読み出された場合は、前記アプリケーションデータ記憶手段内の前記第１ＩＤ用のデータ格納領域に、前記コンピュータアドレス読み出し手段によって前記第３コンピュータアドレスが読み出され、前記アプリケーション番号読み出し手段によって前記第３アプリケーション番号が読み出された場合は、前記アプリケーションデータ記憶手段内の前記第３ＩＤ用のデータ格納領域に、アプリケーションデータを書き込むデータ書き込み手段、
として機能させるためのパケット受信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クライアントコンピュータ同士が直接データを送受信するピアツーピアセッションにおいて使用されるパケット生成方法、パケット転送・受信方法、及びパケット受信方法並びにパケット生成プログラム、パケット転送・受信プログラム、及びパケット受信プログラムに関する。
【背景技術】
【０００２】
従来より、インターネット等のネットワークを介してネットワークゲームを提供するサーバー装置を介して複数のユーザ間でネットワークゲームを行うことができる（例えば、特許文献１参照。）。
【特許文献１】特開２００３−９３７４５（第１図）
【発明の開示】
【発明が解決しようとする課題】
【０００３】
また、クライアントコンピュータ（以下、単に「クライアント」と言う。）同士が直接データを送受信するピアツーピアセッションに基づくオンラインゲーム等も行われている。
【０００４】
しかしながら、ファイアウォール内のクライアント等、インターネットを経由しての受動的な接続が出来ないクライアントが存在する場合、そのようなクライアント同士は直接データを送受信することができない。そのため、そのようなクライアントはピア・ツー・ピア通信モデルを採用するオンラインゲームなどに参加することができない。
【０００５】
本発明は、このような状況に鑑みてなされたものであり、ファイアウォール内のクライアント等の受動的な接続が出来ないクライアントを、ピア・ツー・ピア通信モデルを採用するオンラインゲームなどへの参加を可能とするパケット生成方法、パケット転送・受信方法及びパケット受信方法、並びにパケット生成プログラム、パケット転送・受信プログラム及びパケット受信プログラムの提供を課題とする。
【課題を解決するための手段】
【０００６】
本発明の第１の特徴は、第１、第２及び第３コンピュータ間で相互にデータを送受信する場合において、第１コンピュータが、直接接続が不可能な第２コンピュータ又は直接接続が可能な第３コンピュータへ送るパケットを生成する方法であって、第１コンピュータは、（１）少なくとも第２コンピュータを識別する第２ＩＤ、第２コンピュータの第２コンピュータアドレス、第２コンピュータ内でデータを受信するアプリケーションに割り当てられている第２アプリケーション番号、及び第２コンピュータへの直接接続の可否、並びに第３コンピュータを識別する第３ＩＤ、第３コンピュータの第３コンピュータアドレス、及び第３コンピュータ内でデータを受信又は転送するアプリケーションに割り当てられている第３アプリケーション番号を記憶し、（２）記憶されている直接接続の可否に基づいて、データを送信しようとする宛先のコンピュータに直接接続できるかを判断し、（３）送信しようとするデータの宛先が直接接続不可能な第２コンピュータである場合は、転送用パケットであることを示す転送用ヘッダ及び第２ＩＤを含み、かつ第３コンピュータアドレスを宛先コンピュータアドレスとし、第３アプリケーション番号を宛先アプリケーション番号として含むパケットを生成し、（４）送信しようとするデータの宛先が直接接続可能な第３コンピュータである場合は、第３コンピュータアドレスを宛先コンピュータアドレスとし、第３アプリケーション番号を宛先アプリケーション番号として含むパケットを生成する、ことにある。
【０００７】
コンピュータアドレスには、ＩＰ(Internet Protocol)アドレスが含まれ、アプリケーション番号にはポート番号が含まれる。
【０００８】
本発明の第２の特徴は、第３コンピュータが、第１コンピュータから送信された第１パケットに含まれるデータを、受信又は第２コンピュータへ転送する方法であって、第３コンピュータは、（１）少なくとも第１コンピュータを識別する第１ＩＤ、第１コンピュータの第１コンピュータアドレス、及び第１コンピュータ内でデータを生成したアプリケーションに割り当てられている第１アプリケーション番号、並びに第２コンピュータを識別する第２ＩＤ、第２コンピュータの第２コンピュータアドレス、及び第２コンピュータ内でデータを受信するアプリケーションに割り当てられている第２アプリケーション番号を記憶し、（２）第１コンピュータから受信したパケット内に転送用パケットであることを示す転送用ヘッダが含まれているかを調べ、（３）転送用ヘッダが含まれている場合は、第１パケットから送信元コンピュータアドレスとして第１コンピュータアドレス及び送信元アプリケーション番号として第１アプリケーション番号を読み取り、第１コンピュータアドレス及び第１アプリケーション番号に対応する第１ＩＤを取得し、第１パケット内に含まれている第２ＩＤを第１ＩＤに変更し、かつ第２ＩＤに対応する第２コンピュータアドレスを宛先コンピュータアドレスとし、第２アプリケーション番号を宛先アプリケーション番号として含む第２パケットを生成して転送し、（４）転送用ヘッダが含まれていない場合は、第１パケットから送信元コンピュータアドレスとして第１コンピュータアドレス及び送信元アプリケーション番号として第１アプリケーション番号を読み取り、第１コンピュータアドレス及び第１アプリケーション番号に対応する第１ＩＤ用のデータ格納領域に、第１パケット内のデータを保存する、ことにある。
【０００９】
本発明の第３の特徴は、第２コンピュータが、第１コンピュータ又は第３コンピュータにおいて生成されたデータを含むパケットを受信する方法であって、第２コンピュータは、（１）少なくとも第１コンピュータを識別する第１ＩＤ、第３コンピュータを識別する第３ＩＤ、第３コンピュータの第３コンピュータアドレス、第３コンピュータ内でデータの転送をするアプリケーションに割り当てられている第３アプリケーション番号を予め記憶し、（２）受信したパケット内に転送されてきたパケットであることを示す転送用ヘッダが含まれているかを調べ、（３）転送用ヘッダが含まれている場合は、パケットから第１ＩＤを読み取り、第１ＩＤ用のデータ格納領域にパケット内のデータを保存し、（４）転送用ヘッダが含まれていない場合は、パケットから送信元コンピュータアドレスとして第３コンピュータアドレス及び送信元アプリケーション番号として第３アプリケーション番号を読み取り、第３コンピュータアドレス及び第３アプリケーション番号に対応する第３ＩＤ用のデータ格納領域に、パケット内のデータを保存する、ことにある。
【発明の効果】
【００１０】
前記の如く、本発明によれば、受動的な接続が可能なクライアントを経由して、受動的な接続ができないクライアント間においてデータの送受信が可能となる。
【発明を実施するための最良の形態】
【００１１】
以下、図面を参照しながら本発明の実施の形態を説明する。
【００１２】
図１に示すように、本実施形態においては第１クライアント１と、第２クライアント２と、ホストクライアント３とが、インターネットなどの通信ネットワーク４に接続されている。そして、第１クライアント１において生成されたアプリケーションデータが、ホストクライアント３に送信され、ホストクライアント３内に記憶され又は第２クライアント２に転送される。また、ホストクライアント３において生成されたアプリケーションデータが第２クライアント２に送信されることもある。
【００１３】
ホストクライアント３は、インターネット４を経由しての受動的な接続（passive connection)が可能である。一方、第１クライアント１及び第２クライアント２はいずれも受動的な接続ができない。
【００１４】
なお、本実施形態においては、第１クライアント１において生成されたアプリケーションデータが、第１クライアント１からホストクライアント３に送信され、ホストクライアント３から第２クライアント２に転送されるものとするが、本発明はかかる実施形態に限定されるものではない。第２クライアント２において生成されたアプリケーションデータが、第２クライアント２からホストクライアント３に送信され、ホストクライアント３から第１クライアント１に転送されるものとしても良い。
【００１５】
また、クライアント数は３つに限定されない。第１，２，３クライアント及びホストクライアントという４つのクライアント間、さらにはそれ以上の数のクライアント間でパケットを送受信するとしても良い。その場合に、第１クライアント−第２クライアント間では直接接続ができないが、第１クライアント−第３クライアント間では直接接続ができるとしても良い。
【００１６】
図２に示すように、本実施形態において使用される第１クライアント１は、全体の動作を制御する制御手段である中央処理装置（ＣＰＵ）１１と、インターネットなどの通信ネットワークを介してパケットの送受信が可能な通信制御インタフェース１２と、基本入出力システム（ＢＩＯＳ）などが記憶されるリードオンリーメモリ（ＲＯＭ）１３と、プログラム領域とデータ格納領域を有するランダムアクセスメモリ（ＲＡＭ）１４と、オペレーティングシステム（ＯＳ）や通信プログラム等を格納するハードディスクドライブ（ＨＤＤ）１５、それらを相互に接続するバス１０等を備える。第１クライアント１は、さらに文字等の入力に用いられるキーボードなどの入力装置１６や、ＣＲＴディスプレイ、液晶ディスプレイ、プラズマディスプレイ、ＥＬディスプレイなどのモニタ１７及びドットインパクトプリンタ、熱転写プリンタ、レーザプリンタ、インクジェットプリンタなどのプリンタ１８を含む出力装置１９や、入力装置１６、出力装置１９等の入出力を制御するために使用する入出力制御インタフェース２０とを備える。第２クライアント及びホストクライアントの構成も、第１クライアントの構成と同様とする。
【００１７】
本実施形態においては、直接接続が可能なクライアント間ではパケットが直接送受信され、直接接続が不可能なクライアント間ではパケットはホストクライアントを経由して送受信される。このため、パケットの送受信を開始する前に各クライアント間について直接接続の可否を調べ、その結果を記録したクライアントリストを作成する必要がある。
【００１８】
（クライアントリストの作成：第１クライアント内の処理その１）
図３に基づいて、第１クライアント１が、ホストクライアントリストを取得した後の処理について説明する。ホストクライアントリストには、接続を受け付けているホストクライアント（受動的な接続が可能なクライアント）のＩＰアドレス、ポート番号が記憶されている。
【００１９】
以下の説明において、先にホストクライアントに接続する第１クライアントを既存クライアント１、後からホストクライアントに接続する第２クライアントを新規クライアント２と適宜表示する。
【００２０】
なお、仮に第１クライアント、第２クライアント、第３クライアント、、、第ｎクライアントが存在し、第１，２クライアントが既にホストクライアントに接続している時に、第３クライアントがホストクライアントに接続した場合は、第１，２クライアントが既存クライアントとなり、第３クライアントが新規クライアントとなる。さらにその後、第４クライアントがホストクライアントに接続した場合は、第１〜３クライアントが既存クライアントとなり、第４クライアントが新規クライアントとなる。
【００２１】
ステップＳ１０１では、新規クライアント２は接続すべきホストクライアント３を決定し、そのホストクライアント３へ接続を要求する。
【００２２】
ステップＳ１０３では、ホストクライアント３への接続が失敗したらステップＳ１０５へ進み、成功したらステップＳ１０７へ進む。
【００２３】
ステップＳ１０５では、他のホストクライアントに接続するかを判断する。他のホストクライアントに接続する場合はステップＳ１０１へ戻り、接続しない場合は処理を終了する。
【００２４】
ステップＳ１０７では、クライアントリストをホストクライアント３から受信する。クライアントリストには、新規クライアント２がホストクライアント３に接続する以前からホストクライアント３に接続している既存クライアント１の情報が含まれている。
【００２５】
図４に示すように、クライアントリストには、各クライアントのクライアントＩＤ、ＩＰアドレス、ポート番号、プロファイル、直接接続の可否などが記憶される。プロファイルには、各クライアントのハンドル名などが含まれる。
【００２６】
各クライアント内の記憶手段に記憶される各クライアントリストの内容は、クライアントＩＤ、ＩＰアドレス、ポート番号、プロファイルに関しては、共通である。つまり、ホストクライアント３が記憶するクライアントリストの内容と第１クライアント１が記憶するクライアントリストの内容と第２クライアント２が記憶するクライアントリストの内容は、クライアントＩＤ、ＩＰアドレス、ポート番号、プロファイルに関しては同じである。
【００２７】
しかし、直接接続の可否に関しては、同じとは限らない。例えば、第３〜５のクライアントが存在し、第３クライアントと第４クライアントとは直接接続「可」、第３クライアントと第５クライアントとも直接接続「可」であるが、第４クライアントと第５クライアントとは直接接続「不可」であるとする。この場合、
・第３クライアント内のクライアントリストには、「第５クライアントへの直接接続：可」と記憶されるが、
・第４クライアント内のクライアントリストには、「第５クライアントへの直接接続：不可」と記憶される。同様に、
・第３クライアント内のクライアントリストには、「第４クライアントへの直接接続：可」と記憶されるが、
・第５クライアント内のクライアントリストには、「第４クライアントへの直接接続：不可」と記憶される。
【００２８】
ステップＳ１０９では、受信したクライアントリストが新規クライアントのＲＡＭ（ランダム・アクセス・メモリ）に保存される。
【００２９】
このようにして、新規クライアントはホストクライアントへの接続を試み、接続に成功すればホストクライアントからクライアントリストを取得し、そのクライアントリストを自己のＲＡＭに保存する。
【００３０】
（クライアントリストの作成：ホストクライアント内の処理その１）
図５に基づいて、新規クライアント２から接続要求を受けたホストクライアント３における処理について説明する。
【００３１】
ステップＳ１１１では、ホストクライアント３は、新規クライアント２のＩＰアドレス、ポート番号、プロファイルを取得し、それらの情報をホストクライアント３が記憶しているクライアントリストに追加する。
【００３２】
ステップＳ１１３では、既存クライアント１に関するクライアントリストを、新規クライアント２に送信する。かかるクライアントリストには、既存クライアント１のクライアントＩＤ、ＩＰアドレス、ポート番号及びプロファイルが記憶されている。
【００３３】
ステップＳ１１５では、新規クライアント２の情報を、既存クライアント１に送信する。送信される新規クライアント２の情報には、クライアントリストに追加された新規クライアント２のクライアントＩＤ、ＩＰアドレス、ポート番号及びプロファイルが含まれる。
【００３４】
このようにして、
・新規クライアント２のＩＰアドレス等がホストクライアント３内に記憶されているクライアントリストに追加され、
・既存クライアント１のＩＰアドレス等が新規クライアント２に送信され、
・新規クライアント２のＩＰアドレス等が既存クライアント１に送信される。
【００３５】
（クライアントリストの作成：既存クライアント内の処理その１）
図６に基づいて、ホストクライアント３から新規クライアント２の接続参加を通知された既存クライアント１における処理について説明する。
【００３６】
ステップＳ１２１では、ホストクライアント３から送信されてきた新規クライアント２の情報を受信し、その情報を既存クライアント１内に記憶されているクライアントリストに追加する。
【００３７】
ステップＳ１２３では、既存クライアント１は、新規クライアント２に対して接続を要求する。
【００３８】
ステップＳ１２５では、既存クライアント１から新規クライアント２に対する接続が成功したかを判断する。接続に成功しなかった場合はステップＳ１２７へ進み、接続に成功した場合はステップＳ１２８へ進む。
【００３９】
ステップＳ１２７では、既存クライアント１内に記憶されているクライアントリストの「新規クライアントに対する接続可否のステータスを書き込むための領域」に「接続不可」のステータスを書き込む。
【００４０】
一方、ステップＳ１２８では、その領域に「接続可」のステータスを書き込む。
【００４１】
ステップＳ１２９では、接続確認結果を新規クライアント２のクライアントＩＤと共にホストクライアント３に通知する。
【００４２】
このようにして、既存クライアント１から新規クライアント２への接続結果が、既存クライアント１内のクライアントリストに書き込まれると共に、ホストクライアント３に通知される。
【００４３】
（クライアントリストの作成：ホストクライアント内の処理その２）
図７に基づいて、既存クライアント１から新規クライアント２への接続確認結果を、既存クライアント１から受信したホストクライアント３における処理について説明する。
【００４４】
ステップＳ１３１では、ホストクライアント３が「既存クライアント１から新規クライアント２への接続確認結果」及び「新規クライアント２のクライアントＩＤ」を、既存クライアント１から受信する。
【００４５】
ステップＳ１３３では、ホストクライアント３が「既存クライアント１から新規クライアント２への接続確認結果」及び「既存クライアント１のクライアントＩＤ」を、新規クライアント２へ送信する。
【００４６】
このようにして、「既存クライアント１から新規クライアント２への接続確認結果」が、既存クライアント１からホストクライアント３を経由して新規クライアント２に通知される。
【００４７】
（クライアントリストの作成：新規クライアント内の処理その２）
図８に基づいて、既存クライアント１から自己への接続確認結果を、ホストクライアント３を経由して受信した新規クライアント２における処理について説明する。
【００４８】
ステップＳ１４１では、新規クライアント２は、「既存クライアント１から自己への接続確認結果」を「既存クライアント１のクライアントＩＤ」と共に、ホストクライアント３から受信する。ここで「自己」とは、新規クライアント２のことである。
【００４９】
ステップＳ１４２では、「既存クライアント１から新規クライアント２への接続確認結果」の内容が接続可か接続不可かを判断する。「接続不可」である場合はステップＳ１４３へ進み、「接続可」である場合はステップＳ１４５へ進む。
【００５０】
ステップＳ１４５では、新規クライアント２内のクライアントリストの「既存クライアント１から新規クライアント２への接続可否のステータスを書き込むための領域」に「接続可」である旨を書き込み、処理を終了する。
【００５１】
ステップＳ１４３では、ホストクライアント３から受信した既存クライアント１のクライアントＩＤに基づき、新規クライアント２内のクライアントリストから既存クライアント１のＩＰアドレス、ポート番号を取得する。
【００５２】
ステップＳ１４４では、新規クライアント２が既存クライアント１に対して接続を要求する。
【００５３】
ステップＳ１４６では、新規クライアント２から既存クライアント１への接続が成功したかを判断する。接続が成功しなかった場合はステップＳ１４７へ進み、接続が成功した場合はステップＳ１４８へ進む。
【００５４】
ステップＳ１４７では、新規クライアント２内のクライアントリストの既存クライアント１への接続可否を書き込むべき領域に「接続不可」のステータスを書き込み、ステップＳ１４９へ進む。
【００５５】
一方、ステップＳ１４８では、新規クライアント２内のクライアントリストの既存クライアント１への接続可否を書き込むべき領域に「接続可」のステータスを書き込む。
【００５６】
ステップＳ１４９では、「新規クライアント２から既存クライアント１への接続確認結果」を、接続要求対象である既存クライアント１のクライアントＩＤと共にホストクライアント３に送信する。
【００５７】
このようにして、
１）既存クライアント１から新規クライアント２への接続が可能な場合は、新規クライアント２内のクライアントリストに「接続可」である旨が書き込まれる。
【００５８】
２）既存クライアント１から新規クライアント２への接続が不可な場合は、新規クライアント２から既存クライアント１への接続が可能か不可能かを確認し、
２−１）新規クライアント２から既存クライアント１への接続も不可能である場合は、新規クライアント２と既存クライアント１とは直接的な接続（ホストクライアント３を経由しないパケットの送受信）が不可能と判断され、
２−２）新規クライアント２から既存クライアント１への接続が可能である場合は、新規クライアント２と既存クライアント１とは直接的な接続（ホストクライアント３を経由しないパケットの送受信）が可能と判断される。
【００５９】
既存クライアント１から新規クライアント２への接続が不可能な場合であっても、新規クライアント２から既存クライアント１への接続が可能な場合もあるので、既存クライアント１から新規クライアント２への接続が不可能な場合には、新規クライアント２から既存クライアント１への接続を試みる。
【００６０】
新規クライアント２から既存クライアント１への接続が成功した場合は、既存クライアント１に記憶されているクライアントリスト内の「新規クライアント２への直接接続のステータス」を「不可」から「可」へ書き換えるために、接続結果をホストクライアント３に送信する。
【００６１】
また、新規クライアント２から既存クライアント１への接続も成功しなかった場合であっても、接続結果をホストクライアント３に送信して処理を終了する。接続結果はその後、既存クライアント１へ転送される。既存クライアント１に記憶されているクライアントリスト内の「新規クライアント２への直接接続のステータス」は、転送されてきた接続結果によって上書される。転送されてきた接続結果の内容は「直接接続：不可」であるから、既存クライアント１に記憶されているクライアントリスト内の「新規クライアント２への直接接続のステータス」は「不可」のままである。
【００６２】
（クライアントリストの作成：ホストクライアント内の処理その３）
図９に基づいて、「新規クライアント２から既存クライアント１への接続確認結果」を、新規クライアント２から受信したホストクライアント３における処理について説明する。
【００６３】
ステップＳ１５１では、ホストクライアント３は、「新規クライアント２から既存クライアント１への接続確認結果」を、「既存クライアント１のクライアントＩＤ」と共に、新規クライアント２から受信する。
【００６４】
ステップＳ１５３では、新規クライアント２から受信した接続確認結果を、当該新規クライアント２のクライアントＩＤと共に、既存クライアント１に送信する。
【００６５】
ホストクライアント３は、新規クライアント２から受信した既存クライアント１のクライアントＩＤに対応するポート番号、ＩＰアドレスをホストクライアント３内のクライアントリストから読み取り、読み取られたポート番号を宛先ポート番号とし、かつ読み取られたＩＰアドレスを宛先ＩＰアドレスとして、既存クライアント１へ送信するパケットの生成に利用する。  
このようにして、新規クライアント２から既存クライアント１への接続確認結果が、ホストクライアント３を経由して既存クライアント１へ送信される。
【００６６】
（クライアントリストの作成：既存クライアント内の処理その２）
図１０に基づいて、「新規クライアント２から既存クライアント１への接続確認結果」を、ホストクライアント３から受信した既存クライアント１における処理について説明する。
【００６７】
ステップＳ１６１では、既存クライアント１は、「新規クライアント２から自己への接続確認結果」を、ホストクライアント３を経由して受信する。ここで「自己」とは、既存クライアント１を意味する。
【００６８】
ステップＳ１６３では、ホストクライアント３から受信した接続確認結果を、既存クライアント１内のクライアントリストに書き込む。
【００６９】
このようにして、既存クライアント１と新規クライアント２とがホストクライアント３を経由することなくパケットを送受信可能か、それともホストクライアント３を経由しなければパケットを送受信できないのかが、既存クライアント１及び新規クライアント２の各クライアント内のクライアントリストに書き込まれる。
【００７０】
（第１クライアントにおけるパケット生成）
図１１に示すように、本実施形態のパケット生成プログラムが図２に例示するハードウェア構成の第１クライアント１に読み込まれることにより、クライアントリスト記憶手段１０１、接続可否判別手段１０３、転送用ヘッダ付加手段１０５、ポート番号通知手段１０７、ＩＰアドレス通知手段１０９、パケット送受信手段１１１などの具体的手段がバス１１３を介して接続されているパケット生成装置が構築される。
【００７１】
接続可否判別手段１０３は、クライアントリスト記憶手段１０１に記憶されているクライアントリストの各クライアントに対する直接接続の可否を書き込むフィールド（以下「直接接続可否フィールド」と言う。）を読むことにより、アプリケーションデータの送信先であるクライアントへの直接接続の可否を判断する。
【００７２】
本実施形態においては、送信先がホストクライアント３であるなら直接接続「可」と判断し、送信先が第２クライアント２であるなら直接接続「不可」と判断する。
【００７３】
転送用ヘッダ付加手段１０５は、接続可否判別手段１０３がアプリケーションデータの送信先であるクライアントへの直接接続「不可」と判断した場合に、転送用パケットであることを示す転送用ヘッダと、送信先である第２クライアント２のクライアントＩＤをアプリケーションヘッダに付加する。
【００７４】
転送用ヘッダ付加手段１０５は、接続可否判別手段１０３がアプリケーションデータの送信先であるクライアントへの直接接続「不可」と判断した場合にのみ転送用ヘッダ及びクライアントＩＤを付加する。接続可否判別手段１０３がアプリケーションデータの送信先であるクライアントへの直接接続「可」と判断した場合には、転送用ヘッダもクライアントＩＤも付加しない。本実施形態においては、アプリケーションデータの送信先が第２クライアント２であるなら転送用ヘッダ及び第２クライアントのクライアントＩＤを付加し、送信先がホストクライアント３であるなら転送用ヘッダなどを付加する必要はない。
【００７５】
ポート番号通知手段１０７は、パケット送受信手段１１１に含まれるＴＣＰヘッダ又はＵＤＰヘッダ生成手段（図示せず）に宛先ポート番号となるポート番号を通知する。接続可否判別手段１０３が、アプリケーションデータの送信先となるクライアントへ直接接続「可」と判断した場合は、その送信先となるクライアントのポート番号を宛先ポート番号として通知する。接続可否判別手段１０３が、アプリケーションデータの送信先となるクライアントへ直接接続「不可」と判断した場合は、ホストクライアント３のポート番号を宛先ポート番号として通知する。
【００７６】
ＩＰアドレス通知手段１０９は、パケット送受信手段１１１に含まれるＩＰヘッダ生成手段（図示せず）に宛先ＩＰアドレスとなるＩＰアドレスを通知する。接続可否判別手段１０３が、アプリケーションデータの送信先となるクライアントへ直接接続「可」と判断した場合は、その送信先となるクライアントのＩＰアドレスを宛先ＩＰアドレスとして通知する。接続可否判別手段１０３が、アプリケーションデータの送信先となるクライアントへ直接接続「不可」と判断した場合は、ホストクライアント３のＩＰアドレスを宛先ＩＰアドレスとして通知する。
【００７７】
次に、図１２に基づいて、第１クライアントにおけるパケット生成処理の流れを説明する。
【００７８】
ステップＳ２０１では、接続可否判別手段１０３が送信先のクライアントに対する直接接続の可否を判断する。直接接続「可」であるならステップＳ２０７へ進み、「不可」であるならステップＳ２０３へ進む。
【００７９】
ステップＳ２０３では、転送用ヘッダ付加手段１０５が、送信先のクライアントＩＤ及び転送用ヘッダを付加する。転送用ヘッダ及びアプリケーションヘッダはそれに続くデータの種類を示す。例えば、ヘッダ内のデータの値が「０」であるなら転送用ヘッダであることを示し、「１」であるなら後続のデータがチャットデータであることを示し、「２」であるなら後続のデータが位置データであることを示す。
【００８０】
ステップＳ２０５では、
・ポート番号通知手段１０７がクライアントリスト記憶手段１０１に記憶されているクライアントリストからホストクライアントのポート番号を取得し、ＴＣＰ又はＵＤＰヘッダ生成手段（図示せず）へ通知し、
・ＴＣＰ又はＵＤＰヘッダ生成手段がホストクライアントのポート番号を宛先ポート番号とするＴＣＰ又はＵＤＰヘッダを生成し、
・ＩＰアドレス通知手段１０９がクライアントリストからホストクライアントのＩＰアドレスを取得し、ＩＰヘッダ生成手段（図示せず）へ通知し、
・ＩＰヘッダ生成手段がホストクライアントのＩＰアドレスを宛先ＩＰアドレスとするＩＰヘッダを生成する。
【００８１】
ステップＳ２０７では、
・ポート番号通知手段１０７がクライアントリストから送信先のクライアントのポート番号を取得し、ＴＣＰ又はＵＤＰヘッダ生成手段（図示せず）へ通知し、
・ＴＣＰ又はＵＤＰヘッダ生成手段が送信先のクライアントのポート番号を宛先ポート番号とするＴＣＰ又はＵＤＰヘッダを生成し、
・ＩＰアドレス通知手段１０９がクライアントリストから送信先のクライアントのＩＰアドレスを取得し、ＩＰヘッダ生成手段（図示せず）へ通知し、
・ＩＰヘッダ生成手段が送信先のクライアントのＩＰアドレスを宛先ＩＰアドレスとするＩＰヘッダを生成する。
【００８２】
図１３（Ａ）に示すように、接続可否判別手段１０３がアプリケーションデータの送信先であるクライアントへの直接接続「不可」と判断した場合、アプリケーションヘッダに「転送用ヘッダ」及び「送信先である第２クライアント２のクライアントＩＤ」が付加される。そして、その後にホストクライアントのポート番号を宛先ポート番号とするＴＣＰ又はＵＤＰヘッダが付加され、さらにホストクライアントのＩＰアドレスを宛先ＩＰアドレスとするＩＰヘッダが付加される。
【００８３】
一方、接続可否判別手段１０３が、アプリケーションデータの送信先であるクライアントへの直接接続「可」と判断した場合には、転送用ヘッダなどが付加されることなく、アプリケーションヘッダに、送信先であるクライアントのポート番号を宛先ポート番号とするＴＣＰ又はＵＤＰヘッダが付加され、さらにその送信先であるクライアントのＩＰアドレスを宛先ＩＰアドレスとするＩＰヘッダが付加される。
【００８４】
（ホストクライアントにおけるパケット転送・受信）
図１４に示すように、本実施形態のパケット転送・受信プログラムが図２に例示するハードウェア構成のホストクライアント３に読み込まれることにより、パケット受信手段２０１、ヘッダ判別手段２０３、ＩＰアドレス読み出し手段２０５、ポート番号読み出し手段２０６、クライアントＩＤ読み出し手段２０７、クライアントＩＤ変更手段２０９、ポート番号通知手段２１１、ＩＰアドレス通知手段２１３、パケット送信手段２１５、クライアントリスト記憶手段２１７、データ書き込み手段２１９、アプリケーションデータ記憶手段２２１などの具体的手段がバス２２３を介して接続されているパケット転送・受信装置が構築される。
【００８５】
パケット受信手段２０１は、第１クライアント１から送信されたパケットを受信する。
【００８６】
ヘッダ判別手段２０３は、受信したパケット内のＴＣＰヘッダ又はＵＤＰヘッダとアプリケーションヘッダとの間に転送用ヘッダが存在するかを調べる。
【００８７】
まず、ホストクライアントが受信したパケット内に転送用ヘッダが存在する場合について説明する。
【００８８】
ＩＰアドレス読み出し手段２０５は、受信したパケットのＩＰヘッダの送信元ＩＰアドレスを読み出し、クライアントＩＤ読み出し手段２０７に通知する。
【００８９】
ポート番号読み出し手段２０６は、受信したパケットのＴＣＰ又はＵＤＰヘッダの送信元ポート番号を読み出し、クライアントＩＤ読み出し手段２０７に通知する。
【００９０】
クライアントＩＤ読み出し手段２０７は、読み出された送信元ＩＰアドレス及び送信元ポート番号に対応するクライアントＩＤ（第１クライアント１のクライアントＩＤ）をクライアントリスト記憶手段２１７に記憶されているクライアントリストから読み出し、クライアントＩＤ変更手段２０９に通知する。
【００９１】
また、クライアントＩＤ読み出し手段２０７は、転送用ヘッダとアプリケーションヘッダとの間に存在するクライアントＩＤ（第２クライアント２のクライアントＩＤ）を読み出し、ポート番号通知手段２１１及びＩＰアドレス通知手段２１３に通知する。
【００９２】
クライアントＩＤ変更手段２０９は、受信パケット中の送信先のクライアントＩＤ（第２クライアント２のクライアントＩＤ）を、クライアントＩＤ読み出し手段２０７から通知された送信元のクライアントＩＤ（第１クライアント１のクライアントＩＤ）に変更する。
【００９３】
図１３（Ｂ）に、ホストクライアントによって、送信先のクライアントＩＤが、送信元のクライアントＩＤに書き換えられた状態を示す。
【００９４】
ポート番号通知手段２１１は、クライアントＩＤ読み出し手段２０７から通知された送信先のクライアントＩＤ（第２クライアント２のクライアントＩＤ）に対応するポート番号をパケット送信手段２１５に含まれるＴＣＰヘッダ又はＵＤＰヘッダ生成手段（図示せず）に通知する。ＴＣＰヘッダ又はＵＤＰヘッダ生成手段は、第２クライアント２のポート番号を宛先ポート番号とするＴＣＰヘッダ又はＵＤＰヘッダを生成する。
【００９５】
ＩＰアドレス通知手段２１３は、クライアントＩＤ読み出し手段２０７から通知された送信先のクライアントＩＤ（第２クライアント２のクライアントＩＤ）に対応するＩＰアドレスをパケット送信手段２１５に含まれるＩＰヘッダ生成手段（図示せず）に通知する。ＩＰヘッダ生成手段は、第２クライアント２のＩＰアドレスを宛先ＩＰアドレスとするＩＰヘッダを生成する。
【００９６】
このようにして、第１クライアント１において生成されたアプリケーションデータは、アプリケーションデータを生成した第１クライアントのクライアントＩＤと共に、第２クライアントに転送される。
【００９７】
次に、ホストクライアント３が受信したパケット内に転送用ヘッダが存在しない場合について説明する。
【００９８】
ＩＰアドレス読み出し手段２０５は、受信したパケットのＩＰヘッダの送信元ＩＰアドレスを読み出し、クライアントＩＤ読み出し手段２０７は、その読み出されたＩＰアドレスに対応するクライアントＩＤをクライアントリスト記憶手段２１７に記憶されているクライアントリストから読み出し、データ書き込み手段２１９は、その読み出されたクライアントＩＤ用としてアプリケーションデータ記憶手段２２１に確保されているデータ格納領域に、受信したパケット内のアプリケーションデータを保存する。
【００９９】
次に、図１５に基づいて、ホストクライアントにおけるパケット転送・受信処理の流れを説明する。
【０１００】
ステップＳ２１１では、パケット受信手段２０１は、送信元の第１クライアントからパケットを受信する。
【０１０１】
ステップＳ２１２では、ヘッダ判別手段２０３は、転送用ヘッダの有無を判断する。ＩＰヘッダを読み、ＴＣＰヘッダ又はＵＤＰヘッダを読み、次に読むヘッダの値が「０」であるなら転送用ヘッダ「有り」と判断しステップＳ２１４へ進み、「０以外」であるなら転送用ヘッダ「無し」と判断しステップＳ２１８へ進む。
【０１０２】
ステップＳ２１４では、
・ＩＰアドレス読み出し手段２０５が受信したパケットのＩＰヘッダの送信元ＩＰアドレスを読み出し、
・ポート番号読み出し手段２０６が受信したパケットのＴＣＰヘッダ又はＵＤＰヘッダの送信元ポート番号を読み出し、
・クライアントＩＤ読み出し手段２０７が、その読み出された送信元ＩＰアドレス及び送信元ポート番号に対応する送信元クライアントのクライアントＩＤ（第１クライアント１のクライアントＩＤ）をクライアントリスト記憶手段２１７に記憶されているクライアントリストから読み出す。
【０１０３】
ステップＳ２１５では、クライアントＩＤ変更手段２０９が、転送用ヘッダとアプリケーションヘッダとの間に存在するクライアントＩＤ（第２クライアント２のクライアントＩＤ）を、クライアントＩＤ読み出し手段２０７によってクライアントリストから読み出された送信元クライアントのクライアントＩＤ（第１クライアント１のクライアントＩＤ）に書き換える。
【０１０４】
ステップＳ２１６では、ホストクライアント３が受信したパケット内に存在する送信先クライアントのクライアントＩＤ（第２クライアント２のクライアントＩＤ）に対応するポート番号とＩＰアドレスがクライアントリストから読み出され、
・ポート番号は、ポート番号通知手段２１１によってＴＣＰ又はＵＤＰヘッダ生成手段（図示せず）に通知され、
・通知されたポート番号を宛先ポート番号とするＴＣＰ又はＵＤＰヘッダが生成され、
・ＩＰアドレスは、ＩＰアドレス通知手段２１３によってＩＰヘッダ生成手段（図示せず）に通知され、
・通知されたＩＰアドレスを宛先ＩＰアドレスとするＩＰヘッダが生成される。
【０１０５】
ステップＳ２１８では、
・ＩＰアドレス読み出し手段２０５によって、ホストクライアント３が受信したパケットのＩＰヘッダから送信元ＩＰアドレスが読み出され、
・ポート番号読み出し手段２０６によって、ホストクライアント３が受信したパケットのＴＣＰ又はＵＤＰヘッダから送信元ポート番号が読み出され、
・その送信元ＩＰアドレス及び送信元ポート番号に対応するクライアントＩＤ（第１クライアント１のクライアントＩＤ）がクライアントリストから読み出され、
・データ書き込み手段２１９が、ホストクライアント３が受信したパケットのアプリケーションデータを、アプリケーションデータ記憶手段２２１内の第１クライアント用のデータ格納領域に記憶する。
【０１０６】
このようにして、第１クライアントにおいて生成されたアプリケーションデータであって、
・転送用ヘッダを有するパケットに含まれるアプリケーションデータは、第２クライアントに転送され、
・転送用ヘッダを有しないパケットに含まれるアプリケーションデータは、ホストクライアント３内のアプリケーションデータ記憶手段２２１の第１クライアント用のデータ格納領域に保存される。
【０１０７】
（第２クライアントにおけるパケットの受信）
図１６に示すように、本実施形態のパケット受信プログラムが図２に例示するハードウェア構成の第２クライアント２に読み込まれることにより、パケット送受信手段３０１、ヘッダ判別手段３０３、クライアントＩＤ読み出し手段３０５、ＩＰアドレス読み出し手段３０７、ポート番号読み出し手段３０９、データ書き込み手段３１１、クライアントリスト記憶手段３１３、アプリケーションデータ記憶手段３１５などの具体的手段がバス３１７を介して接続されているパケット受信装置が構築される。
【０１０８】
パケット受信手段３０１は、ホストクライアント３から送信されたパケットを受信する。
【０１０９】
ヘッダ判別手段３０３は、受信したパケット内に転送用ヘッダが含まれるかを調べる。
【０１１０】
ＩＰアドレス読み出し手段３０７は、受信したパケット内に転送用ヘッダが含まれない場合に、ＩＰヘッダ内の送信元ＩＰアドレスを読み出し、その送信元ＩＰアドレスをクライアントＩＤ読み出し手段３０５に通知する。
【０１１１】
ポート番号読み出し手段３０９は、受信したパケット内に転送用ヘッダが含まれない場合に、ＴＣＰ又はＵＤＰヘッダ内の送信元ポート番号を読み出し、その送信元ポート番号をクライアントＩＤ読み出し手段３０５に通知する。
【０１１２】
クライアントＩＤ読み出し手段３０５は、
（１）受信したパケット内に転送用ヘッダが含まれない場合には、ＩＰアドレス読み出し手段３０７から通知された送信元ＩＰアドレス及びポート番号読み出し手段３０９から通知された送信元ポート番号に対応するホストクライアント３のクライアントＩＤを、クライアントリスト記憶手段３１３に記憶されているクライアントリストから読み出し、その読み出されたクライアントＩＤをデータ書き込み手段３１１に通知する。
【０１１３】
（２）受信したパケット内に転送用ヘッダが含まれる場合には、転送用ヘッダとアプリケーションヘッダとの間に存在するクライアントＩＤを読み出し、データ書き込み手段３１１に通知する。
【０１１４】
データ書き込み手段３１１は、クライアントＩＤ読み出し手段３０５から通知されたクライアントＩＤに対応するデータ格納領域にアプリケーションデータを保存する。具体的には、
（１）受信したパケット内に転送用ヘッダが含まれない場合は、クライアントＩＤ読み出し手段３０５からホストクライアント３のクライアントＩＤを通知されるため、アプリケーションデータ記憶手段３１５のホストクライアント３用のデータ格納領域にアプリケーションデータを保存する。
【０１１５】
（２）受信したパケット内に転送用ヘッダが含まれる場合は、クライアントＩＤ読み出し手段３０５から第１クライアント１のクライアントＩＤを通知されるため、アプリケーションデータ記憶手段３１５の第１クライアント１用のデータ格納領域にアプリケーションデータを保存する。
【０１１６】
次に、図１７に基づいて、第２クライアント２におけるパケット受信処理の流れを説明する。
【０１１７】
ステップＳ２２１では、第２クライアント２はデータを受信する。具体的には、パケット受信手段３０１が、第２クライアント２のＩＰアドレスを宛先ＩＰアドレスとするパケットを受信する。
【０１１８】
ステップＳ２２３では、ヘッダの値が「０」かを判断する。具体的には、ヘッダ判別手段３０３が、ＩＰヘッダ、ＴＣＰヘッダ又はＵＤＰヘッダの次に読むヘッダの値が「０」であるなら転送用ヘッダ「有り」と判断してステップＳ２２５へ進み、「０以外」であるなら転送用ヘッダ「無し」と判断してステップＳ２２７へ進む。
【０１１９】
ステップＳ２２５では、データ中の送信元クライアントＩＤに基づき、ＲＡＭ上に設けた送信元クライアントのデータ格納領域にデータを保存する。具体的には、クライアントＩＤ読み出し手段３０５が、受信したパケット内の転送用ヘッダとアプリケーションヘッダとの間に存在するクライアントＩＤを読み出し、データ書き込み手段３１１が、読み出されたクライアントＩＤに対応するアプリケーションデータ記憶手段３１５のデータ格納領域にアプリケーションデータを保存する。
【０１２０】
本実施形態においては、第１クライアント１のクライアントＩＤが読み出され、第１クライアント１用のデータ格納領域にアプリケーションデータが保存される。
【０１２１】
ステップＳ２２７では、送信元クライアントのＩＰアドレス及びポート番号に基づき、ＲＡＭ上に設けた送信元クライアントのデータ格納領域にデータを保存する。具体的には、ＩＰアドレス読み出し手段３０７が、受信したパケットのＩＰヘッダ内から送信元ＩＰアドレスを読み出し、ポート番号読み出し手段３０９が、受信したパケットのＴＣＰ又はＵＤＰヘッダ内から送信元ポート番号を読み出し、クライアントＩＤ読み出し手段３０５が、送信元ＩＰアドレス及び送信元ポート番号に対応するクライアントＩＤをクライアントリストから読み出し、データ書き込み手段３１１が、アプリケーションデータ記憶手段３１５の読み出されたクライアントＩＤに対応するデータ格納領域にアプリケーションデータを保存する。
【０１２２】
本実施形態においては、ホストクライアント３のＩＰアドレス及びポート番号が読み出され、次いでホストクライアント３のクライアントＩＤが読み出され、そしてホストクライアント３用のデータ格納領域にアプリケーションデータが保存される。
【０１２３】
このようにして、
・ホストクライアント３において生成されたアプリケーションデータはホストクライアント３用のデータ格納領域に、
・第１クライアント１において生成されたアプリケーションデータは第１クライアント１用のデータ格納領域に、
それぞれ記憶される。
【０１２４】
上記の如く、
・転送されてきたパケットでない場合は、送信元ＩＰアドレスと送信元ポート番号に基づいて、アプリケーションデータを生成したクライアントが特定され、一方
・転送されてきたパケットである場合は、送信元ＩＰアドレス等を無視して、転送ヘッダとアプリケーションヘッダとの間に存在するクライアントＩＤに基づいて、アプリケーションデータを生成したクライアントが特定される。
【０１２５】
そして、本実施形態によれば、第１クライアント１と第２クライアント２が直接接続できない場合であっても、ホストクライアントを経由することによって、アプリケーションデータを送受信することが可能となる。
【０１２６】
なお、本実施形態において、コンピュータに割り当てられているコンピュータアドレスとしてＩＰアドレスを、アプリケーションに割り当てられているアプリケーション番号としてポート番号を、通信プロトコルとしてＴＣＰ(Transmission Control Protocol)又はＵＤＰ(User Datagram Protocol)及びＩＰ(Internet Protocol)を用いたが、本発明の技術的範囲はこれら識別番号やプロトコルに限定されるものではない。
【図面の簡単な説明】
【０１２７】
【図１】本発明の実施形態における第１クライアント、ホストクライアント及び第２クライアントの全体的な関係を示す図である。
【図２】本発明の実施形態にかかるクライアントのハードウェア構成例を示すブロック図である。
【図３】本発明の実施形態において、第１クライアントがホストクライアントに接続する処理の流れを示すフローチャートである。
【図４】本発明の実施形態におけるクライアントリストの一例を示す図である。
【図５】本発明の実施形態において、新規クライアント（第２クライアント）から接続要求を受けたホストクライアントにおける処理の流れを示すフローチャートである。
【図６】本発明の実施形態において、ホストクライアントから新規クライアントの接続参加を通知された既存クライアントにおける処理の流れを示すフローチャートである。
【図７】本発明の実施形態において、既存クライアントから新規クライアントへの接続確認結果を、既存クライアントから受信したホストクライアントにおける処理の流れを示すフローチャートである。
【図８】本発明の実施形態において、既存クライアントから新規クライアントへの接続確認結果を、ホストクライアントを経由して受信した新規クライアントにおける処理の流れを示すフローチャートである。
【図９】本発明の実施形態において、新規クライアントから既存クライアントへの接続確認結果を、新規クライアントから受信したホストクライアントにおける処理の流れを示すフローチャートである。
【図１０】本発明の実施形態において、新規クライアントから既存クライアントへの接続確認結果を、ホストクライアントから受信した既存クライアントにおける処理の流れを示すフローチャートである。
【図１１】本発明の実施形態のパケット生成プログラムが図２に例示するハードウェア構成の第１クライアントに読み込まれることによって構築されるパケット生成装置の構成を示すブロック図である。
【図１２】本発明の実施形態において、第１クライアントにおけるパケット生成処理の流れを示すフローチャートである。
【図１３】（Ａ）は、送信元クライアント（第１クライアント）からホストクライアントへ送信されるＴＣＰセグメントのデータ又はＵＤＰデータグラムのデータの概要を示す図であり、（Ｂ）は、ホストクライアントから送信先クライアント（第２クライアント）へ送信されるＴＣＰセグメントのデータ又はＵＤＰデータグラムのデータの概要を示す図である。
【図１４】本発明の実施形態のパケット転送・受信プログラムが図２に例示するハードウェア構成のホストクライアントに読み込まれることによって構築されるパケット転送・受信装置の構成を示すブロック図である。
【図１５】本発明の実施形態において、ホストクライアントにおけるパケット転送・受信処理の流れを示すフローチャートである。
【図１６】本発明の実施形態のパケット受信プログラムが図２に例示するハードウェア構成の第２クライアントに読み込まれることによって構築されるパケット受信装置の構成を示すブロック図である。
【図１７】本発明の実施形態において、第２クライアントにおけるパケット受信処理の流れを示すフローチャートである。
【符号の説明】
【０１２８】
１…第１クライアント
２…第２クライアント
３…ホストクライアント
１０１…クライアントリスト記憶手段
１０３…接続可否判別手段
１０５…転送用ヘッダ付加手段
１０７…ポート番号通知手段
１０９…ＩＰアドレス通知手段
１１１…パケット送信手段
１１３…バス
【図１】
2005033738.tif 000003
【図２】
2005033738.tif 000004
【図３】
2005033738.tif 000005
【図４】
2005033738.tif 000006
【図５】
2005033738.tif 000007
【図６】
2005033738.tif 000008
【図７】
2005033738.tif 000009
【図８】
2005033738.tif 000010
【図９】
2005033738.tif 000011
【図１０】
2005033738.tif 000012
【図１１】
2005033738.tif 000013
【図１２】
2005033738.tif 000014
【図１３】
2005033738.tif 000015
【図１４】
2005033738.tif 000016
【図１５】
2005033738.tif 000017
【図１６】
2005033738.tif 000018
【図１７】
2005033738.tif 000019