JP2010500832A - 簡易型ソケットインタフェースを経由する放送/同報ipパケットをサポートするための装置と方法 - Google Patents
簡易型ソケットインタフェースを経由する放送/同報ipパケットをサポートするための装置と方法 Download PDFInfo
- Publication number
- JP2010500832A JP2010500832A JP2009523969A JP2009523969A JP2010500832A JP 2010500832 A JP2010500832 A JP 2010500832A JP 2009523969 A JP2009523969 A JP 2009523969A JP 2009523969 A JP2009523969 A JP 2009523969A JP 2010500832 A JP2010500832 A JP 2010500832A
- Authority
- JP
- Japan
- Prior art keywords
- address
- local interfaces
- interfaces
- local
- broadcast
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/50—Address allocation
- H04L61/5092—Address allocation by self-assignment, e.g. picking addresses at random and testing if they are already in use
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/14—Multichannel or multilink protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
利用可能なローカルインタフェースを調査し、それらが特定のIPアドレスからデータを受信するように構成される能力について判定し、そのように構成可能であればIPアドレスを受信するためのインタフェースを構成し、このIPアドレスをそのインタフェースにバインドするように、bind()アプリケーションプログラミングインタフェース(API)を修正した、放送または同報データフローを受信するためのIPアドレス構成方法。修正されたbind*()APIは、各インタフェースがIPアドレスに対して構成されることができるかどうかを確認するために1つ以上のインタフェースと情報交換するかもしれない。あるいは、修正されたbind*()APIは、アクセス制御リストを参考にして、インタフェースの構成可能性を判定する。修正されたbind*()操作がポリシーパラメータに基づいて最高の優先度のインタフェースを構成するように、ポリシーベースのルーティングルールが実施されるかもしれない。
Description
本出願は、2006年8月9日出願の米国仮出願番号60/836,780の利益を主張する。これらの内容は全体としてここに参照として組み込まれる。
本発明はクライアントプロセッサとのIP接続を確立するためのアプリケーションプログラミングインターフェースツールおよび方法に関する。
インターネット技術は高品質のオーディオおよびビデオコンテンツを、テレビジョンジョン、ラジオおよび他の形式のオーディオおよびビデオ配信のこれまでの範囲を超えた場所および機器に配信することを可能とする。このことにより、インターネットを介して放送音声およびビデオストリームを配信するための多くの新しいアプリケーションおよび機器の開発が進められてきた。例えば、テレビジョンクリップのようなビデオを携帯電話で受信することが今や可能である。そのような技術には、視覚媒体、テレビジョン、および映画産業に変革をもたらす可能性がある。したがって、インターネットを介して放送ストリームを様々な機器に配信するアプリケーションに対する要求が増え続けている。
インターネットを介して放送または同報ビデオストリームを受信するアプリケーションは、ビデオストリームの送信源に結びつけられるインターネットへの接続を確立しなければならない。最近のオペレーティングシステムにおいてインターネットに接続するための標準インタフェースは、BSDソケットAPIとも言われるバークレーソケットアプリケーションプログラミングインタフェース(API)として知られている。(BSDはBerkeley Software Distributionを意味し、バークレーUnix(登録商標)と呼ばれることがある)。APIは、コンピュータシステムまたはプログラムライブラリが、コンピュータプログラム(アプリケーション)でなされる標準的サービスに対する要求をサポートするために提供するソースコードインタフェースである。バークレーソケットAPIは、Cプログラミング言語で計算機ネットワーキングアプリケーションを開発するために有効なルーチンライブラリを含む。バークレーソケットAPIが、使用されている唯一のAPIでないが、インターネットアプリケーションの開発に適するほとんどのプログラミング言語は、内蔵されるルーチンおよびそれらの機能において類似したインタフェースを用いる。さらに、多くのプログラミング言語がBSDソケットAPI版を採用している。したがって、ここに述べるAPIの説明はBSDソケットAPIのフォーマットおよび機能に基づいている。
アプリケーションがインターネットを介して放送または同報ビデオストリームを受信するために、送信源への「ソケット」と呼ばれる接続が作成されなければならない。ソケットはクライアントとサーバとの間のインターネット接続のエンドポイントである。ソケットを作成することによって、サーバによって送られたパケットが、クライアントのアプリケーションに配信されることが確実になる。ソケットを作成するために、アプリケーションはsocket()APIを呼出す。この様な方法でソケットを作成する場合、ソケットはアドレスファミリーが与えられるが、クライアント機器の特定のローカルインタフェースには割り当てられない。したがって、ソケットがサーバから入力データを受けるかもしれないより前に、ソケットはインターネットとの機器インタフェースとして用いられる特定のローカルインタフェースに割り当てられなければならない。特定のローカルアドレスをソケットに割り当てる1つの方法はbind()APIによって成される。
アプリケーションが放送または同報ストリームを受信するために、アプリケーションはioctl()またはsocket_opt()呼出のいずれかを呼出さなければならない。ioctl()またはsocket_opt()呼出のいずれかを呼出す場合、IP放送ストリームを受信するときに用いられる特定のインタフェースは既知でなければならない。しかし、通常の機器には、データが受信されるかもしれないときに用いられる多くのインタフェースがある。IPデータストリームが受信される時に用いられる特定のローカルインタフェースを決定するために、予めアプリケーションは複雑な命令セットを実行しなければならない。この付加的な複雑は、不必要なプログラムオーバヘッド、アプリケーション開発コスト、および放送ストリームへの接続確立時の処理遅延を引き起こす。
放送データフローを受信するためにIPアドレスを構成するためのストリームライン法を種々の実施例を用いて提供する。bind()APIを修正、拡張して、利用可能なローカルインタフェースを調査し、あるインタフェースが特定のIPアドレスからデータを受信するように構成されうるかを判定し、そのインタフェースがそのように構成される可能性がある場合、そのインタフェースを構成し、次にIPアドレスをそのインタフェースにバインドするようにする。一実施例において、bind()APIは、1つ以上のインタフェースと、各インタフェースがそのIPアドレスに対して構成されうるかを確認するために明示的に情報交換する。別の実施例において、bind()APIは、ルーティングルックアップテーブルを参考にして、インタフェースの構成可能性を判定する。この実施例の変形例において、bind()操作がポリシーパラメータに基づく最優先度のインタフェースを構成するために、ポリシーベースのルーティングルールが実施されるかもしれない。
ここに組み込まれ、本明細書の部分を構成する添付図面は、本発明の代表的実施例を例示し、上記一般的説明と下記詳細な説明と共に、本発明の特徴を説明することに役立つ。
添付図面を参照して種々の実施例を詳細に説明する。可能であれば常に、図面全般にわたり、同じ参照記号を同一または類似の部品を参照するために用いられる。ここでのbind()APIへの参照は、ここに説明し図面で例示する機能のすべての実施を参照するように意図されており、本発明の範囲または特許請求範囲を特定の関数呼出、APIの実施、ソフトウェアプログラミング言語またはアプリケーションに限定するように意図されているものではない。
現在、さまざまな電子機器は、有線および無線ネットワーク上でインターネットデータを受信することができ、したがって、放送および同報用アプリケーションを実施することができる。そのような装置はパーソナルコンピュータ、ラップトップコンピュータ、およびワークステーションを含む。最近では、携帯電話、無線モデムを備えた携帯情報端末(PDA)、無線電子メール受信機(例えば、Blackberry(登録商標)およびTreo(登録商標)機器)、並びにインターネットで動作可能なマルチメディア携帯電話(例えば、iPhone(登録商標))のような移動機器はインターネットへのポータルになっている。移動機器用の放送および同報用ビデオIPアプリケーションの発展が従来の個人用計算機のそれらをいつか凌駕するかもしれないと予想されている。
一般に、電池の寿命を延ばすために電力消費を最小にするという理由以外に理由がなければ、移動機器(例えば、PDA、携帯電話)は、パーソナルコンピュータおよびラップトップコンピュータに較べて限定的な計算能力とメモリーを有している。その結果、移動機器で実行されるアプリケーションは、可能なところはすべて効率的にし、かつ不要な処理のオーバヘッドを排除する必要がある。この目的のために、本発明の種々の実施例は、放送IPパケットを受信するためのソケット接続を確立するための簡易な方法を提供する。
種々の実施例は、bind()APIを修正し、または新しいbind_broadcast()APIを提案する。したがって、実施例を説明する前に、従来のbind()APIの実施の機能を復習することが有効である。
bind()APIは1つのソケットを1つのローカルインタフェースに割り当て、その結果送信源サーバからそのソケットを介して流れるデータが、アプリケーションによって受信されることができる。bind()API呼出は3つの引数を必要とする。第1に、この呼出は、ソケットを表す記述子を含まなければならない。これはデータを読み、書くためにソケットに対するハンドルとして用いられるsocket()APIを実行した後に受け取る値である。第2に、この呼出は、システム上で構成されたIPアドレスへのバインドを完成するために用いられるローカルIPアドレスおよびローカルポート番号の双方を定義するデータ構造を指定しなければならない。あるいは、第2の引数としてワイルドカード値(多くのAPI実施において「0」またはINADDR_ANY)が提供されるかもしれない。この場合、APIは、IPアドレスによって構成された任意のインタフェースをバインドするだろう。しかし、種々の実施例の説明を簡単にするために、この関数の引数はここでは指示されたIPアドレスまたは単にIPアドレスと呼ばれるだろう。第3に、この呼出はローカルアドレスの長さを指定しなければならない。これによりこの関数が異なるバージョンのIPに対応できるようになる。
IPアドレスがbind()API呼出に含まれている場合(すなわち、INADDR_ANYの選択ではない場合)、この関数は、機器またはシステムの各ローカルインタフェースを評価し、そのインタフェースがそのIPアドレスと接続するように構成されているかどうかを確認する。IPアドレスに対して構成されたローカルインタフェースを見つけた場合、bind()関数は特定のローカルポート番号を発信データグラムの送信源ポートとしておよびソケットを介して受信される到来データグラムに対する宛先ポートとして割り当てる。また、この関数は、バインディング操作の完了に成功したことを示すための「0」のフラグ値を返す。Unixのようないくつかの実施においてはこの成功フラグ値は「0」であり、したがって例示のために、図および説明において成功フラグ値として「0」を用いる。しかし、本発明および特許請求の範囲は「0」の成功フラグ値を用いることに限定されると解釈されるべきではない。ローカルインタフェースがbind()API呼出で指定されるIPアドレスに対して構成されない場合、誤り符号が生成され、操作が失敗したことを示すための失敗フラグ値が返される。Unixのようないくつかの実施においてはこの失敗フラグ値は「−1」であり、したがって例示のために、図および説明において失敗フラグ値として「−1」を用いる。しかし、本発明および特許請求の範囲は「−1」の失敗フラグ値を用いることに限定されると解釈されるべきではない。このように、ローカルインタフェースがIPアドレスに対してまだ構成されていない場合、bind()関数呼出は失敗するだろう。アプリケーションによるアクセスのために、生成される誤り符号はレジスタ、例えば「errno」と名付けたレジスタ、に格納されるかもしれない。誤り符号は異なるAPI実施の間で変わるかもしれず、また既存文書の裏付けがあるため、そのような誤り符号の詳細は本発明に必須ではない。
INADDR_ANYワイルドカードまたは「0」がbind()API呼出のローカルアドレスとして指定される場合、関数は指示されたソケットにアクセスするように構成されたすべてのローカルインタフェースにバインドするだろう。いずれのインタフェースもそのように構成されていない場合、誤り符号が生成され、操作が失敗したことを示すためにフラグ値(−1)が返される。
図1AにIPアドレスが示されたときの(すなわち、INADDR_ANY機能を除いた)bind()APIの基本的な機能的ステップを示す。このフローチャートは、関数の最上位の機能を示すことが意図されており、必ずしもAPIによって実施される実際のソフトウェア処理を反映していない。bind()呼出10は指示されたソケットの記述子、ソケットにバインドされるべきIPアドレス、およびIPアドレスの長さである。bind()関数がバインディング成功の「0」を、バインディング失敗の場合は「−1」を返す故、このフラグ値は関数の開始時には「−1」に設定されるかもしれない、ステップ12。またはテストに基づいて後に「−1」に設定されるかもしれない。また、bind()関数は、IPアドレスが示されたかどうか、またはワイルドカード値(例えば、「0」)が指定されたかどうかを判定するために呼出引数をテストする、ステップ14。特定のIPアドレスが関数呼出において要求される場合、(すなわち、テスト14の結果が「はい」である場合)、bind()関数は、一度に一つ、インタフェースの構成を、例えばループルーチンを実行することによって、テストするかもしれない。このループの例はステップ16、18、20、28、30に例示される。カウンタは第1のインタフェースを示すかまたはポイントするために初期化されるかもしれない、ステップ16。次にカウント値を用いて、関数はインタフェースを選択し、ステップ18、次に選択されたインタフェースは、そのインタフェースが指示されたIPアドレスに対して構成されているかどうかを判定するために質問される、ステップ20。そのように構成されている場合、関数は指示されたソケットまたはIPアドレスを、指定されたローカルインタフェースにバインドする、ステップ22。次に関数は状態フラグをbind()操作が成功したことを示す「0」に設定する、ステップ24。次にbind()呼出を行ったアプリケーションへ戻る、ステップ26。選択されたインタフェースが指示されたIPアドレスに対して構成されていない場合(すなわち、テスト20の結果が「いいえ」の場合)、関数は、評価されるべきインタフェースがさらにあるかどうかを判定するために(例えばカウンタを機器のインタフェースの総数と比較することによって)カウンタをテストする、ステップ28。評価されるべきインタフェースがさらにある場合、処理を続けるためにステップ18へループバックする前に次のインタフェースへポイントするためにカウンタを進める、ステップ30。最後のインタフェースが評価された場合(すなわち、テスト28の結果が「いいえ」である場合)、誤り符号の値はレジスタ(例えばerrno)に格納される、ステップ34。次に関数はbind()呼出を行ったアプリケーションへ戻る、ステップ26。この状況において関数はbind()操作が失敗したことを示す「−1」値を返す。
指定されたローカルインタフェースの値がINADDR_ANYまたは「0」のようなワイルドカードである場合(すなわち、テスト14の結果が「いいえ」の場合)、任意のインタフェースが任意のIPアドレスをサポートするように構成されうるかを判定するために、図1Bに示すINADDR_ANY機能を実行することによって、機器内のすべてのインタフェースを調査するだろう。関数は、一度に一つ、すべてのインタフェースを、ループルーチンを実行することによって、テストするかもしれない。このループの例はステップ38、40、42、44、46、48に例示される。カウンタは第1のインタフェースを示すかまたはポイントするために初期化されるかもしれない、ステップ36。次にカウント値を用いて、関数はインタフェースを選択し、ステップ38、次に選択されたインタフェースは、そのインタフェースが任意のIPアドレスに対して構成されているかを判定するために質問される、ステップ40。構成されている場合、選択されたインタフェースはソケットにバインドされ、ステップ42、次に、状態フラグはバインディング成功を示すために「0」に設定される、ステップ44。しかし、この時点で戻らずに、関数は、評価されるべきインタフェースがさらにあるかどうかをテストすることによってループの実行を続け、各インタフェースの評価を続ける、テスト46。ない場合、ステップ38へ戻る前にカウンタを進める、ステップ48。すべてのインタフェースが評価されると(すなわち、テスト46の結果が「いいえ」)、関数は、例えば状態フラグが「0」または「−1」と等しいかどうかをテストすることによって、誤り符号が生成されるべきかどうか判定する、テスト32。状態フラグのテストには多くのフォーマットがあるかもしれず、図示した「−1」か「0」のテストは単に例示目的であることが理解されるだろう。状態フラグ=−1の場合、インタフェースはバインドされなかった故、関数はbind()APIを呼出した処理へステップ26で戻る前に誤り符号が生成され、提示される必要がある、ステップ34。しかし、アドレスがバインドされた場合(すなわち、テスト32の結果が「いいえ」の場合)、関数がbind()APIを呼出した処理へステップ26で戻る前に誤り符号が提示される、ステップ34。(図1Aにはテスト32を示していない。その処理では答えが常に「はい」であるからであり、従って図を簡単にするために図1Aはテスト28からステップ34へ直接進むフローを示していることに注意のこと)。
図1Aおよび1Bに例示する機能が明らかにするように、従来のbind()APIは選択されたインタフェースが要求されたIPアドレスに対して既に構成されているかどうかを評価するだけである。bind()APIのこの限界は、現状では、bind()API呼出がなされる前に特定のインタフェースが放送または同報データストリームのIPアドレスに対して構成されることを確実にする付加的なアプリケーションソフトウェアステップによって克服される。しかし、そのようなソフトウェア命令はオーバヘッドおよび不要な複雑さをソフトウェアアプリケーションに付加する。
図2に、従来のbind()APIの限界を克服し、ソケットインタフェースの確立を簡素化するように意図される実施例を示す。この実施例において、指示されたIPアドレスに対してインタフェースが構成されうるかどうかを判定する新しい機能200を加えて、操作がシステムインタフェースを調査する処理への修正を行う。この実施例の説明を簡単化するために、図2は特定のIPアドレスがバインドされるように要求される場合に関するbind()APIの機能がbind()呼出10*に含まれていることを示すだけであり、またそれに対応する説明もそのように説明するだけである。
図2に示す実施例の機能は、bind_broadcast()(すなわち、bind()APIの修正よりむしろAPIライブラリへの追加)のような新しいAPI関数として提供されるかもしれない。放送、同報並びに他の関連ビデオおよび/またはオーディオ用のアプリケーションで使用するための新しいbind_broadcast()APIを加えることは、これらのアプリケーションが図1Bに示すINADDR_ANYワイルドカードの機能を必要としないため、好ましいかもしれない。新しいAPIとして本実施例が実施されるかもしれないことを反映して、この呼出は10*と名付けられ、図2から図5においてBind*()として識別される。さらに、IPアドレスのテスト14は放送専用の新しいAPIには必要がないだろう。従ってこのステップは図2から図5において破線で示され、このステップが選択的でありこれらの図面の説明に含まれないことを表す。代替的実施例において、bind()APIは、bind()の従来のINADDR_ANYワイルドカードの機能を保持しながら、ここに説明する機能を追加するように修正されるかもしれない。そのような代替的実施例を図6から図9に示し、後で説明する。
図2を参照して、修正されたbind*()関数は図1Aを参照して説明したものと同様の方法で、すべてのローカルインタフェースが評価されるまで続く。具体的には、フラグ値は関数の開始時に−1に設定されるかもしれない、ステップ12。(または、後でテストに基づいて「−1」に設定されるかもしれない)。特定のAPIの実施に依存して、bind()関数は、一度に一つ、すべてのインタフェースを、ループルーチンを実行することによって、テストするかもしれない。このループ例をステップ16、18、20、28、30に例示する。カウンタは第1のインタフェースを示すかまたはポイントするために初期化されるかもしれない、ステップ16。次にカウント値を用いて、関数はインタフェースを選択し、ステップ18、次に選択されたインタフェースは、そのインタフェースが指示されたIPアドレスに対して構成されているかを判定するために質問される、ステップ20。そのように構成されている場合、bind*()関数は指示されたソケットまたはIPアドレスを、指定されたローカルインタフェースにバインドする、ステップ22。次に関数は状態フラグをbind*()操作が成功したことを示す「0」に設定する、ステップ24。次にbind()呼出を行ったアプリケーションへ戻る、ステップ26。選択されたインタフェースが指示されたIPアドレスに対して構成されていない場合(すなわち、テスト20の結果が「いいえ」の場合)、関数は、評価されるべきインタフェースがさらにあるかどうかを判定するために(例えばカウンタを機器のインタフェースの総数と比較することによって)カウンタをテストする、ステップ28。評価されるべきインタフェースがさらにある場合、処理を続けるためにステップ18へループバックする前に次のインタフェースへポイントするためにカウンタを進める、ステップ30。
最後のインタフェースが評価された場合(すなわち、テスト28の結果が「いいえ」の場合)、このことは、どのインタフェースも指示されたIPアドレスに対して構成されなかったことを意味する。しかし、戻ることおよびバインド失敗を示さずに、新しい機能200が実施される。この新しい機能200は、インタフェースが所望のIPアドレスに対して構成されうるかどうかを判定するために、例えば第2のループ(例えばステップ214、216、218、224、226)を実施することにより、各インタフェースを再度評価する。例えば、カウンタは第1のローカルインタフェースを示すかまたはポイントするために初期化されるかもしれない、ステップ214。つづいて評価のためにそのインタフェースの選択がされる、ステップ216。次に、関数は選択されたインタフェースが指示されたIPアドレスに対して構成されうるかどうかを判定するために、選択されたインタフェースを評価する、ステップ218。構成されうる場合、インタフェースがそのIPアドレスに対して構成される、ステップ220。インタフェースが構成されると、ソケットは、通常のbind()APIの標準的機能と同様にそのインタフェースにバインドされる、ステップ22。バインド操作の完了に成功すると、状態フラグは「0」に変更されるかもしれない、ステップ24。次にbind*()呼出を行ったアプリケーションに戻ることによって関数は終了する、ステップ26。
修正bind*()関数が特定のIPアドレスに対するインタフェースの構成可能性をテストすることができる少なくとも2つの方法がある。第1の方法において、bind*()関数は、選択されたインタフェースが指示されたアドレスに対して構成され得るかどうかを判定するために、選択されたインタフェースと明示的に情報交換することができる。このことは、指示されたIPアドレスを用い、および成功値が返されるかどうかをテストして、選択されたインタフェースに関する構成操作APIまたは同様の関数呼出を実行することを含むかもしれない。また、これは、構成が可能であるかどうかを確認するだけではなく(戻値によって伝達された情報)、同じステップ内で構成を完了する。その結果、図に示すステップ218およびステップ220は結合されるか単一の処理呼出で成されるかもしれない。指示されたIPアドレスに対する構成が可能であるという報告を返すだけの処理呼出しが用いられる場合には、構成を完成するために分離した別の操作、ステップ220、がbind*()関数に含まれるだろう。
第2の方法において、新しいbind*()関数は、選択されたインタフェースの構成パラメータを決定するために、例えばアクセス制御リスト(ACL)、またはインタフェース構成に関する情報を含む別のデータベースにアクセスすることにより、ルーティング検索法を用いることができる。機器またはシステムがポリシーベースのルーティングを実施済みの場合、ACLはアドレスに対して各インタフェースが構成されたそのアドレス、および各インタフェースの入力/出力構成可能性を記載するかもしれない。したがって、ACL検索を行うことにより(例えばACLに記載された各インタフェース値を検討するループを実行することにより)、関数はいずれかのインタフェースが指示されたIPアドレスもしくはソケットに対して構成されているかまたは構成されるかもしれないかを素早く判定できる。
すべての機器またはシステムのインタフェースが評価された場合(すなわち、テスト224の結果が「いいえ」である場合)、どのインタフェースも指示されたIPアドレスにバインドされていない。このことはどのインタフェースも指示されたIPアドレスに対して構成されることができないことを示す。それ故、修正されたbind*()関数は失敗し、従って関数は誤りレジスタに誤り符号を提示し、ステップ34、bind*()APIを呼出したアプリケーションへ戻る、ステップ26。図2に示す例示的処理において、バインド操作が完了されなかったため、状態フラグは「0」に変更されなかった。従って、bind*()操作が失敗したことを示す「−1」値が返される。プログラミング技術者は、様々な方法および処理フローの間の様々な点でbind*()の戻値を設定できることを理解するだろう。
図3にシステムまたは機器のローカルインタフェース全体を通した単一ループのみを必要とする本発明を実施するための代替的実施例を示す。図2を参照して上で説明した実施例のように、関数は選択されたインタフェースが指示されたIPアドレスに対して構成されないと判定される(テスト20)まで従来のbind()関数に類似した方法で始まる。具体的には、関数の開始時にフラグ値は−1に設定されるかもしれない、ステップ12、(または、後でテストに基づいて「−1」に設定されるかもしれない)。特定のAPIの実施に依存して、bind()関数は、一度に一つ、すべてのインタフェースを、ループルーチンを実行することによって、テストするかもしれない。このループ例をステップステップ16,18,20,28,30に例示する。カウンタは第1のインタフェースを示すかまたはポイントするために初期化されるかもしれない、ステップ16。次にカウント値を用いて、bind*()関数はインタフェースを選択し、ステップ18、次に選択されたインタフェースは、そのインタフェースが指示されたIPアドレスに対して構成されているかを判定するために質問される、ステップ20。そのように構成されている場合、関数は指示されたソケットまたはIPアドレスを指定されたローカルインタフェースにバインドする、ステップ22。次に関数は状態フラグをbind*()操作が成功したことを示す「0」に設定する、ステップ24。次にbind*()呼出を行ったアプリケーションへ戻る、ステップ26。
しかし、選択されたインタフェースが指示されたIPアドレスに対して構成されていない場合(すなわち、テスト20の結果が「いいえ」の場合)、関数は、インタフェースが指示されたIPアドレスに対して構成されうるかを判定するためにそのインタフェースを評価する、ステップ218。上で検討したように、この評価を行うことができる少なくとも2つの方法がある。インタフェースが指示されたIPアドレスに対して構成され得ると判定された場合、そのインタフェースはそのように構成され、ステップ220、その後選択されたインタフェースはソケットにバインドされる、ステップ22。インタフェースのIPアドレスへのバインドに成功すると、状態フラグは「0」に設定され、ステップ24、その後関数はbind*()APIを呼出したアプリケーションへ戻る。選択されたインタフェースが指示されたIPアドレスに対して構成されることができない場合(すなわち、テスト218の結果が「いいえ」の場合)、関数は、評価されるべきインタフェースがさらにあるかどうかを判定するためにカウントをテストする、ステップ28。評価されるべきインタフェースがさらにある場合、ステップ18へループバックする前にカウンタを進める、ステップ30。評価されるべきインタフェースがもはや無い場合(すなわち、テスト28の結果が「いいえ」の場合)、このことは、インタフェースはバインドされていないことを意味し、したがってbind*()APIを呼出したアプリケーションへステップ26で戻る前に誤り符号が誤りレジスタに提示される、ステップ34。
図4に第3の実施例を示す。これは放送または同報データストリームを受信できるかどうかに関して各インタフェースに実行される追加テストを含む。この実施例において、bind*()関数は、新しいステップ400以外は図2を参照して上で説明した手法と同一の手法で進行する。従って、冗長な説明に対する要求を避けるために、図2の説明がここに参照として組み込まれる。bind*()関数があるインタフェースをインジケータIPアドレスに対するその構成可能性の評価のために選択すると、関数は、最初に選択されたインタフェースをテストし、そのインタフェースにIPデータの放送または同報ストリームを受信する可能性があるかどうかを判定する、ステップ400。このテストはインタフェースパラメータを決定するためにACLにアクセスすることによって、またはインタフェースの直接質問を実行することによって、成されるかもしれない。特定のインタフェースをその構成可能性に対して評価する前に、IPデータの放送または同報ストリームの受信に対する選択されたインタフェースの能力を評価することは効率的であるかもしれない。この判定はACLを介して直ちになされ、一方インタフェースの構成可能性を判定することは処理能力が原因でより時間が掛かるかもしれないからである。この評価により、インタフェースがIPデータの放送または同報ストリームを受信できると確認する場合、(すなわち、テスト400の結果が「はい」の場合)、bind*()関数は、選択されたインタフェースが指示されたIPアドレスに対して構成されることが可能であるかどうかをテストするために、次へ進む、ステップ218。しかし、この評価が選択されたインタフェースがIPデータの放送または同報ストリームを受信できない場合、例えば追加のインタフェースが評価のために利用可能かどうかをテストし、ステップ224、利用可能であれば、カウンタを進めることにより、ステップ226、bind*()関数は次のインタフェースを評価するためにループを進める。IPデータの放送または同報ストリームを受信するインタフェースの能力を評価することを除いて、図4に示す実施例の残余の機能は図2に示し、同図面を参照して上で説明した実施例の機能と同一である。
同様に、図5に代替的実施例を示す。これは、選択されたインタフェースにIPデータの放送または同報ストリームを受信する能力があるかどうかを判定するための、選択されたインタフェースをテストする追加テスト、ステップ400、を除くと図3と同一である。冗長な説明に対する要求を避けるために、図3の説明がここに参照として組み込まれる。bind*()関数が、あるインタフェースが指示されたIPアドレスに対して構成されていないと判定すると、テスト20、そのインタフェースが放送データストリームを受信することができるかどうかを判定するために評価される、ステップ400。受信できる場合、選択されたインタフェースは、それが指示されたIPアドレスに対して構成されうるかどうかを判定するために評価される、ステップ218。しかし、選択されたインタフェースがIPデータの放送または同報ストリームを受信できない場合には、例えば追加のインタフェースが評価のために利用可能かどうかをテストし、ステップ28、利用可能であれば、ステップ18へループバックする前にカウンタを進めることにより、ステップ30、ループが進められる。IPデータの放送または同報ストリームを受信するインタフェースの能力を評価することを除いて、図5に示す実施例の残余の機能は、図3に示し同図面を参照して上で説明した実施例の機能と同一である。
上述したように、種々の実施例は従来からあった機能のすべてを保持する修正されたbind()APIとして実施されるかもしれない。図6に、図2を参照して上で説明した追加機能200がbind*()APIの全機能に組み入れられた実施例を示す。この実施例において、IPアドレスがbind*()呼出10*の引数に含まれている場合、関数は図2を参照して上で説明したように進む。bind*()呼出10*の引数が、IPアドレスとしてINADDR_ANYバインド不特定(bind-any)機能を起動するINADDR_ANYまたは「0」を含む場合、テスト14の結果は「いいえ」であり、従って関数は各インタフェースをテストしそのインタフェースがIPアドレスを有して構成されているかどうかを判定するために、テスト40、ステップ38、40、42、44、46、48のループを実行するように進む。具体的には、カウンタは第1のインタフェースを示すかまたはポイントするために初期化されるかもしれない。次にカウント値を用いて、関数はインタフェースを選択し、ステップ38、次に選択されたインタフェースはそのインタフェースが任意のIPアドレスに対して構成されているかどうかを判定するために質問される、テスト40。選択されたインタフェースがIPアドレスに対して構成されている場合、そのインタフェースはバインドされ、ステップ42、「0」の成功状態フラグが設定される、ステップ44。選択されたインタフェースがIPアドレスに対して構成されないか、またはステップ42でバインドされることに成功しないかに係わらず、例えば評価されるべき追加のインタフェースが残っているかどうかをテストし、テスト46、残っていれば、ステップ38へループバックする前にカウンタを進めることにより、ステップ48、ループを進める。しかし、評価されるべきインタフェースがこれ以上無い場合(すなわち、テスト46の結果が「いいえ」の場合)、bind*()関数は、状態フラグが「−1」のままであるかどうか、またはインタフェースの1つが任意のIPアドレスにバインドされた結果として「0」に設定されたかを判定するための状態フラグをテストするかもしれない、テスト32。このテストの結果が「いいえ」(すなわち、状態フラグが「0」)の場合、関数は「0」の状態値を返し、bind*()APIを呼出したアプリケーションへ戻る、ステップ26。しかし、状態フラグが「−1」(すなわち、テスト32の結果が「はい」)の場合、これはバインディング操作が成功しなかったことを示し、従って関数はbind*()APIを呼出したアプリケーションへステップ26で戻る前に誤り符号が誤りレジスタに提示される、ステップ34。図6に示す修正されたbind*()関数の残余のステップは図2を参照して上で説明したステップと本質的に同じである。
同様に、図7に図3を参照して上で説明した追加機能300がbind*()APIの全機能に組み入れられた実施例を示す。この実施例において、IPアドレスがbind*()呼出10*引数に含まれている場合、関数は図2を参照して上で説明したように進む。bind*()呼出10*の引数が、IPアドレスに対してINADDR_ANYまたは「0」を含む場合、図6の上記ステップ36−48について説明したものと本質的には同じであるINADDR_ANYバインド不特定機能を起動。図7に示す修正されたbind*()機能の残余のステップは図3を参照して上で説明したステップと本質的に同じである。
同様に、図8に図2を参照して上で説明した追加機能200および図4を参照して上で説明した選択されたインタフェースの付加的テスト400がbind()APIの全機能に組み入れられた実施例を示す。この実施例において、IPアドレスがbind*()呼出10*の引数に含まれている場合、関数は図2を参照して上で説明したように進む。bind*()呼出10*の引数が、IPアドレスに対してINADDR_ANYまたは「0」を含む場合、図6の上記ステップ36−48について説明したものと本質的には同じであるINADDR_ANYバインド不特定機能を起動。図8に示す修正されたバインド機能の残余のステップは図4を参照して上で説明したステップと本質的に同じである。
同様に、図9に、図3を参照して上で説明した追加機能300および図5を参照して上で説明した選択されたインタフェースの付加的テスト400がbind*()APIの全機能に組み入れられた実施例を示す。この実施例において、IPアドレスがbind*()呼出10*の引数に含まれている場合、関数は図3を参照して上で説明したように進む。bind*()呼出の引数が、IPアドレスに対してINADDR_ANYまたは「0」を含む場合、図6の上記ステップ36−48について説明したものと本質的には同じであるINADDR_ANYバインド不特定機能を起動。図9に示す修正されたバインド機能の残余のステップは図5を参照して上で説明したステップと本質的に同じである。
図2、4、6、および8に示す実施例に最も効果的でさらに進んだ実施例において、インタフェースは、ポリシールールに基づいて確立されるかもしれないような優先度順で質問されるかもしれない。これを達成するために、インタフェースの優先度順位一覧がインタフェースを評価する際にステップ214、216、218、224、226を含むループにおいて順に用いるように作成されるかもしれない。ポリシールールに従って第1のインタフェースが最高優先度を有し、最後のインタフェースが最低優先度を有するように上記優先度順の一覧を準備することにより、上述のインタフェースの構成可能性を評価する処理は、構成されおよびバインドされるインタフェースがポリシールールに従って最高優先度になることを確実にする。この優先度一覧を作成するためには、ポリシーパラメータ、ルールまたは優先度づけ基準のセットが、例えばポリシーベースのルーティングエンジンのようなインタフェース順位づけアプリケーションにとって既知である必要がある。そのようなポリシーパラメータは費用、サービス品質、標準プロトコル選好、および個々のインタフェースに関連する他の要素を含むかもしれない。このインタフェース順位づけアプリケーションは、各インタフェースに対するACL内に格納された情報にアクセスでき、順位づけの値または基準を作成するために、ポリシーパラメータ、ルールまたは優先度づけを利用可能である。ポリシーパラメータ、ルールまたは優先度づけ基準についてACLから得たインタフェース特性のこの評価がすべてのインタフェースについて完了すると、インタフェースは順位づけの値または基準の順に配列されることができる。この実施例を実施するために、修正されたbind*()APIは、図2を参照して上で説明した新しい機能200においてインタフェース全体を通じてループを実行するために、順位一覧を用いる必要がある。
さらに別の代替的実施例において、図2、4、6および8のステップ216で、あるインタフェースが評価のために選択される際、APIから得られるようなインタフェース特性にポリシーベースのルールが適用されるかもしれない。同様に、追加のポリシーベースのルールテストは、選択されたインタフェースが指示されたIPアドレスに対して構成可能であるかを判定するためのテストに先行して実行されるかもしれない。例えば、図4、5、8、および9を参照して上で説明した実施例は、あるインタフェースが、選択されたインタフェースの構成可能性のテストに先立ってIPデータの放送および同報IPストリームを受信可能であるかを評価することにより、1つの形式のポリシーベースのテストを実行する。上で説明したように、このポリシーベースのテストが満足されない場合、そのインタフェースは構成可能と評価されない。この概念はさらに費用、サービス品質、セキュリティ、およびSP選好のような他のポリシーパラメータに適用できる。
上述した種々の実施例は、携帯電話または無線ネットワーク接続を介してインターネット放送またはインターネットデータストリームを受信するための回路およびソフトウェアで構成された移動機器において実施されるかもしれない。図10にそのような移動機器100の実施例を示す。これは携帯電話、マルチメディアインターネットが可能な携帯電話、携帯情報端末、および/または、無線電子メール受信機のいずれかであるかもしれない。そのような移動機器100はメモリー104およびディスプレイ106と接続されたプロセッサ102を含むかもしれない。また、移動機器100は多くのデータ入出力インタフェース、例えば携帯電話データ受信機、有線(例えばファイアワイア)データリンク、ブルートゥース無線データリンク、および赤外線データリンクを含むかもしれない。携帯電話データ受信機は無線ネットワーク送信機/受信機(図示せず)から電磁信号を受信するためのアンテナ120、およびアンテナ120に接続された無線信号を受信し、その信号を、プロセッサ102に中継されるディジタルデータに変換する無線送受信機122を含むかもしれない。同様に、ブルートゥースまたは同様のローカル無線データリンクは、受信無線信号をプロセッサ102に中継されるディジタルデータに変換するブルートゥース送受信機124に接続されたアンテナ120(または分離して示していない別のアンテナ)を含むかもしれない。データは、ファイアワイア、USB、シリアル(例えばRS−232)、またはイーサネット(登録商標)データリンクのような有線データリンクを用いて移動機器100へ、および移動機器100から送信されるかもしれない。例えば、データは、コネクタ130から受信したデータをプロセッサ102に中継されるディジタルデータに変換するファイアワイアモデム回路132に接続されるファイアワイアコネクタ130を通じて送信されるかもしれない。当業者には周知のとおり、他の有線データリンクはその特定のデータリンクに適した同様の回路を含むだろう。また、データは、移動機器100からおよび移動機器100へ赤外線(IR)データリンクによって例えばIR送信機/受信機140から受信したデータをプロセッサ102に中継されるディジタルデータに変換するIRデータリンクモデム回路142に接続されたIRデータ送信機/受信機140を通じて、送信されるかもしれない。
携帯電話データ受信装置120、122、有線データリンク130、132、ブルートゥース無線データリンク120、124、およびIRデータリンク140、142の各々は、プロセッサが受信データにアクセスするかもしれないインタフェースである。さらに、他のモジュールおよびコプロセッサ間でデータを転送するために、移動機器100の中で他のインタフェースが実施されるかもしれない。したがって、IPデータの放送または同報ストリームを受信するために、移動機器100はこれらのインタフェースの1つを放送または同報データストリームのIPアドレスにバインドしなければならない。このことは、上で説明した実施例の方法の1つを実行するプロセッサ102によって、例えば方法の1つを実施するように構成されたソフトウェア命令を実行することによって、成されるかもしれない。そのようなソフトウェア命令はAPIとしてまたは実施例の方法を実施するコンパイルされたソフトウェアとしてメモリー104に格納されるかもしれない。
プロセッサ102は汎用プロセッサ、ディジタル信号プロセッサ(DSP)、特定用途向集積回路(ASIC)、プログラマブルゲートアレイ(FPGA)、もしくは他のプログラム可能論理回路、個別ゲートもしくはトランジスタ論理、個別ハードウェア部品、またはここに説明した機能を実行するように設計されたそれらの任意の組合せであるかもしれない。汎用プロセッサは、マイクロプロセッサであるかもしれないが、代替的にはプロセッサは、任意の通常のプロセッサ、制御器、マイクロ制御器または状態機械であるかもしれない。プロセッサはまた、計算機器の組合せ、例えばDSPとマイクロプロセッサ、複数のマイクロプロセッサ、DSPコアと連係した1つ以上のマイクロプロセッサ、または他のそのような構成として実施されるかもしれない。
種々の実施例の修正されたbind*()APIを実施するために、bind()APIの機能を提供する基本的なソフトウェアは、ここに説明したものと同様なソフトウェアまたは同様な機能を提供するソフトウェアを加えるために修正される必要がある。さらに、アプリケーション開発者へ修正されたbind()APIの新しい機能および挙動を通知するために、APIが更新される必要があるだろう。
図2−9および上で説明した種々の実施例には、インタフェースが所望のIPアドレスに対して構成されていない場合であっても、1つのAPI呼出だけで、bind*()APIが適切なインタフェースを選択し、それを構成し、さらに所望のIPアドレスとバインドを行うだろう、という利点がある。従って、そのIPのための特別のインタフェースを構成するための付加的なアプリケーションの複雑さは要求されない。さらに、インタフェース選択、構成およびバインディングがただ一つのAPI呼出で達成される故、下層のソフトウェアがbind*()APIを呼出すことができる。このことにより、データストリームの入力を識別し、それを復調するために下層(すなわち、アプリケーション層の下位のソフトウェア層)にとって必要な情報を送ることにより、新しいまたは修正されたbind*()APIが、下層でインターネット放送または同報ストリームの構成および復調を始動するために用いられることが可能となる。このことは、また下層ソフトウェアが、IPデータストリームを受信するためのインタフェースを構成することを可能とする。したがって、新しいまたは修正されたbind*()APIは、アプリケーション開発者の作業を簡素化しながら、IPアドレスへのインタフェースを選択し、識別し、構成し、およびバインドするための付加的API呼出に対する要求を排除する。
種々の実施例は、放送または同報IPコンテンツを受信するためのアプリケーションの場面において特に有利である。これは、そのような状況においては他の形式のインターネットアプリケーションの場合のような逆方向の伝達がないと予想されるからである。したがって、種々の実施例の修正されたbind*()APIを実施することによって操作の結合と中止を当然に要求するIPアドレスとの結合に関連する複雑さを、回避することができる。
上述の実施例のイベントを実施するために用いられるハードウェアは、本方法の上記イベントに対応するステップを実行するための命令セットを実行するように構成された処理構成要素およびメモリー構成要素であるかもしれない。あるいはまた、いくつかのイベントは所与の関数に特有な回路によって実行されるかもしれない。
当業者は、ここに開示された実施例に関連して説明された種々の例示的論理ブロック、モジュール、回路およびアルゴリズムのステップは、電子的ハードウェア、計算機ソフトウェア、またはその双方の組合せとして実施されるかもしれないことを認識するだろう。ハードウェアとソフトウェアのこの互換性を明確に示すために、ここまで種々の例示的構成要素、ブロック、モジュール、回路、およびステップは、それらの機能の見地から一般的に説明してきた。そのような機能がハードウェアまたはソフトウェアとして実施されるかどうかは、全体のシステムに課せられた特定の用途および設計制約に依存する。当業者は、説明した機能を各特定の用途に対して異なる方法で実施するかもしれないが、そのような実施の決定は本発明の範囲からの逸脱を引き起こすと解釈されるべきではない。
ここに開示された実施例に関して説明された方法またはアルゴリズムのステップは、直接ハードウェアで、プロセッサで実行されるソフトウェアモジュールで、またはその2つの組合せで具体化されるかもしれない。ソフトウェアモジュールはRAMメモリー、フラッシュメモリー、ROMメモリー、EPROMメモリー、EEPROMメモリー、レジスタ、ハードディスク、可搬形ディスク、CD−ROM、または当業者に既知の任意の他の形式の記憶媒体のいずれかであるかもしれないプロセッサ可読メモリー内にもあるかもしれない。代表的記憶媒体は、プロセッサが情報を記憶媒体から読み出しおよび情報を記憶媒体に書き込むことができるようにプロセッサに接続される。代替的には、記憶媒体はプロセッサの構成部品であるかもしれない。プロセッサおよび記憶媒体はASIC内にあるかもしれない。ASICはユーザ端末内にあるかもしれない。代替的に、プロセッサおよび記憶媒体は個別部品としてユーザ端末内にあるかもしれない。
種々の実施例のこれまでの説明は、当業者が本発明を製造しまたは使用することを可能にするように提供されている。これらの実施例への種々の変形は当業者に容易に明らかになるだろう。また、ここに定義した一般的原理は本発明の精神または範囲から逸脱することなく他の実施例に適用されるかもしれない。したがって、本発明は、ここに示した実施例に限定することを意図されていず、むしろ、請求範囲はここに開示した原理および新規な特徴と矛盾しない最も広い範囲に一致されるべきである。
Claims (21)
- インターネットを介してデータを受信するために複数のローカルインタフェースの1つを1つのIPアドレスにバインドするための方法であって、
複数のローカルインタフェースの1つが前記IPアドレスに対して構成されているかどうかを判定することと、
複数のローカルインタフェースの前記1つが前記IPアドレスに対して構成されていると判定される場合、複数のローカルインタフェースの前記1つを前記IPアドレスにバインドすることと、
複数のローカルインタフェースの前記1つが前記IPアドレスに対して構成されているかどうかを判定するステップを、複数のインタフェースの少なくとも1つが前記IPアドレスにバインドされるかまたはすべての複数のローカルインタフェースが評価され終わるまで、反復することと、
複数のローカルインタフェースのいずれも前記IPアドレスにバインドされない場合、複数のローカルインタフェースの1つを選択することと、
複数のローカルインタフェースの前記選択された1つが前記IPアドレスに対して構成されうるかどうかを判定することと、
複数のローカルインタフェースの前記選択された1つが前記IPアドレスに対して構成されうると判定される場合、複数のローカルインタフェースの前記選択された1つを前記IPアドレスに対して構成すること、および
複数のローカルインタフェースの前記選択された1つが前記IPアドレスに対して構成されうると判定される場合、複数のローカルインタフェースの前記選択された1つを前記IPアドレスにバインドすることと、
複数のローカルインタフェースの1つを選択するステップと、複数のローカルインタフェースの前記選択された1つが前記IPアドレスに対して構成されうるかどうかを判定するステップとを、複数のインタフェースの少なくとも1つが前記IPアドレスにバインドされるかまたはすべてのローカルインタフェースが評価され終わるまで、反復することと、
複数のローカルインタフェースのいずれも前記IPアドレスにバインドされない場合、バインドに失敗したことを示すこととを含む方法。 - 複数のローカルインタフェースの選択された1つが、インターネットデータの放送または同報ストリームを受信できるかどうかを判定することをさらに含み、複数のローカルインタフェースの前記選択された1つがIPアドレスに対して構成されうるかどうかを判定することが、複数のローカルインタフェースの前記選択された1つがインターネットデータの放送または同報ストリームを受信できると判定された場合にのみ成される、請求項1に記載の方法。
- 複数のローカルインタフェースの1つを選択するステップが、優先度順に従って複数のローカルインタフェースから選択することを含む、請求項1に記載の方法。
- 複数のローカルインタフェースの1つを選択するステップが、複数のローカルインタフェースの各々1つの特性に適用されるポリシールールに基づく優先度順に従って複数のローカルインタフェースから選択することを含む、請求項1に記載の方法。
- インターネットを介してデータを受信するために複数のローカルインタフェースの1つを1つのIPアドレスにバインドするための方法であって、
複数のローカルインタフェースの1つを選択することと、
複数のローカルインタフェースの前記選択された1つが前記IPアドレスに対して構成されているかどうかを判定することと、
複数のローカルインタフェースの前記選択された1つが前記IPアドレスに対して構成されていないと判定される場合、複数のローカルインタフェースの前記選択された1つが前記IPアドレスに対して構成されうるかどうかを判定することと、
複数のローカルインタフェースの前記選択された1つが前記IPアドレスに対して構成されうると判定される場合、複数のローカルインタフェースの前記選択された1つを前記IPアドレスに対して構成することと、
前記選択されたインタフェースが前記IPアドレスに対して構成されている場合、複数のローカルインタフェースの前記選択された1つを前記IPアドレスにバインドすることと、
複数のインタフェースの少なくとも1つが前記IPアドレスにバインドされるかまたは複数のローカルインタフェースの各々が評価され終わるまで、上記複数のステップを反復することと、
複数のローカルインタフェースのいずれも前記IPアドレスにバインドされない場合、バインドに失敗したことを示すこととを含む方法。 - 複数のローカルインタフェースの選択された1つが、インターネットデータの放送または同報ストリームを受信できるかどうかを判定することをさらに含み、複数のローカルインタフェースの前記選択された1つがIPアドレスに対して構成されうるかどうかを判定することが、複数のローカルインタフェースの前記選択された1つがインターネットデータの放送または同報ストリームを受信できると判定された場合にのみ成される、請求項5に記載の方法。
- 複数のローカルインタフェースの選択された1つがIPアドレスに対して構成されうるかどうかを評価するステップと、前記IPアドレスに対する複数のローカルインタフェースの前記選択された1つを構成するステップとが、複数のローカルインタフェースの前記選択された1つが前記IPアドレスに対して構成されていない場合にのみ、実行される、請求項5に記載の方法。
- アプリケーションプログラミングインタフェース関数のための、プロセッサが実行可能なソフトウェア命令を格納したプロセッサ可読メモリーであって、ソフトウェア命令が、
複数のローカルインタフェースの1つがIPアドレスに対して構成されているかどうかを判定するステップと、
複数のローカルインタフェースの前記1つが前記IPアドレスに対して構成されていると判定される場合、複数のローカルインタフェースの前記1つを前記IPアドレスにバインドするステップと、
複数のローカルインタフェースの1つが前記IPアドレスに対して構成されているかどうかを判定するステップを、複数のインタフェースの少なくとも1つが前記IPアドレスにバインドされるかまたは複数のローカルインタフェースの各々が評価され終わるまで、反復するステップと、
複数のローカルインタフェースのいずれも前記IPアドレスにバインドされない場合、複数のローカルインタフェースの1つを選択するステップと、
複数のローカルインタフェースの前記選択された1つが前記IPアドレスに対して構成されうるかどうかを判定するステップと、
複数のローカルインタフェースの前記選択された1つが前記IPアドレスに対して構成されうると判定される場合、複数のローカルインタフェースの前記選択された1つを前記IPアドレスに対して構成するステップと、
複数のローカルインタフェースの前記選択された1つが前記IPアドレスに対して構成されている場合、複数のローカルインタフェースの前記選択された1つを前記IPアドレスにバインドするステップと、
複数のローカルインタフェースの1つを選択するステップと、複数のローカルインタフェースの前記選択された1つが前記IPアドレスに対して構成されうるかどうかを判定するステップとを、複数のインタフェースの少なくとも1つが前記IPアドレスにバインドされるかまたは複数のローカルインタフェースの各々が評価され終わるまで、反復するステップと、
複数のローカルインタフェースのいずれも前記IPアドレスにバインドされない場合、バインドに失敗したことを示すステップとを含む、プロセッサ可読メモリー。 - ソフトウェア命令が、複数のローカルインタフェースの選択された1つがインターネットデータの放送または同報ストリームを受信できるかどうかを評価するステップをさらに含み、
複数のローカルインタフェースの前記選択された1つがIPアドレスに対して構成されうるかどうかを評価するステップが、複数のローカルインタフェースの前記選択された1つがインターネットデータの放送または同報ストリームを受信できると評価された場合にのみ成される、請求項8に記載のプロセッサ可読メモリー。 - ソフトウェア命令が、複数のローカルインタフェースの1つを選択するステップが優先度順に従って複数のローカルインタフェースから選択することを含むように構成された、請求項8に記載のプロセッサ可読メモリー。
- ソフトウェア命令が、複数のローカルインタフェースの1つを選択するステップが複数のローカルインタフェースの各々の特性に適用されるポリシールールに基づく優先度順に従って複数のローカルインタフェースから選択することを含むように構成された、請求項8に記載のプロセッサ可読メモリー。
- アプリケーションプログラミングインタフェース機能のための、プロセッサが実行可能なソフトウェアを格納したプロセッサ可読メモリーであって、ソフトウェア命令が、
複数のローカルインタフェースの1つを選択するステップと、
複数のローカルインタフェースの前記選択された1つがIPアドレスに対して構成されているかどうかを評価するステップと、
複数のローカルインタフェースの前記選択された1つが前記IPアドレスに対して構成されていないと判定される場合、複数のローカルインタフェースの前記選択された1つが前記IPアドレスに対して構成されうるかどうかを評価するステップと、
複数のローカルインタフェースの前記選択された1つが前記IPアドレスに対して構成されうると判定される場合、複数のローカルインタフェースの前記選択された1つを前記IPアドレスに対して構成するステップと、
前記選択された複数のローカルインタフェースの1つが前記IPアドレスに対して構成されている場合、複数のローカルインタフェースの前記選択された1つを前記IPアドレスにバインドするステップと、
複数のインタフェースの少なくとも1つが前記IPアドレスにバインドされるかまたは複数のローカルインタフェースの各々が評価され終わるまで、上記ステップを反復するステップと、
複数のローカルインタフェースのいずれも前記IPアドレスにバインドされない場合、バインドに失敗したことを示すステップとを含む、プロセッサ可読メモリー。 - ソフトウェア命令が、複数のローカルインタフェースの選択された1つがインターネットデータの放送または同報ストリームを受信できるかどうかを判定するステップをさらに含み、ソフトウェア命令は、複数のローカルインタフェースの前記選択された1つがIPアドレスに対して構成されうるかどうかを判定するステップが、複数のローカルインタフェースの1つがインターネットデータの放送または同報ストリームを受信できると判定された場合にのみ成されるように構成された、請求項12に記載のプロセッサ可読メモリー。
- ソフトウェア命令が、複数のローカルインタフェースの1つを選択するステップと、複数のローカルインタフェースの前記選択された1つがIPアドレスに対して構成されうるかどうかを判定するステップと、複数のローカルインタフェースの前記選択された1つを前記IPアドレスに対して構成するステップとが、複数のローカルインタフェースの前記選択された1つがIPアドレスに対して構成されない場合にのみ、実行されるように構成された、請求項12に記載のプロセッサ可読メモリー。
- プロセッサと、
前記プロセッサに接続されたメモリーであって、前記プロセッサに、
複数のローカルインタフェースの1つがIPアドレスに対して構成されているかどうかを判定するステップと、
複数のローカルインタフェースの前記1つが前記IPアドレスに対して構成されている場合、複数のローカルインタフェースの前記1つを前記IPアドレスにバインドするステップと、
複数のローカルインタフェースの前記1つが前記IPアドレスに対して構成されているかどうかを判定するステップを、複数のインタフェースの少なくとも1つが前記IPアドレスにバインドされるかまたは複数のローカルインタフェースの各々が評価され終わるまで、反復するステップと、
複数のローカルインタフェースのいずれもIPアドレスにバインドされない場合、複数のローカルインタフェースの1つを選択するステップと、
複数のローカルインタフェースの前記選択された1つが前記IPアドレスに対して構成されうるかどうかを判定するステップと、
複数のローカルインタフェースの前記選択された1つが前記IPアドレスに対して構成されうると判定される場合、複数のローカルインタフェースの前記選択された1つを前記IPアドレスに対して構成するステップと、
複数のローカルインタフェースの前記選択された1つが前記IPアドレスに対して構成されていると判定される場合、前記複数のローカルインタフェースの前記選択された1つを前記IPアドレスにバインドするステップと、
複数のローカルインタフェースの1つを選択するステップと、複数のローカルインタフェースの前記選択された1つが前記IPアドレスに対して構成されうるかどうかを判定するステップとを、複数のインタフェースの少なくとも1つが前記IPアドレスにバインドされるかまたは複数のローカルインタフェースの各選択された1つが評価され終わるまで、反復するステップと、
複数のローカルインタフェースのいずれも前記IPアドレスにバインドされない場合、バインドに失敗したことを示すステップとを実行させるように構成された、ソフトウェア命令を格納するメモリーとを含む移動機器。 - ソフトウェア命令が、プロセッサに、複数のローカルインタフェースの選択された1つがインターネットデータの放送または同報ストリームを受信できるかどうかを判定するステップを実行させるようにさらに構成され、
ソフトウェア命令は、複数のローカルインタフェースの前記選択された1つがIPアドレスに対して構成されうるかどうかを判定するステップが、複数のローカルインタフェースの前記選択された1つがインターネットデータの放送または同報ストリームを受信できると判定された場合にのみ成されるように、さらに構成された、請求項15に記載の移動機器。 - ソフトウェア命令が、プロセッサに、優先度順に従って複数のローカルインタフェースの1つを選択させるようにさらに構成された、請求項15に記載の移動機器。
- ソフトウェア命令が、プロセッサに、複数のローカルインタフェースの各選択された1つの特性に適用されるポリシールールに基づく優先度順に従って複数のローカルインタフェースの1つを選択させるようにさらに構成された、請求項15に記載の移動機器。
- プロセッサと、
前記プロセッサに接続されたメモリーであって、前記プロセッサに、
複数のローカルインタフェースの1つを選択するステップと、
複数のローカルインタフェースの前記選択された1つがIPアドレスに対して構成されているかどうかを判定するステップと、
複数のローカルインタフェースの前記選択された1つが前記IPアドレスに対して構成されていないと判定される場合、複数のローカルインタフェースの前記選択された1つが前記IPアドレスに対して構成されうるかどうかを判定するステップと、
複数のローカルインタフェースの前記選択された1つが前記IPアドレスに対して構成されうると判定される場合、複数のローカルインタフェースの前記選択された1つを前記IPアドレスに対して構成するステップと、
前記選択されたインタフェースが前記IPアドレスに対して構成されている場合、複数のローカルインタフェースの前記選択された1つを前記IPアドレスにバインドするステップと、
複数のインタフェースの少なくとも1つが前記IPアドレスにバインドされるかまたは複数のローカルインタフェースの各々が評価され終わるまで、上記複数のステップを反復するステップと、
複数のローカルインタフェースのいずれも前記IPアドレスにバインドされない場合、バインドに失敗したことを示すステップとを実行させるように構成されたソフトウェア命令を格納するメモリー、とを含む移動機器。 - ソフトウェア命令が、プロセッサに複数のローカルインタフェースの選択された1つがインターネットデータの放送または同報ストリームを受信できるかどうかを判定するステップを実行させるようにさらに構成され、
ソフトウェア命令は、複数のローカルインタフェースの1つを選択するステップと、複数のローカルインタフェースの前記選択された1つがインターネットデータの放送または同報ストリームを受信できると判定された場合にのみ複数のローカルインタフェースの前記選択された1つがIPアドレスに対して構成されうるかどうかを判定するステップとが、達成されるようにさらに構成された、請求項19に記載の移動機器。 - ソフトウェア命令は、プロセッサに、複数のローカルインタフェースの1つを選択するステップと、複数のローカルインタフェースの前記選択された1つが、インターネットデータがIPアドレスに対して構成されていない場合にのみ、複数のローカルインタフェースの前記選択された1つがIPアドレスに対して構成されうるかどうかを判定するステップが達成されるように実行させるようにさらに構成された、請求項19に記載の移動機器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US83678006P | 2006-08-09 | 2006-08-09 | |
PCT/US2007/075405 WO2008070217A2 (en) | 2006-08-09 | 2007-08-07 | Apparatus and method for supporting broadcast/multicast ip packets through a simplified sockets interface |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010500832A true JP2010500832A (ja) | 2010-01-07 |
Family
ID=39387163
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009523969A Pending JP2010500832A (ja) | 2006-08-09 | 2007-08-07 | 簡易型ソケットインタフェースを経由する放送/同報ipパケットをサポートするための装置と方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US8180899B2 (ja) |
EP (1) | EP2060093A2 (ja) |
JP (1) | JP2010500832A (ja) |
KR (1) | KR20090047518A (ja) |
CN (1) | CN101502080A (ja) |
TW (1) | TW200818817A (ja) |
WO (1) | WO2008070217A2 (ja) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080186971A1 (en) * | 2007-02-02 | 2008-08-07 | Tarari, Inc. | Systems and methods for processing access control lists (acls) in network switches using regular expression matching logic |
US8427943B2 (en) * | 2008-01-28 | 2013-04-23 | Cisco Technology, Inc. | Bandwidth-aware multicast load balancing on a multi-interface host |
JP5550297B2 (ja) * | 2009-10-02 | 2014-07-16 | キヤノン株式会社 | 通信装置及び通信装置の通信方法並びにプログラム |
CN103377261A (zh) * | 2012-04-28 | 2013-10-30 | 瑞昱半导体股份有限公司 | 管理存取控制清单的装置、执行装置以及方法 |
US20140256247A1 (en) * | 2013-03-05 | 2014-09-11 | Qualcomm Incorporated | Dynamic interface selection in a mobile device |
US20160142219A1 (en) * | 2014-11-13 | 2016-05-19 | Qualcomm Incorporated | eMBMS Multicast Routing for Routers |
CN108390777A (zh) * | 2018-02-05 | 2018-08-10 | 深圳壹账通智能科技有限公司 | 通信接口的调用方法、装置、设备及计算机可读存储介质 |
CN110099403B (zh) * | 2019-05-17 | 2022-07-19 | 腾讯科技(深圳)有限公司 | 一种数据传输方法、装置、设备及存储介质 |
CN111800824A (zh) * | 2020-05-28 | 2020-10-20 | 上海诺行信息技术有限公司 | 智能仪表的数据传输***、驱动接口封装装置及方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1168839A (ja) * | 1997-08-08 | 1999-03-09 | Sony Corp | データ伝送方法およびデータ伝送装置 |
JP2004528764A (ja) * | 2001-04-02 | 2004-09-16 | テレフオンアクチーボラゲット エル エム エリクソン(パブル) | Ipネットワークへの複数パスアクセス内の通信パスを同時に使用する方法 |
JP2006050515A (ja) * | 2004-06-30 | 2006-02-16 | Ntt Docomo Inc | 移動ノードおよび移動ノードの制御方法並びに移動ノード制御プログラム |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01106883A (ja) | 1987-10-20 | 1989-04-24 | Sumitomo Chem Co Ltd | カルバモイルトリアゾール誘導体、その製造法およびそれを有効成分とする除草剤 |
US5493282A (en) | 1992-05-29 | 1996-02-20 | Motorola, Inc. | Addressing method for conserving power in distributed information receivers |
KR19980034552A (ko) * | 1996-11-07 | 1998-08-05 | 김광호 | 소켓기능을 이용한 통신시스템의 소켓바인딩 방법 |
US7174393B2 (en) * | 2000-12-26 | 2007-02-06 | Alacritech, Inc. | TCP/IP offload network interface device |
US6181697B1 (en) * | 1998-03-31 | 2001-01-30 | At&T Corp. | Method for a unicast endpoint client to access a multicast internet protocol (IP) session and to serve as a redistributor of such session |
US6954784B2 (en) * | 2000-08-17 | 2005-10-11 | International Business Machines Corporation | Systems, method and computer program products for cluster workload distribution without preconfigured port identification by utilizing a port of multiple ports associated with a single IP address |
US20040249957A1 (en) * | 2003-05-12 | 2004-12-09 | Pete Ekis | Method for interface of TCP offload engines to operating systems |
US7835743B2 (en) * | 2005-08-03 | 2010-11-16 | Toshiba America Research, Inc. | Seamless network interface selection, handoff and management in multi-IP network interface mobile devices |
-
2007
- 2007-08-07 EP EP07871017A patent/EP2060093A2/en not_active Withdrawn
- 2007-08-07 CN CNA2007800292563A patent/CN101502080A/zh active Pending
- 2007-08-07 JP JP2009523969A patent/JP2010500832A/ja active Pending
- 2007-08-07 KR KR1020097004901A patent/KR20090047518A/ko not_active Application Discontinuation
- 2007-08-07 US US11/835,001 patent/US8180899B2/en not_active Expired - Fee Related
- 2007-08-07 WO PCT/US2007/075405 patent/WO2008070217A2/en active Application Filing
- 2007-08-09 TW TW096129420A patent/TW200818817A/zh unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1168839A (ja) * | 1997-08-08 | 1999-03-09 | Sony Corp | データ伝送方法およびデータ伝送装置 |
JP2004528764A (ja) * | 2001-04-02 | 2004-09-16 | テレフオンアクチーボラゲット エル エム エリクソン(パブル) | Ipネットワークへの複数パスアクセス内の通信パスを同時に使用する方法 |
JP2006050515A (ja) * | 2004-06-30 | 2006-02-16 | Ntt Docomo Inc | 移動ノードおよび移動ノードの制御方法並びに移動ノード制御プログラム |
Also Published As
Publication number | Publication date |
---|---|
WO2008070217A3 (en) | 2008-12-24 |
US8180899B2 (en) | 2012-05-15 |
TW200818817A (en) | 2008-04-16 |
EP2060093A2 (en) | 2009-05-20 |
WO2008070217A2 (en) | 2008-06-12 |
CN101502080A (zh) | 2009-08-05 |
US20080040487A1 (en) | 2008-02-14 |
KR20090047518A (ko) | 2009-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2010500832A (ja) | 簡易型ソケットインタフェースを経由する放送/同報ipパケットをサポートするための装置と方法 | |
US8788565B2 (en) | Dynamic and distributed queueing and processing system | |
JP5485993B2 (ja) | サービスのロードバランシング | |
US9411647B2 (en) | Hierarchical routing and interface selection for multi-processor multimode network devices | |
CN110187912B (zh) | 一种节点选择方法和装置 | |
US8291486B2 (en) | Gateway device having socket library for monitoring, communication method of gateway device having socket library for monitoring, and communication program of gateway device having socket library for monitoring | |
US20030101284A1 (en) | Virtual network with adaptive dispatcher | |
US20090046726A1 (en) | Virtual network with adaptive dispatcher | |
EP2622484A1 (en) | Debugger launch and attach on compute clusters | |
US7296190B2 (en) | Parallel text execution on low-end emulators and devices | |
JP2005535949A (ja) | コンピューティング・サービス・グリッド | |
US9164819B2 (en) | Composing message processing pipelines | |
US20060187902A1 (en) | Method and apparatus for session initiation protocol application design, development, execution and integration | |
CN111064771B (zh) | 一种网络请求处理方法及*** | |
CN106713469B (zh) | 用于分布式容器的动态加载方法、装置及*** | |
US10986066B2 (en) | Systems, apparatuses, methods, and non-transitory computer readable media for efficient call processing | |
US7143313B2 (en) | Support interface module bug submitter | |
US7962799B2 (en) | System and method for synchronizing test runs on separate systems | |
US20240106916A1 (en) | Device and method for performing dynamic-service-oriented communication between vehicle applications on autosar adaptive platform | |
US7403605B1 (en) | System and method for local replacement of music-on-hold | |
CN110221880A (zh) | 应用程序编程接口调用方法、装置、设备及介质 | |
US7418719B2 (en) | Method and system to support a unified process model for handling messages sent in different protocols | |
CN105933445A (zh) | 一种资源请求方法和装置 | |
CN112261673B (zh) | 环回测试的方法及装置 | |
CN117336348A (zh) | 一种应用调用方法、装置、电子装置和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20110414 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110419 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110927 |