(57)【要約】  【課題】  本発明の例示的な諸実施形態は、複数のインターフェースを管理するコンピュータ実装方法、データ処理システム、及びコンピュータ・プログラム製品を提供する。  【解決手段】  アプリケーションは、前記複数のインターフェースのサブセットを選択する。前記選択に応答して、前記アプリケーション・プログラムは前記インターフェースのサブセットにバインドされ、前記インターフェースのサブセットをリスンする。  【選択図】  図３
2009534728.tif 000002
【特許請求の範囲】
【請求項１】
複数のインターフェースを管理するコンピュータ実装方法であって、
前記複数のインターフェースのサブセットをアプリケーションによって選択してインターフェースのサブセットを形成するステップと、
前記複数のインターフェースのサブセットが前記アプリケーションによって選択されたことに応答して、前記アプリケーションを前記インターフェースのサブセットにバインドするステップと、
を含み、
前記アプリケーションは、前記インターフェースのサブセットをリスンする、
方法。
【請求項２】
マスター・ソケットをオープンするステップと、
前記インターフェースのサブセット内の各インターフェースに関する子ソケットをオープンするステップと、
を更に含み、
前記マスター・ソケット及び子ソケットは、前記アプリケーションによってオープンされる、
請求項１に記載のコンピュータ実装方法。
【請求項３】
前記子ソケットを構成するステップ
を更に含む請求項２に記載のコンピュータ実装方法。
【請求項４】
前記子ソケットを構成する前記ステップは、
前記子ソケットと前記インターフェースのサブセット内の各インターフェースとをバインドするステップと、
前記マスター・ソケットを前記子ソケットと関連付けるステップと、
を含む、請求項３に記載のコンピュータ実装方法。
【請求項５】
前記マスター・ソケットを前記子ソケットと関連付ける前記ステップは、
前記子ソケットを前記マスター・ソケットによって維持されるアソシエーション・リストに追加するステップと、
前記マスター・ソケットを前記アソシエーション・リスト内の前記子ソケットとリンクさせるステップと、
を含む、請求項４に記載のコンピュータ実装方法。
【請求項６】
前記子ソケットのうちの１つを動的にクローズする要求を前記アプリケーションから受信するステップと、
前記子ソケットのうちの１つを動的にクローズする前記要求が前記アプリケーションから受信されたことに応答して、前記子ソケットのうちの１つをアソシエーション解除するステップと、
を更に含む請求項５に記載のコンピュータ実装方法。
【請求項７】
前記子ソケットのうちの１つをアソシエーション解除する前記ステップは、
前記子ソケットのうちの１つを前記アソシエーション・リストから削除するステップ
を含む、請求項６に記載のコンピュータ実装方法。
【請求項８】
新しい子ソケットを動的に追加する要求を前記アプリケーションから受信するステップと、
新しい子ソケットを動的に追加する前記要求が前記アプリケーションから受信されたことに応答して、前記新しい子ソケットを前記マスター・ソケットと関連付けるステップと、
を更に含む請求項５に記載のコンピュータ実装方法。
【請求項９】
アプリケーションに関する要求キューを前記マスター・ソケットによって管理するステップと、
前記子ソケットの１つからの要求を、要求キューの末尾の転送するステップであって、前記子ソケットの１つからの要求が、当該子ソケットの１つに関する要求キュー内の最初の要求であるステップと、
を更に含む請求項２に記載のコンピュータ実装方法。
【請求項１０】
複数のインターフェースを管理するデータ処理システムであって、
ネットワークに接続されるアプリケーション・サーバと、
アプリケーション・サーバ内の前記複数のインターフェースと、
前記複数のインターフェースを介して前記ネットワークにバインドされる、前記アプリケーション・サーバ内のアプリケーションと、
を備えるシステム。
【請求項１１】
前記複数のインターフェース内の各インターフェースにバインドされて子ソケットを形成するソケットと、
前記アプリケーションに接続され、各子ソケットと関連付けられるマスター・ソケットと、
を備える請求項１０に記載のデータ処理システム。
【請求項１２】
複数のインターフェースを管理するためのコンピュータ・プログラムであって、前記プログラムが、
前記複数のインターフェースのサブセットをアプリケーションによって選択してインターフェースのサブセットを形成する機能と、
前記複数のインターフェースのサブセットが前記アプリケーションによって選択されたことに応答して、前記アプリケーションを前記インターフェースのサブセットにバインドする機能と、
を備え、
前記アプリケーションは、前記インターフェースのサブセットをリスンする機能、
をコンピュータに実行させる、コンピュータ・プログラム。
【請求項１３】
マスター・ソケットをオープンする機能と、
前記インターフェースのサブセット内の各インターフェースに関する子ソケットをオープンする機能と、
を更に備え、
前記マスター・ソケット及び子ソケットは、前記アプリケーションによってオープンされる、
請求項１２に記載のコンピュータ・プログラム。
【請求項１４】
前記子ソケットを構成する機能
を更に備える請求項１３に記載のコンピュータ・プログラム。
【請求項１５】
前記子ソケットを構成する前記機能は、
前記子ソケットと前記インターフェースのサブセット内の前記各インターフェースとをバインドする機能と、
前記マスター・ソケットを前記子ソケットに関連付ける機能と、
を備える、請求項１４に記載のコンピュータ・プログラム。
【請求項１６】
前記マスター・ソケットを前記子ソケットと関連付ける前記機能は、
前記子ソケットを前記マスター・ソケットによって維持されるアソシエーション・リストに追加する機能と、
前記マスター・ソケットを前記アソシエーション・リスト内の前記子ソケットとリンクさせる機能と、
を備える、請求項１５に記載のコンピュータ・プログラム。
【請求項１７】
前記子ソケットのうちの１つを動的にクローズする要求を前記アプリケーションから受信する機能と、
前記子ソケットのうちの１つを動的にクローズする前記要求が前記アプリケーションから受信されたことに応答して、前記子ソケットのうちの１つをアソシエーション解除する機能と、
を更に備える請求項１６に記載のコンピュータ・プログラム。
【請求項１８】
前記子ソケットのうちの１つをアソシエーション解除する前記機能は、
前記子ソケットのうちの１つを前記アソシエーション・リストから削除する機能
を備える、請求項１７に記載のコンピュータ・プログラム。
【請求項１９】
新しい子ソケットを動的に追加する要求を前記アプリケーションから受信する機能と、新しい子ソケットを動的に追加する前記要求が前記アプリケーションから受信されたことに応答して、前記新しい子ソケットを前記マスター・ソケットと関連付ける機能と、
を更に備える請求項１６に記載のコンピュータ・プログラム。
【請求項２０】
アプリケーションに関する要求キューを前記マスター・ソケットによって管理する機能と、
前記子ソケットのうちの１つに由来する要求であって、当該１つの子ソケットに関する要求キュー内の第１の要求に相当する要求を、前記要求キューの末尾に転送する機能と、
を更に備える請求項１５に記載のコンピュータ・プログラム。
【請求項２１】
アプリケーションがネットワーク・アドレスのサブセットと通信するコンピュータ実装方法であって、
前記ネットワーク・アドレスのサブセットをアプリケーションによって識別するステップと、
前記ネットワーク・アドレスのサブセットとの間の接続を確立するステップと、
前記ネットワーク・アドレスのサブセットとの間の前記接続をアプリケーションによって受け入れるステップと、
を含むコンピュータ実装方法。
【請求項２２】
前記ネットワーク・アドレスのサブセットとの間の接続を確立する前記ステップは、
マスター・ソケットをオープンするステップと、
前記ネットワーク・アドレスのサブセット内の各ネットワーク・アドレスに関する子ソケットをオープンするステップと、
を含み、
前記マスター・ソケット及び子ソケットは、前記アプリケーションによってオープンされる、
請求項２１に記載のコンピュータ実装方法。
【請求項２３】
前記ネットワーク・アドレスのサブセット内の各ネットワーク・アドレスと前記子ソケットとをバインドするステップと、
前記子ソケットをリスンするステップと、
を更に含む請求項２２に記載のコンピュータ実装方法。
【請求項２４】
前記マスター・ソケットを前記子ソケットと関連付けるステップ
を更に含む請求項２２に記載のコンピュータ実装方法。
【請求項２５】
前記マスター・ソケットを前記子ソケットと関連付ける前記ステップは、
前記子ソケットをアソシエーション・リストに入力するステップと、
前記マスター・ソケットを前記子ソケットと共に前記アソシエーション・リストに列挙するステップと、
を含む、請求項２４に記載のコンピュータ実装方法。
【請求項２６】
前記子ソケットのうちの１つを動的にクローズする要求を前記アプリケーションから受信するステップと、
前記子ソケットのうちの１つを動的にクローズする前記要求が前記アプリケーションから受信されたことに応答して、前記子ソケットのうちの１つをアソシエーション解除するステップと、
を更に含む請求項２５に記載のコンピュータ実装方法。
【請求項２７】
前記子ソケットのうちの１つをアソシエーション解除する前記ステップは、
前記子ソケットのうちの１つを前記アソシエーション・リストから削除するステップ
を含む、請求項２６に記載のコンピュータ実装方法。
【請求項２８】
新しい子ソケットを動的に追加する要求を前記アプリケーションから受信するステップと、
新しい子ソケットを動的に追加する前記要求が前記アプリケーションから受信されたことに応答して、前記新しい子ソケットを前記マスター・ソケットと関連付けるステップと、
を更に含む請求項２５に記載のコンピュータ実装方法。
【請求項２９】
アプリケーションがネットワーク・アドレスのサブセットと通信するための機能を有するコンピュータ使用可能な媒体を含むコンピュータ・プログラムであって、
前記ネットワーク・アドレスのサブセットをアプリケーションによって識別する機能と、
前記ネットワーク・アドレスのサブセットとの間の接続を確立する機能と、
前記ネットワーク・アドレスのサブセットとの間の前記接続をアプリケーションによって受け入れる機能と、
を備えるコンピュータ・プログラム。
【請求項３０】
前記ネットワーク・アドレスのサブセットとの間の接続を確立する前記機能は、
マスター・ソケットをオープンする機能と、
前記ネットワーク・アドレスのサブセット内の各ネットワーク・アドレスに関する子ソケットをオープンする機能と、
を含み、
前記マスター・ソケット及び子ソケットは、前記アプリケーションによってオープンされる、
請求項２９に記載のコンピュータ・プログラム。
【請求項３１】
前記ネットワーク・アドレスのサブセット内の各ネットワーク・アドレスと前記子ソケットとをバインドする機能と、
前記子ソケットをリスンする機能と、
を更に備える請求項３０に記載のコンピュータ・プログラム。
【請求項３２】
前記マスター・ソケットを前記子ソケットと関連付ける機能
を更に備える請求項３０に記載のコンピュータ・プログラム。
【請求項３３】
前記マスター・ソケットを前記子ソケットと関連付ける前記機能は、
前記子ソケットをアソシエーション・リストに入力する機能と、
前記マスター・ソケットを前記子ソケットと共に前記アソシエーション・リストに列挙する機能と、
を含む、請求項３２に記載のコンピュータ・プログラム。
【請求項３４】
前記子ソケットのうちの１つを動的にクローズする要求を前記アプリケーションから受信する機能と、
前記子ソケットのうちの１つを動的にクローズする前記要求が前記アプリケーションから受信されたことに応答して、前記子ソケットのうちの１つをアソシエーション解除する機能と、
を更に備え、
前記子ソケットのうちの１つをアソシエーション解除する前記機能は、前記子ソケットのうちの１つを前記アソシエーション・リストから削除する命令を含む、
請求項３３に記載のコンピュータ・プログラム。
【請求項３５】
新しい子ソケットを動的に追加する要求を前記アプリケーションから受信する機能と、
新しい子ソケットを動的に追加する前記要求が前記アプリケーションから受信されたことに応答して、前記新しい子ソケットを前記マスター・ソケットと関連付ける機能と、
を更に備える請求項３３に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に改良型データ処理システムに関するものであり、特にインターフェースを管理する方法及び装置に関するものである。より詳細には、本発明は複数のインターネット・インターフェースを管理するコンピュータ実装方法、データ処理システム、及びコンピュータ・プログラム製品に関するものである。
【背景技術】
【０００２】
複数のネットワーク接続とインターフェースをとるアプリケーション・サーバの能力はこの１０年間で大幅に向上した。それまでのアプリケーション・サーバは、単一の又は小数のネットワーク接続にアクセスしていた。したがって、アプリケーション・サーバは処理すべき要求の数だけでなく、誰に対する要求を受信し応答すべきかを容易に管理することができた。しかしながら、インターネットの人気が高まるにつれアプリケーション・サーバが利用可能なネットワーク接続の数も増加した。したがって、要求の管理と処理の複雑さが増大している。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
典型的には、アプリケーション・サーバは要求を処理する上で、アプリケーションのインスタンスを要求元の個人にだけ又はネットワーク上のすべての個人に公開しなければならない。アプリケーション・サーバには接続を確立すべき個人を区別又は選択する能力がない。それ故、アプリケーション・サーバに残された選択肢は次の２つ、即ち、各個人に個別に対処すること、又はすべての個人に同時に対処することである。各個人に個別に対処する場合には、非効率的な煩わしい作業が発生する。一方、すべての個人に同時に対処する場合には、機密性及び安全性に関する問題が発生する。
【課題を解決するための手段】
【０００４】
本発明の例示的な実施形態は、複数のインターフェースを管理するコンピュータ実装方法、データ処理システム、及びコンピュータ・プログラム製品を提供する。アプリケーションが前記複数のインターフェースのサブセットを選択することにより、インターフェースのサブセットを形成する。前記選択に応答して、前記アプリケーションは前記インターフェースのサブセットにバインドされ、前記インターフェースのサブセットをリスンする。
【０００５】
以下では単なる例示として、添付図面を参照しながら本発明の好ましい実施形態について説明する。
【発明を実施するための最良の形態】
【０００６】
ここで添付図面、特に図１及び図２を参照すると、本発明の例示的な実施形態を実施することが可能なデータ処理環境の例示的な図が示されている。図１及び図２は単なる例示にすぎず、本発明の例示的な実施形態を実施することが可能な環境を限定することを主張するものではなく、そのように暗示することも意図しているわけではないことを理解していただきたい。
【０００７】
ここで添付図面を参照すると、図１には、本発明の例示的な実施形態の諸態様を実施することが可能な複数のデータ処理システムから成るネットワークが示されている。ネットワーク・データ処理システム１００は、本発明の例示的な実施形態を実施することが可能な複数のコンピュータから成るネットワークである。ネットワーク・データ処理システム１００はネットワーク１０２を含んでおり、ネットワーク１０２は、ネットワーク・データ処理システム１００内で互いに接続された様々なデバイスとコンピュータとの間の通信リンクを提供するのに使用される媒体である。ネットワーク１０２は、有線通信リンク、無線通信リンク、光ファイバ・ケーブルのような接続を含むことができる。
【０００８】
図示の例において、ネットワーク１０２には、サーバ１０４及びサーバ１０６ならびに記憶ユニット１０８が接続されている。また、ネットワーク１０２には、クライアント１１０、１１２、及び１１４も接続されている。これらのクライアント１１０、１１２、及び１１４は、例えばパーソナル・コンピュータであってもネットワーク・コンピュータであってもよい。図示の例において、サーバ１０４は、ブート・ファイルのようなデータと、オペレーティング・システム・イメージと、各種アプリケーションとをクライアント１１０、１１２、及び１１４に提供する。本例において、クライアント１１０、１１２、及び１１４は、サーバ１０４のクライアントに相当する。ネットワーク・データ処理システム１００は、図示されていない追加的なサーバ、クライアント、及び他のデバイスを含むこともできる。
【０００９】
図示の例において、ネットワーク・データ処理システム１００は、伝送制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）プロトコル・スイートを使用して互いに通信し合う世界中のネットワーク及びゲートウェイの集合体を表す、ネットワーク１０２を有するインターネットである。当該インターネットの中心には、データ及びメッセージを送る数千もの民間用、政府用、教育機関用他のコンピュータ・システムから成る主要なノード又はホスト・コンピュータ間の高速データ通信回線の基幹回線が存在する。言うまでもなく、ネットワーク・データ処理システム１００は、例えばイントラネットや、ローカル・エリア・ネットワーク（ＬＡＮ）や、広域ネットワーク（ＷＡＮ）等のいくつかの異なるタイプのネットワークとして実施することもできる。図１は一例として意図されたものであり、本発明の様々な実施形態に関するアーキテクチャ上の限定として意図されたものではない。
【００１０】
ここで図２を参照すると、本発明の例示的な実施形態の諸態様を実施することが可能なデータ処理システムのブロック図が示されている。データ処理システム２００は、本発明の例示的な実施形態に関する処理を実行するコンピュータ使用可能なコード又は命令を設置することが可能な、図１のサーバ１０４やクライアント１１０等のコンピュータの一例である。
【００１１】
図示の例において、データ処理システム２００は、ノース・ブリッジ及びメモリ・コントローラ・ハブ（ＮＢ／ＭＣＨ）２０２と、サウス・ブリッジ及び入力／出力（Ｉ／Ｏ）コントローラ・ハブ（ＳＢ／ＩＣＨ）２０４とを含むハブ・アーキテクチャを利用している。プロセッサ・ユニット２０６、メイン・メモリ２０８、及びグラフィックス・プロセッサ２１０は、ＮＢ／ＭＣＨ  ２０２に接続されている。グラフィックス・プロセッサ２１０は、高速グラフィックス・ポート（ＡＧＰ）を介してＮＢ／ＭＣＨ  ２０２に接続することができる。
【００１２】
図示の例において、ローカル・エリア・ネットワーク（ＬＡＮ）アダプタ２１２は、ＳＢ／ＩＣＨ  ２０４に接続されている。オーディオ・アダプタ２１６、キーボード及びマウス・アダプタ２２０、モデム２２２、読取り専用メモリ（ＲＯＭ）２２４、ユニバーサル・シリアル・バス（ＵＳＢ）ポート及び他の通信ポート２３２、ならびにＰＣＩ／ＰＣＩｅデバイス２３４は、バス２３８を介してＳＢ／ＩＣＨ  ２０４に接続されており、ハード・ディスク・ドライブ（ＨＤＤ）２２６及びＣＤ‐ＲＯＭドライブ２３０は、バス２４０を介してＳＢ／ＩＣＨ  ２０４に接続されている。ＰＣＩ／ＰＣＩｅデバイスとしては、例えばイーサネット（Ｒ）アダプタ、アドイン・カード、及びノート型コンピュータ用ＰＣカード等を挙げることができる。ＰＣＩはカード・バス・コントローラを使用する一方、ＰＣＩｅはこれを使用しない。ＲＯＭ  ２２４は、例えばフラッシュ・バイナリ入力／出力システム（ＢＩＯＳ）等であってもよい。
【００１３】
ＨＤＤ  ２２６及びＣＤ‐ＲＯＭドライブ２３０は、バス２４０を介してＳＢ／ＩＣＨ  ２０４に接続されている。ＨＤＤ  ２２６及びＣＤ‐ＲＯＭドライブ２３０は、例えば統合ドライブ・エレクトロニクス（ＩＤＥ）やシリアル・アドバンスト・テクノロジー・アタッチメント（ＳＡＴＡ）・インターフェース等を使用することができる。スーパーＩ／Ｏ（ＳＩＯ）デバイス２３６は、ＳＢ／ＩＣＨ  ２０４に接続することができる。
【００１４】
オペレーティング・システムは、プロセッサ２０６上で作動して、図２のデ‐タ処理システム２００内の様々なコンポーネントの制御を調整し実行するものである。クライアントとしてのオペレーティング・システムは、Ｍｉｃｒｏｓｏｆｔ（Ｒ）Ｗｉｎｄｏｗｓ（Ｒ）ＸＰのような市販のオペレーティング・システムであってもよい（「Ｍｉｃｒｏｓｏｆｔ」及び「Ｗｉｎｄｏｗｓ」は、マイクロソフト・コーポレーションの米国その他の国、又はその両方における商標である）。Ｊａｖａ（ＴＭ）プログラミング・システムのようなオブジェクト指向のプログラミング・システムは、上記オペレーティング・システムと連動して作動することができ、データ処理システム２００上で実行されているＪａｖａ（ＴＭ）プログラム又はアプリケーションから当該オペレーティング・システムをコールするものである（「Ｊａｖａ」は、サン・マイクロシステムズの米国その他の国、又はその両方における商標である）。
【００１５】
サーバとしてのデータ処理システム２００は、例えば拡張対話式エグゼクティブ（Ａｄｖａｎｃｅｄ  Ｉｎｔｅｒａｃｔｉｖｅ  Ｅｘｅｃｕｔｉｖｅ：ＡＩＸ（Ｒ））オペレーティング・システム又はＬＩＮＵＸ（Ｒ）オペレーティング・システムを実行するＩＢＭ（Ｒ）ｅＳｅｒｖｅｒ（ＴＭ）ｐＳｅｒｉｅｓ（Ｒ）コンピュータ・システムであってもよい（「ｅＳｅｒｖｅｒ」、「ｐＳｅｒｉｅｓ」、及び「ＡＩＸ」は、インターナショナル・ビジネス・マシーンズ・コーポレーションの米国その他の国、又はその両方における商標であり、「Ｌｉｎｕｘ」は、Ｌｉｎｕｓ  Ｔｏｒｖａｌｄｓ氏の米国その他の国、又はその両方における商標である）。データ処理システム２００は、複数のプロセッサを処理ユニット２０６内に含む対称型マルチプロセッサ（ＳＭＰ）システムであってもよい。別法として、シングル・プロセッサ・システムを採用することもできる。
【００１６】
上記オペレーティング・システムに対する命令、上記オブジェクト指向のプログラミング・システム、及びアプリケーション又はプログラムは、ＨＤＤ  ２２６のような記憶装置上に設置され、処理ユニット２０６による実行のためにメイン・メモリ２０８にロードすることができる。本発明の例示的な実施形態の各処理は、例えばメイン・メモリ２０８やＲＯＭ  ２２４等のメモリ内に設置することも、１つ又は複数の周辺デバイス２２６及び２３０内に設置することもできる機能を使用して、処理ユニット２０６によって実行される。
【００１７】
図１及び図２のハードウェアは実装形態に応じて変更され得ることが当業者には理解されるだろう。図１及び図２に示されるハードウェアに加えて又はその代わりに、フラッシュ・メモリ又は同等の不揮発性メモリ又は光ディスク・ドライブ等、他の内部ハードウェア又は周辺デバイスを使用することもできる。また、本発明の例示的な実施形態の各処理は、マルチプロセッサ・データ処理システムにも適用することができる。いくつかの実例において、データ処理システム２００は、オペレーティング・システム・ファイル又はユーザ生成データあるいはその両方を記憶する不揮発性メモリを提供するフラッシュ・メモリが組み込まれた携帯情報端末（ＰＤＡ）であってもよい。
【００１８】
バス・システムは、図２に示されるバス２３８やバス２４０のような１つ又は複数のバスから構成されることもある。言うまでもなく、上記バス・システムは、通信ファブリック又はアーキテクチャであって、当該ファブリック又はアーキテクチャに取り付けられた様々なコンポーネント又はデバイス間でデータの転送を実施する任意の通信ファブリック又はアーキテクチャを使用して実装することができる。通信ユニットは、図２のモデム２２２やネットワーク・アダプタ２１２等、データの送受信に使用される１つ又は複数のデバイスを含むことができる。メモリは、例えば図２のＮＢ／ＭＣＨ  ２０２内で見受けられるようなメイン・メモリ２０８、ＲＯＭ  ２２４、キャッシュ等であってもよい。図１及び図２に示される例及び上述の実例は、アーキテクチャ上の限定を暗示することを意図しているわけではない。例えば、データ処理システム２００は、ＰＤＡの形をとるだけでなく、タブレット・コンピュータ、ラップトップ・コンピュータ、あるいは電話デバイスとすることもできる。
【００１９】
本発明の諸実施形態は、複数のインターフェースを管理するコンピュータ実装方法、データ処理システム、及びコンピュータ・プログラム製品を提供する。アプリケーションは、前記複数のインターフェースのサブセットを選択する。前記選択に応答して、前記アプリケーションは前記インターフェースのサブセットにバインドされ、前記インターフェースのサブセットをリスンする。前記アプリケーションを前記インターフェースのサブセットにバインドするために、前記アプリケーションはまず、前記インターフェースのサブセット内の各インターフェースに関するマスター・ソケット（ｍａｓｔｅｒ  ｓｏｃｋｅｔ）及び子ソケット（ｃｈｉｌｄ  ｓｏｃｋｅｔ）をオープンする。前記マスター・ソケット及び前記子ソケットは互いに関連付けられる。前記マスター・ソケットは前記アプリケーションにも接続される。それ故、前記マスター・ソケットはアクティブ・ソケットのリストを維持し、前記リストにどのソケットを追加し、どのソケットを前記リストから削除するのかを管理する。
【００２０】
図３は、本発明の例示的な一実施形態に係る複数のインターフェースを有するアプリケーション・サーバを示す。データ処理システム３００は、図１のサーバ１０４及び１０６と同様のサーバである。データ処理システム３００は、アプリケーション３１０、マスター・ソケット３２０、ソケット３３０〜３３９、及びネットワーク・インターフェース３４０〜３４９を含む。アプリケーション３１０は、データ処理システム３００のメイン・メモリ内に所在し、データ処理システム３００のプロセッサによって実行される。アプリケーション３１０は、ネットワーク・インターフェース３４０〜３４９のようなネットワーク・インターフェースから受信又は送信されるデータを利用する任意のアプリケーションである。マスター・ソケット３２０は、アプリケーション３１０とソケット３３０〜３３９との間のインターフェースを管理するソケットである。ソケット３３０〜３３９はそれぞれ対応するネットワーク・インターフェース３４０〜３４９に接続される。ネットワーク・インターフェース３４０〜３４９はそれぞれ別個のインターネット・プロトコル・アドレスで識別され、図１のネットワーク１０２のようなネットワークに接続される。
【００２１】
ソケットは、ネットワークを介してデータを送受信するように設計されたソフトウェア・プログラムである。ソケットは、典型的にはインターネット接続の伝送制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）としても知られるトランスポート・プロトコル層に接続される。ソケットを確立するには、ソケットの作成又はオープン、バインド、及びリスンを行わなければならない。作成機能、バインド機能、及びリスン機能は、アプリケーション・プログラミング・インターフェース（ＡＰＩ）を利用して実装されるソフトウェア・コールである。作成フェーズ又はオープン・フェーズでは、ソケットのタイプ及び対応するプロトコル・ファミリーが識別される。バインド段階において、ソケットはネットワーク・アドレス、ポート、又はインターフェースにマッピングされる。ソケットは、単一のネットワーク・インターフェースにバインド又はマッピングすることも、複数のネットワーク・インターフェースにバインド又はマッピングすることもできる。本発明の例示的な実施形態では、単一のソケットが単一のネットワーク・インターフェースにバインドされる様子が示されている。それ故、図３の実施形態において、例えばソケット３３０はネットワーク・インターフェース３４０に、ソケット３３１はネットワーク・インターフェース３４１に、以下同様にバインドされている。リスン段階において、ソケットは新しく確立されたネットワーク接続からデータを受け入れる。
【００２２】
ソケットは複数の他のソケットと関連付けることができる。本発明の例示的な実施形態において、アソシエーション（ａｓｓｏｃｉａｔｉｏｎ）は、伝送制御プロトコル（ＴＣＰ）レベルのソケット間の通信リンクを提供するアプリケーション・プログラミング・インターフェース（ＡＰＩ）である。このような通信リンクでは、１つのソケットが他のソケットの代わりにアクションを実行することになる。本発明の例示的な実施形態において、マスター・ソケット３２０はソケット３３０〜３３９と関連付けられている。それ故、マスター・ソケット３２０の代わりにソケット３３０〜３３９が要求を実行することになる。要求はアプリケーション３１０から行われる。このようなアソシエーションから、マスター・ソケット３２０は親ソケット（ｐａｒｅｎｔ  ｓｏｃｋｅｔ）と呼ばれることもあり、ソケット３３０〜３３９はスレーブ又は子ソケット（ｃｈｉｌｄ  ｓｏｃｋｅｔ）と呼ばれることもある。
【００２３】
マスター・ソケット３２０は、アソシエーション・リスト（ａｓｓｏｃｉａｔｉｏｎ  ｌｉｓｔ）を使用してソケット３３０〜３３９とのアソシエーションを管理する。アソシエーション・リストはデータベースであり、リンク・リスト、テーブル、フラット・ファイル、又はハッシュ・テーブル、あるいはそれらの任意の組合せとすることができる。アソシエーション・リストは、マスター・ソケット３２０と関連付けられた又は結合されたソケット３３０〜３３９のようなすべてのソケットを示す。アソシエーション・リストからは任意のソケット３３０〜３３９を除去することができ、この処理はマスター・ソケット３２０からのアソシエーション解除（ｄｉｓａｓｓｏｃｉａｔｅ）としても知られる。更に、新しいソケットについても、単にそれをアソシエーション・リストに追加するだけでマスター・ソケット３２０と関連付けることができる。
【００２４】
使用において、アプリケーション３１０は、アルゴリズムを実行してそれ自体が使用可能なネットワーク・インターフェースのサブセットと通信すること又はそのようなネットワーク・インターフェースのサブセットをリスンすることを選択する。ネットワーク・インターフェースのサブセットが識別されると、アプリケーション３１０は、アプリケーション・プログラミング・インターフェース（ＡＰＩ）のオープン、バインド、及びリスンを利用してサブセット内の各ネットワーク・インターフェースに関するマスター・ソケット及び子ソケットを確立する。その後、アプリケーション３１０はオープン・ソケットのリストをマスター・ソケットに通信する。次に、マスター・ソケットは、アソシエーション・リストを作成してマスター・ソケットと子ソケットとの間のアソシエーションを確立する。アソシエーションが作成された後、アプリケーション３１０はマスター・ソケット及び子ソケットに関するアソシエーションを受け入れる。この受け入れ機能（ａｃｃｅｐｔ  ｆｕｎｃｔｉｏｎ）は、マスター・ソケットを介してアプリケーション３１０と子ソケットとの間の接続を確立するアプリケーション・プログラミング・インターフェース（ＡＰＩ）である。
【００２５】
それ故、本発明の例示的な実施形態において、アプリケーション３１０は、それ自体が使用可能なネットワーク・インターフェースのサブセットに該当するネットワーク・インターフェース３４０〜３４９と通信することを選択する。次に、アプリケーション３１０は、マスター・ソケット３２０及び子ソケット３３０〜３３９をオープンする。次に、アプリケーション３１０は、ネットワーク・インターフェース３４０〜３４９と通信するために子ソケット３３０〜３３９がオープンされた旨をマスター・ソケット３２０に通信する。次に、マスター・ソケット３２０は、ソケット３３０〜３３９が列挙され、各ソケット３３０〜３３９がマスター・ソケット３２０と関連付けられるアソシエーション・リストを作成する。本明細書に記載の処理により、アプリケーション３１０はネットワーク・インターフェースのサブセットをリスンする。
【００２６】
本発明の例示的な実施形態を用いると、アプリケーション３１０が特定のネットワーク・インターフェースとの間の接続を動的に切断することが可能となる。接続を動的に切断することは、ネットワーク・インターフェースのサブセットとの間の接続が確立され、当該サブセットとマスター・ソケットとの関連付けが行われた後に接続を切断することを意味する。使用において、アプリケーション３１０は、あるネットワーク・インターフェースで問題が発生した場合に当該ネットワーク・インターフェースとの間の接続を切断することを選択することができる。接続を動的に切断するために、アプリケーション３１０は、それ自体が接続を切断したいと望む子ソケットを識別する。次に、アプリケーション３１０は、識別された子ソケットをアソシエーション解除するメッセージをマスター・ソケット３２０に通信する。マスター・ソケット３２０は該当する子ソケットをアソシエーション・リストから削除し、アプリケーション３１０は子ソケットをクローズする。次に、アプリケーション３１０と特定のネットワーク・インターフェースとの間の接続が切断される。
【００２７】
本発明の例示的な実施形態を用いると、アプリケーション３１０が特定のネットワーク・インターフェースとの間の接続を動的に確立することも可能となる。接続を動的に確立することは、他のネットワーク・インターフェースとの間の接続が確立され、当該他のネットワーク・インターフェースとマスター・ソケットとの関連付けが行われた後に接続を確立することを意味する。使用において、新しいネットワーク・インターフェースが確立される場合、アプリケーション３１０はネットワーク・インターフェースを追加することを選択することができる。ネットワーク・インターフェースを動的に追加するために、アプリケーション３１０は、それ自体が通信したいと望むネットワーク・インターフェース用の子ソケットをオープンする。次に、アプリケーション３１０は、新しい子ソケットが関連付けられる旨のメッセージをマスター・ソケット３２０に送信する。マスター・ソケット３２０は、新しい子ソケットをアソシエーション・リストに追加してマスター・ソケット３２０と関連付ける。この時点でアプリケーション３１０は新しい子ソケットと通信することができるようになる。
【００２８】
本発明の例示的な実施形態を用いると、ネットワーク・インターフェースのサブセットからのネットワーク要求だけを受信することが可能となる。典型的には、アプリケーション３１０はそれ自体が使用可能な単一のネットワーク・インターフェース又はすべてのネットワーク・インターフェースと接続される。その結果、アプリケーション３１０は接続タイプに応じたすべての要求を処理することになる。そのため、アプリケーション３１０が単一のネットワーク・インターフェースに接続される場合には、単一のネットワーク・インターフェースからのすべてのネットワーク要求がアプリケーション３１０によって処理されることになる。同様に、アプリケーション３１０がすべてのネットワーク・インターフェースに接続される場合には、すべてのネットワーク・インターフェースからのすべての要求がアプリケーション３１０によって処理されることになる。
【００２９】
一方、本発明の例示的な実施形態では、アプリケーション３１０はネットワーク・インターフェースのサブセットと接続することができる。その結果、アプリケーション３１０は、ネットワーク・インターフェースのサブセットからのネットワーク要求だけを処理することになる。したがって、図示の例では、ネットワーク・インターフェース３４０〜３４９がアプリケーション３１０によって選択されたネットワーク・インターフェースのサブセットとして示されている。本発明の例示的な実施形態を用いると、アプリケーション３１０は、それ自体が使用可能なすべてのネットワーク・インターフェースからの要求を処理するのではなく、ネットワーク・インターフェース３４０〜３４９からの要求だけを受信し処理することが可能となる。
【００３０】
本発明の例示的な実施形態を用いると、マスター・ソケットにおける要求キューの管理、ならびに選択されたネットワーク・インターフェースのサブセット内の各ネットワーク・インターフェースにおける要求キューの管理も可能となる。要求キューは、アプリケーション３１０による処理を待っている要求のバックログである。要求は先入れ先出し順に処理される。典型的には、個々のネットワーク・インターフェース３４０〜３４９がアプリケーション３１０に直接接続されるので、個々のネットワーク・インターフェース３４０〜３４９毎に個々の要求キューが存在する。それ故、典型的にはネットワーク・インターフェース３４０〜３４９とアプリケーション３１０との間の仲介物となるマスター・ソケット３２０が存在しないことになる。一方、本発明の例示的な実施形態では、アプリケーション３１０とネットワーク・インターフェース３４０〜３４９との間の仲介インターフェースとしてマスター・ソケット３２０が存在する。したがって、本発明の例示的な実施形態では、マスター・ソケット３２０に関する要求キュー、ならびに個々のネットワーク・インターフェース３４０〜３４９におけるマスター・ソケット３２０の下流に関する要求キューが存在する可能性がある。
【００３１】
マスター・ソケット３２０は、マスター・ソケット３２０の後方のキュー・サイズを管理する。同様に、ソケット３３０〜３３９は、対応するネットワーク・インターフェース３４０〜３４９のキュー・サイズを管理する。ソケット３３０〜３３９はそれぞれの要求をマスター・ソケット３２０の要求キューの末尾に転送する。ネットワーク・インターフェース３４０〜３４９のいずれかの後方に要求キューが存在する場合には、ソケット３３０〜３３９はそれぞれの要求を先入れ先出しベースで転送する。
【００３２】
使用において、マスター・ソケット３２０内に所在するアルゴリズムは、マスター・ソケット３２０が追加的な要求をそれ自体のキューに収容できるようになる時点を各ソケット３３０〜３３９に通知する。その後、このアルゴリズムは、どの要求がソケット３３０〜３３９から最初に受信されたのか照合する。このアルゴリズムは日時スタンプ又は他のいくつかの代替物を使用して、どの要求が最初に受信されたのか判定することができる。どの要求が最初に受信されたのかが判定されると、このアルゴリズムは該当するソケット３３０〜３３９に要求を転送する処理を行う。次に、該当するソケット３３０〜３３９は、該当する要求をキューの末尾に転送して追加する。
【００３３】
図４は、例示的な一実施形態に係るマスター・ソケットによって作成及び使用され得るアソシエーション・リストを示している。テーブル４００は、図３のデータ処理システム３００で示された構成を表す。テーブル４００は、図３のマスター・ソケット３２０のようなマスター・ソケット内に所在し得るテーブルの一例である。
【００３４】
テーブル４００は、ソケット番号列４１０、ネットワーク・インターフェース番号列４２０、及び親ソケット番号列４３０を含む。ソケット番号列４１０は、マスター・ソケットと関連付けられるすべてのソケットのリストである。本発明の例示的な実施形態において、ソケット番号列４１０に列挙されるソケット３３０〜３３９は、図３に示される子ソケットと同一のものである。
【００３５】
ネットワーク・インターフェース番号列４２０は、ソケット番号列４１０内の対応するソケットの接続先となるネットワーク・インターフェースのリストである。ネットワーク・インターフェース番号列４２０に列挙されるネットワーク・インターフェースは、図３のネットワーク・インターフェース３４０〜３４９である。そのため、ネットワーク・インターフェース番号列４２０内のネットワーク・インターフェースは、アソシエーションが使用可能なすべてのネットワーク・インターフェースのサブセットである。ネットワーク・インターフェース番号列４２０に列挙される番号は、各ネットワーク・インターフェースの例示的なインターネット・プロトコル・アドレスである。本発明の例示的な実施形態は、図示のインターネット・プロトコル・アドレスに限定されるものではない。ネットワーク・アドレスの一覧表は当業界で知られる一般的なものである。
【００３６】
親ソケット番号列４３０は、各子ソケットが関連付けられるマスター・ソケットを識別する。そのため、本発明の例示的な実施形態では主ソケット３２０が子ソケット３３０〜３３９の親ソケットとなる。したがって、主ソケット３２０は子ソケット３３０〜３３９と関連付けられている。
【００３７】
テーブル４００の行４５０〜４５９は、特定のソケットに関連するネットワーク・インターフェース番号列４２０及び親ソケット番号列４３０で識別されるすべての情報を列挙する。したがって、本発明の例示的な実施形態では、行４５０のソケット３３０はネットワーク・インターフェース番号ＩＰＶ４：０．３．３．０と接続される。行４５１のソケット３３１は、ネットワーク・インターフェース番号ＩＰＶ４：０．３．３．１と接続される。行４５２のソケット３３２は、ネットワーク・インターフェース番号ＩＰＶ４：０．３．３．２と接続される。行４５３のソケット３３３は、ネットワーク・インターフェース番号ＩＰＶ４：０．３．３．３と接続される。行４５４のソケット３３４は、ネットワーク・インターフェース番号ＩＰＶ４：０．３．３．４と接続される。行４５５のソケット３３５は、ネットワーク・インターフェース番号ＩＰＶ４：０．３．３．５と接続される。行４５６のソケット３３６は、ネットワーク・インターフェース番号ＩＰＶ４：０．３．３．６と接続される。行４５７のソケット３３７は、ネットワーク・インターフェース番号ＩＰＶ４：０．３．３．７と接続される。行４５８のソケット３３８は、ネットワーク・インターフェース番号ＩＰＶ４：０．３．３．８と接続される。行４５９のソケット３３９は、ネットワーク・インターフェース番号ＩＰＶ４：０．３．３．９と接続される。すべてのソケット３３０〜３３９はマスター・ソケット３２０と関連付けられている。
【００３８】
使用において、アプリケーションは、それ自体が通信したいと望むネットワーク・インターフェースのサブセットを選択する。アプリケーションは、ネットワーク・インターフェースのサブセット内の各ネットワーク・インターフェースのソケットをオープンする。次に、マスター・ソケットは当該アプリケーションからオープン・ソケットのリストを受信する。次に、マスター・ソケットはテーブル４００のようなアソシエーション・リストを作成する。マスター・ソケットはテーブル４００のソケット番号列４１０にソケットのリストを入力する。また、マスター・ソケットは、各ソケットが対応するネットワーク・インターフェース毎のインターネット・アドレスをネットワーク・インターフェース番号列４２０に入力する。次に、マスター・ソケットは、それ自体とアソシエーション・リスト内の各子ソケットとの関連付けを実行する。マスター・ソケットは、それ自体とソケット番号列４１０に列挙される各ソケットとを結合するアソシエーション・アルゴリズム（ａｓｓｏｃｉａｔｉｏｎ  ａｌｇｏｒｉｔｈｍ）を実行する。次に、マスター・ソケットは親ソケット番号列４３０においてアソシエーションを示す。
【００３９】
テーブル４００は図示の実施形態に限定されるものではない。例えば、ソケット番号及びネットワーク・インターフェース番号は別の形式で表現することもできる。また、いくつかの情報をテーブル４００から削除することもテーブル４００に追加することもできる。
【００４０】
図５は、例示的な一実施形態に従ってソケットが動的にアソシエーション解除された後のアソシエーション・リストを示す図である。テーブル５００は、図３のマスター・ソケット３２０のようなマスター・ソケット内に所在し得るテーブルの一例である。テーブル５００は、ソケットがアソシエーション解除された後のアソシエーション・リストを表す点を除けば図４のテーブル４００と同様である。
【００４１】
テーブル５００は、ソケット番号列５１０、ネットワーク・インターフェース番号列５２０、及び親ソケット番号列５３０を含む。ソケット番号列５１０は、マスター・ソケットと関連付けられるすべてのソケットのリストである。ネットワーク・インターフェース番号列５２０は、ソケット番号列５１０内の対応するソケットの接続先となるネットワーク・インターフェースのリストである。親ソケット番号列５３０は、各子ソケットが関連付けられるマスター・ソケットを識別する。テーブル５００の行５５０〜５５７は、特定のソケットに関連するネットワーク・インターフェース番号列５２０及び親ソケット番号列５３０で識別されるすべての情報を列挙する。
【００４２】
マスター・ソケット（本実施形態ではマスター・ソケット３２０）は、ソケット番号３３１及び３３３をアソシエーション解除する要求をアプリケーションから受信する。これにより、マスター・ソケットは、ソケット番号３３１及び３３３とマスター・ソケットとの間の接続を切断するアソシエーション解除アルゴリズム（ｄｉｓａｓｓｏｃｉａｔｉｏｎ  ａｌｇｏｒｉｔｈｍ）を実行する。次に、マスター・ソケットは、ソケット番号３３１及び３３３ならびに各ソケット番号３３１及び３３３に関するすべての情報をテーブル５００から削除する。このアソシエーション解除の結果がテーブル５００に反映される。ソケット番号３３１及び３３３をテーブル５００から削除することに加えて、アプリケーションはソケット３３１及び３３３のクローズ処理も行う。ソケット番号の削除と併せてソケットのクローズ処理を行うことにより、アプリケーションとネットワーク・インターフェースとの間の通信が切断される。
【００４３】
図６は、例示的な一実施形態に従って新しいソケットがマスター・ソケットと動的に関連付けられた後のアソシエーション・リストを示す図である。テーブル６００は、図３のマスター・ソケットのようなマスター・ソケット内に所在し得るテーブルの一例である。テーブル６００は、新しいソケットがマスター・ソケットと関連付けられた後のアソシエーション・リストを表す点を除けば図４のテーブル４００と同様である。
【００４４】
テーブル６００は、ソケット番号列６１０、ネットワーク・インターフェース番号列６２０、及び親ソケット番号列６３０を含む。ソケット番号列６１０は、マスター・ソケットと関連付けられるすべてのソケットのリストである。ネットワーク・インターフェース番号列６２０は、ソケット番号列６１０内の対応するソケットの接続先となるネットワーク・インターフェースのリストである。親ソケット番号列６３０は、各子ソケットが関連付けられるマスター・ソケットを識別する。テーブル６００の行６５０〜６６０は、特定のソケットに関連するネットワーク・インターフェース番号列６２０及び親ソケット番号列６３０で識別されるすべての情報を列挙する。
【００４５】
アプリケーションは新しいソケット（本実施形態ではソケット番号３５０）をオープンする。マスター・ソケット（本実施形態ではマスター・ソケット３２０）は、ソケット番号３５０の関連付け要求を受信する。マスター・ソケットは、それ自体とソケット番号３５０とを結合するアソシエーション・アルゴリズムを実行する。次に、マスター・ソケットは、ソケット番号３５０及びソケット番号３５０に関するすべての情報をテーブル６００に追加する。この追加は行６６０に反映される。ソケット番号３５０をテーブル６００に追加することにより、アプリケーションはソケット番号３５０をリスンすることが可能となる。
【００４６】
図７は、例示的な一実施形態に従ってアプリケーションがネットワーク・インターフェースのサブセットと通信するためのアプリケーション内のプロセスを示すフローチャートである。本プロセスは、図３のアプリケーション３１０のようなアプリケーションにおいて実行される。
【００４７】
本プロセスは、アプリケーションがインターフェースをとりたいと望むネットワーク・アドレスを選択することから開始する（ステップ７００）。選択されるネットワーク・アドレスは、アプリケーションが使用可能なネットワーク・アドレスのサブセットである。次に、アプリケーションはマスター・ソケットをオープンする（ステップ７１０）。次に、アプリケーションは、それ自体がインターフェースをとりたいと望む各ネットワーク・アドレスに関する子ソケットをオープンする（ステップ７２０）。次に、アプリケーションはオープン子ソケットのリストをマスター・ソケットに送信し（ステップ７３０）、その後本プロセスは終了する。
【００４８】
図８は、マスター・ソケットをネットワーク・インターフェースのサブセットと関連付けるマスター・ソケット内のプロセスを示すフローチャートである。本プロセスは、図３のマスター・ソケット３２０のようなマスター・ソケットにおいて実行される。
【００４９】
本プロセスは、マスター・ソケットがオープン子ソケットのリストを受信することから開始する（ステップ８００）。次に、マスター・ソケットはオープン子ソケットのアソシエーション・リストを作成する（ステップ８１０）。次に、マスター・ソケットは、それ自体と各子ソケットとの関連付けを実行する（ステップ８２０）。次に、アプリケーションが子ソケットをリストから削除したいと望んでいるかどうかが判定される。子ソケットの削除要求が受信された場合には（ステップ８３０で「ｙｅｓ」の出力）、マスター・ソケットは、当該子ソケットとそれ自体との間のアソシエーション解除を実行する（ステップ８４０）。次に、アプリケーションが子ソケットをリストに追加したいと望んでいるかどうかが判定される（ステップ８５０）。子ソケットの追加要求が受信された場合には（ステップ８５０で「ｙｅｓ」の出力）、マスター・ソケットは、それ自体と新しい子ソケットとの関連付けを実行し（ステップ８６０）、その後本プロセスは終了する。
【００５０】
ここでステップ８３０に戻り、マスター・ソケットが子ソケットの削除要求を受信しない場合には（ステップ８３０で「ｎｏ」の出力）、アプリケーションが子ソケットをリストに追加したいと望んでいるかどうかが判定される（ステップ８５０）。子ソケットの追加要求が受信された場合には（ステップ８５０で「ｙｅｓ」の出力）、マスター・ソケットは、それ自体と新しい子ソケットとの関連付けを実行し（ステップ８６０）、その後本プロセスは終了する。ここでステップ８５０に戻り、マスター・ソケットが子ソケットの追加要求を受信しない場合には（ステップ８５０で「ｎｏ」の出力）、その後本プロセスは終了する。
【００５１】
本発明の例示的な諸実施形態は、複数のインターフェースを管理するコンピュータ実装方法、データ処理システム、及びコンピュータ・プログラム製品を提供する。アプリケーションは、前記複数のインターフェースのサブセットを選択する。前記選択に応答して、前記アプリケーションは、前記インターフェースのサブセットにバインドされ、前記インターフェースのサブセットをリスンする。前記アプリケーションを前記インターフェースのサブセットにバインドするために、前記アプリケーションはまず、前記インターフェースのサブセット内の各インターフェースに関するマスター・ソケット及び子ソケットをオープンする。前記マスター・ソケット及び前記子ソケットは互いに関連付けられる。前記マスター・ソケットは前記アプリケーションにも接続される。したがって、前記マスター・ソケットはアクティブ・ソケットのリストを維持し、前記リストにどのソケットを追加し、どのソケットを前記リストから削除するのかを管理する。
【００５２】
本発明の例示的な実施形態を用いると、アプリケーションは、単一のインターフェースとの通信又はすべてのインターフェースとの通信に限定されることなく、インターフェースのサブセットとだけ通信することが可能となる。また、本発明の例示的な実施形態を用いると、アプリケーションは、他のインターフェースとの通信を妨げることなく、インターフェースとの間の接続を動的に切断し、あるいはインターフェースとの間の接続を動的に確立することが可能となる。動的な切断能力によって、アプリケーションは修理を要するインターフェース又は他の問題を有するインターフェースを除去することが可能となる。動的な接続能力によって、アプリケーションは新しいインターフェースからの通信を受け入れることが可能となる。
【００５３】
本発明の諸実施形態は全体としてハードウェアの実施形態の形をとることも、全体としてソフトウェアの実施形態の形をとることもでき、ハードウェア要素とソフトウェア要素の両方を含む実施形態とすることもできる。本発明の好ましい一実施形態は、必ずしもそれだけに限定されるわけではないが、ファームウェア、常駐ソフトウェア、マイクロコード等を含むソフトウェアの形で実施される。
【００５４】
更に、本発明の諸実施形態は、コンピュータ又は任意の命令実行システムによって使用され又はそれらと共に使用されるプログラム・コードを備えるコンピュータ使用可能な又はコンピュータに読み込み可能な媒体からアクセス可能なコンピュータ・プログラムの形をとることもできる。本明細書では、コンピュータ使用可能な又はコンピュータに読み込み可能な媒体は、上記命令実行システム、装置、又はデバイスによって使用され又はそれらと共に使用される上記プログラムを収容し、記憶し、通信し、伝搬し、又は移送することが可能な任意の装置であってよい。
【００５５】
上記媒体は、電子系、磁気系、光学系、電磁気系、赤外線系、又は半導体系（即ち装置又はデバイス）であっても、伝搬媒体であってもよい。コンピュータに読み込み可能な媒体の例としては、半導体又は固体メモリ、磁気テープ、取り外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、固定磁気ディスク、及び光ディスクが挙げられる。光ディスクの現行例としては、コンパクト・ディスク‐読取り専用メモリ（ＣＤ‐ＲＯＭ）、コンパクト・ディスク‐読出し／書込み（ＣＤ‐Ｒ／Ｗ）、及びＤＶＤが挙げられる。
【００５６】
プログラム・コードの記憶又は実行あるいはその両方を行うのに適したデータ処理システムは、システム・バスを介してメモリ要素に直接又は間接的に結合される少なくとも１つのプロセッサを含む。上記メモリ要素は、上記プログラム・コードの実際の実行中に利用されるローカル・メモリ、バルク記憶装置、及び実行中にバルク記憶装置からコードを検索しなければならない回数を少なくするために、少なくともいくつかのプログラム・コードを一時的に記憶するキャッシュ・メモリを含むことができる。
【００５７】
入力／出力即ちＩ／Ｏデバイス（必ずしもそれだけに限定されるわけではないが、キーボード、ディスプレイ、ポインティング・デバイス等を含む）は、上記システムに直接又はＩ／Ｏコントローラを介して結合することもできる。
【００５８】
介在する私設ネットワーク又は公衆ネットワークをとおして他のデータ処理システムあるいは遠隔プリンタ又は記憶装置に、上記データ処理システムが結合できるようにするために、上記システムにネットワーク・アダプタを結合することもできる。モデム、ケーブル・モデム、及びイーサネット（Ｒ）カードは、現時点で使用可能なタイプのネットワーク・アダプタのほんのいくつかにすぎない。
【００５９】
本発明の諸実施形態の記載は、例示及び説明のために提示されるものであり、本発明の諸実施形態を余すところのないものとし、又は開示の形態に限定することは、本出願人の意図するところではない。当業者には多くの修正形態及び変更形態が明らかとなるであろう。
【図面の簡単な説明】
【００６０】
【図１】本発明の例示的な実施形態の諸態様を実施することが可能な複数のデータ処理システムから成るネットワークを示す図である。
【図２】本発明の例示的な実施形態の諸態様を実施することが可能なデータ処理システムのブロック図である。
【図３】例示的な一実施形態に係る複数のインターフェースを有するアプリケーション・サーバを示す図である。
【図４】例示的な一実施形態に係るマスター・ソケットによって作成及び使用され得るアソシエーション・リストを示す図である。
【図５】例示的な一実施形態に従ってソケットが動的にアソシエーション解除された後のアソシエーション・リストを示す図である。
【図６】例示的な一実施形態に従って新しいソケットがマスター・ソケットと動的に関連付けられた後のアソシエーション・リストを示す図である。
【図７】例示的な一実施形態に従ってアプリケーションがネットワーク・インターフェースのサブセットと通信するためのアプリケーション内のプロセスを示すフローチャートである。
【図８】例示的な一実施形態に従ってマスター・ソケットをネットワーク・インターフェースのサブセットと関連付けるマスター・ソケット内のプロセスを示すフローチャートである。
【図１】
2009534728.tif 000003
【図２】
2009534728.tif 000004
【図３】
2009534728.tif 000005
【図４】
2009534728.tif 000006
【図５】
2009534728.tif 000007
【図６】
2009534728.tif 000008
【図７】
2009534728.tif 000009
【図８】
2009534728.tif 000010
【手続補正書】
【提出日】平成21年4月21日(2009.4.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のインターフェースを管理するコンピュータ実装方法であって、
前記複数のインターフェースのサブセットをアプリケーションによって選択してインターフェースのサブセットを形成するステップと、
前記複数のインターフェースのサブセットが前記アプリケーションによって選択されたことに応答して、前記アプリケーションを前記インターフェースのサブセットにバインドするステップと、
を含み、
前記アプリケーションは、前記インターフェースのサブセットをリスンする、
方法。
【請求項２】
マスター・ソケットをオープンするステップと、
前記インターフェースのサブセット内の各インターフェースに関する子ソケットをオープンするステップと、
を更に含み、
前記マスター・ソケット及び子ソケットは、前記アプリケーションによってオープンされる、
請求項１に記載のコンピュータ実装方法。
【請求項３】
前記子ソケットを構成するステップ
を更に含む請求項２に記載のコンピュータ実装方法。
【請求項４】
前記子ソケットを構成する前記ステップは、
前記子ソケットと前記インターフェースのサブセット内の各インターフェースとをバインドするステップと、
前記マスター・ソケットを前記子ソケットと関連付けるステップと、
を含む、請求項３に記載のコンピュータ実装方法。
【請求項５】
前記マスター・ソケットを前記子ソケットと関連付ける前記ステップは、
前記子ソケットを前記マスター・ソケットによって維持されるアソシエーション・リストに追加するステップと、
前記マスター・ソケットを前記アソシエーション・リスト内の前記子ソケットとリンクさせるステップと、
を含む、請求項４に記載のコンピュータ実装方法。
【請求項６】
前記子ソケットのうちの１つを動的にクローズする要求を前記アプリケーションから受信するステップと、
前記子ソケットのうちの１つを動的にクローズする前記要求が前記アプリケーションから受信されたことに応答して、前記子ソケットのうちの１つをアソシエーション解除するステップと、
を更に含む請求項５に記載のコンピュータ実装方法。
【請求項７】
前記子ソケットのうちの１つをアソシエーション解除する前記ステップは、
前記子ソケットのうちの１つを前記アソシエーション・リストから削除するステップ
を含む、請求項６に記載のコンピュータ実装方法。
【請求項８】
新しい子ソケットを動的に追加する要求を前記アプリケーションから受信するステップと、
新しい子ソケットを動的に追加する前記要求が前記アプリケーションから受信されたことに応答して、前記新しい子ソケットを前記マスター・ソケットと関連付けるステップと、
を更に含む請求項５に記載のコンピュータ実装方法。
【請求項９】
アプリケーションに関する要求キューを前記マスター・ソケットによって管理するステップと、
前記子ソケットの１つからの要求を、要求キューの末尾の転送するステップであって、前記子ソケットの１つからの要求が、当該子ソケットの１つに関する要求キュー内の最初の要求であるステップと、
を更に含む請求項２に記載のコンピュータ実装方法。
【請求項１０】
複数のインターフェースを管理するデータ処理システムであって、
ネットワークに接続されるアプリケーション・サーバと、
アプリケーション・サーバ内の前記複数のインターフェースと、
前記複数のインターフェースを介して前記ネットワークにバインドされる、前記アプリケーション・サーバ内のアプリケーションと、
を備えるシステム。
【請求項１１】
前記複数のインターフェース内の各インターフェースにバインドされて子ソケットを形成するソケットと、
前記アプリケーションに接続され、各子ソケットと関連付けられるマスター・ソケットと、
を備える請求項１０に記載のデータ処理システム。
【請求項１２】
複数のインターフェースを管理するためのコンピュータ・プログラムであって、前記プログラムが、
前記複数のインターフェースのサブセットをアプリケーションによって選択してインターフェースのサブセットを形成する機能と、
前記複数のインターフェースのサブセットが前記アプリケーションによって選択されたことに応答して、前記アプリケーションを前記インターフェースのサブセットにバインドする機能と、
を備え、
前記アプリケーションは、前記インターフェースのサブセットをリスンする機能、
をコンピュータに実行させる、コンピュータ・プログラム。
【請求項１３】
アプリケーションがネットワーク・アドレスのサブセットと通信するためのコンピュータ・プログラムであって、前記プログラムが、
前記ネットワーク・アドレスのサブセットをアプリケーションによって識別する機能と、
前記ネットワーク・アドレスのサブセットとの間の接続を確立する機能と、
前記ネットワーク・アドレスのサブセットとの間の前記接続をアプリケーションによって受け入れる機能と、
をコンピュータに実行させる、コンピュータ・プログラム。
【請求項１４】
前記ネットワーク・アドレスのサブセットとの間の接続を確立する前記機能は、
マスター・ソケットをオープンする機能と、
前記ネットワーク・アドレスのサブセット内の各ネットワーク・アドレスに関する子ソケットをオープンする機能と、
を含み、
前記マスター・ソケット及び子ソケットは、前記アプリケーションによってオープンされる、
請求項１３に記載のコンピュータ・プログラム。
【請求項１５】
前記ネットワーク・アドレスのサブセット内の各ネットワーク・アドレスと前記子ソケットとをバインドする機能と、
前記子ソケットをリスンする機能と、
を更に備える請求項１４に記載のコンピュータ・プログラム。
【請求項１６】
前記マスター・ソケットを前記子ソケットと関連付ける機能
を更に備える請求項１４に記載のコンピュータ・プログラム。
【請求項１７】
前記マスター・ソケットを前記子ソケットと関連付ける前記機能は、
前記子ソケットをアソシエーション・リストに入力する機能と、
前記マスター・ソケットを前記子ソケットと共に前記アソシエーション・リストに列挙する機能と、
を含む、請求項１６に記載のコンピュータ・プログラム。
【請求項１８】
前記子ソケットのうちの１つを動的にクローズする要求を前記アプリケーションから受信する機能と、
前記子ソケットのうちの１つを動的にクローズする前記要求が前記アプリケーションから受信されたことに応答して、前記子ソケットのうちの１つをアソシエーション解除する機能と、
を更に備え、
前記子ソケットのうちの１つをアソシエーション解除する前記機能は、前記子ソケットのうちの１つを前記アソシエーション・リストから削除する機能を含む、
請求項１７に記載のコンピュータ・プログラム。
【請求項１９】
新しい子ソケットを動的に追加する要求を前記アプリケーションから受信する機能と、
新しい子ソケットを動的に追加する前記要求が前記アプリケーションから受信されたことに応答して、前記新しい子ソケットを前記マスター・ソケットと関連付ける機能と、
を更に備える請求項１７に記載のコンピュータ・プログラム。
【国際調査報告】
2009534728.tif 000011
2009534728.tif 000012