(57)【要約】【課題】  目的のネットワーク機器の検出に際しては、コンピュータのファイアウォールの設定やネットワーク機器の電源投入のタイミングなどの様々な環境条件を考慮しなければ、迅速で確実な機器の検出が行なうことができない。【解決手段】  目的のネットワーク機器の検出確認用の識別情報（ＭＡＣアドレス）を予め保持し、当該保持された情報とネットワーク上のネットワーク機器から取得した識別情報と比較することで、目的のネットワーク機器の検出を行なう情報処理装置において、検索対象とすべきアドレスの範囲の一部に対してユニキャストによる要求を行い、その後にブロードキャストまたはマルチキャストによる要求を行なうことを、前記目的のネットワーク機器が検出できるまで繰り返し制御させることを特徴とする。【選択図】  図４
2010238020.tif 000002
【特許請求の範囲】
【請求項１】
目的のネットワーク機器の検出確認用の識別情報を予め保持し、当該保持された検出確認用の識別情報とネットワーク上のネットワーク機器から取得した識別情報と比較することで、目的のネットワーク機器の検出を行なう情報処理装置であって、
ネットワーク上のネットワーク機器の検出の際に対象とすべきアドレスの範囲を設定する設定手段と、
ブロードキャストまたはマルチキャストを用いて、ネットワーク上のネットワーク機器から該ネットワーク機器の識別情報を含む応答を要求することで、目的のネットワーク機器の検出を行なう第１の検出手段と、
前記設定手段により設定された対象とすべきアドレスの範囲に対するユニキャストを用いて、ネットワーク上のネットワーク機器から該ネットワーク機器の識別情報を含む応答を要求することで、目的のネットワーク機器の検出を行なう第２の検出手段と、
前記第２の検出手段により前記対象とすべきアドレスの範囲の全てのアドレスに対してユニキャストによる要求を行う前に、前記対象とすべきアドレスの範囲の一部のアドレスに対してユニキャストによる要求を行い、その後に前記第１の検出手段によりブロードキャストまたはマルチキャストによる要求を行なうことを、目的のネットワーク機器が検出できるまで繰り返す制御手段と、を備えることを特徴とする情報処理装置。
【請求項２】
前記制御手段による制御において、１度の前記第２の検出手段により試行される前記対象とすべきアドレスの範囲の一部のアドレスは、アドレス数、時間、または所定のアドレスが指定されることで決定されることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記制御手段の制御に基づき、前記第２の検出手段により目的のネットワーク機器を検出した際に、更に前記第１の検出手段によりブロードキャストまたはマルチキャストによる要求を行なうことで当該目的のネットワーク機器の検出を試行することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記制御手段の制御に基づき、前記第２の検出手段により目的のネットワーク機器を検出した際に、更に前記第１の検出手段によりブロードキャストまたはマルチキャストによる要求を行なうことで、それまでに当該目的のネットワーク機器が検出されなかった原因が判断されることを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記制御手段の制御に基づき、前記第２の検出手段により目的のネットワーク機器を検出した際に、更に前記第１の検出手段によりブロードキャストまたはマルチキャストによる要求を行なうことで当該目的のネットワーク機器の検出を試行した場合の当該目的のネットワーク機器の検出の成否に応じて、ユーザに対して異なる通知を行なうことを特徴とする請求項３または４に記載の情報処理装置。
【請求項６】
前回のネットワーク機器の検出の結果を記録する記録手段を更に備え、
前記制御手段は、前記記録手段により記録された前回のネットワーク機器の検出の結果から得られるアドレスに対して、前記第２の検出手段による前記ネットワーク機器の検出を試行することを特徴とする請求項１乃至５の何れか１項に記載の情報処理装置。
【請求項７】
前回のネットワーク機器の検出の結果を記録する記録手段を更に備え、
前記制御手段は、前記記録手段により記録された前回のネットワーク機器の検出の結果に応じて、前記第１の検出手段及び前記第２の検出手段の何れかを用いることで、前記目的のネットワーク機器の検出を行なうことを特徴とする請求項１乃至５の何れか１項に記載の情報処理装置。
【請求項８】
前回のネットワーク機器の検出の結果を記録する記録手段を更に備え、
前記制御手段は、前記記録手段により記録された前回のネットワーク機器の検出の結果に応じて、前記第１の検出手段及び前記第２の検出手段を用いる順を異ならせることで、前記目的のネットワーク機器の検出を行なうことを特徴とする請求項１乃至５の何れか１項に記載の情報処理装置。
【請求項９】
前記ネットワーク機器はプリンタであることを特徴とする請求項１乃至８の何れか１項に記載の情報処理装置。
【請求項１０】
前記制御手段は、前記第２の検出手段により前記対象とすべきアドレスの範囲の一部のアドレスに対してユニキャストによる要求を行う際に、前回のユニキャストを行なったアドレスとは異なるアドレスに対してユニキャストによる要求を行うことを特徴とする請求項１乃至９の何れか１項に記載の情報処理装置。
【請求項１１】
予め保持される前記ネットワーク機器の検出確認用の識別情報は、ネットワーク機器のＭＡＣアドレス、シリアル番号、及びネットワークサービス名の少なくとも何れかであることを特徴とする請求項１乃至１０の何れか１項に記載の情報処理装置。
【請求項１２】
目的のネットワーク機器の検出確認用の識別情報を予め保持し、当該保持された検出確認用の識別情報とネットワーク上のネットワーク機器から取得した識別情報と比較することで、目的のネットワーク機器の検出を行なう情報処理装置における情報処理方法であって、
ネットワーク上のネットワーク機器の検出の際に対象とすべきアドレスの範囲を設定する設定工程と、
ブロードキャストまたはマルチキャストを用いて、ネットワーク上のネットワーク機器から該ネットワーク機器の識別情報を含む応答を要求することで、目的のネットワーク機器の検出を行なう第１の検出工程と、
前記設定工程で設定された対象とすべきアドレスの範囲に対するユニキャストを用いて、ネットワーク上のネットワーク機器から該ネットワーク機器の識別情報を含む応答を要求することで、目的のネットワーク機器の検出を行なう第２の検出工程と、
前記第２の検出工程で前記対象とすべきアドレスの範囲の一部のアドレスに対してユニキャストによる要求を行い、その後に前記第１の検出工程でブロードキャストまたはマルチキャストによる要求を行なうことを、目的のネットワーク機器が検出できるまで繰り返す制御工程とを備え、
前記制御工程では、前記第２の検出工程で前記対象とすべきアドレスの範囲の一部のアドレスに対してユニキャストによる要求を行う際に、前回のユニキャストを行なったアドレスとは異なるアドレスに対してユニキャストによる要求を行なうことを特徴とする情報処理方法。
【請求項１３】
請求項１乃至１０の何れか１項に記載の手段としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
ネットワークに接続された機器を検出する情報処理装置、および方法などに関する。
【背景技術】
【０００２】
一般家庭にもローカル・エリア・ネットワーク（ＬＡＮ）が普及し、印刷装置のような機器を、ＬＡＮを介して複数のコンピュータで共用するようになって来た。家庭におけるＬＡＮは、ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）を用いるのが一般的である。ＴＣＰ／ＩＰでは、各機器をＩＰアドレスにより特定し、通信を行う。しかし、アドレスの割り当てにはネットワークに関する知識を必要とし、知識をもたない一般ユーザには難しいものであった。
【０００３】
そのため、一般家庭においては、ＬＡＮをインターネットに接続するルータがＤＨＣＰ（Ｄｙｎａｍｉｃ  Ｈｏｓｔ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）サーバ機能を持ち、この機能により接続機器にＩＰアドレスを自動的に割り当てるようにするのが一般的である。ＤＨＣＰサーバは動的にＩＰアドレスを割り当てるため、接続機器は起動のたびに必ずしも同じアドレスを割り当てられるわけではない。
【０００４】
ところで、ホスト機器であるコンピュータから、印刷装置を利用する場合には、コンピュータは印刷装置のＩＰアドレスを記憶し、そのＩＰアドレス宛てにデータを送信し通信を行う。このとき、印刷装置にコンピュータが記憶しているＩＰアドレスと異なるアドレスが割り当てられていると、コンピュータは印刷装置と通信するための宛先がわからず、通信を行なうことができなくなってしまう。
【０００５】
この問題を解決するためには、コンピュータが記憶している印刷装置のＩＰアドレス宛てに通信ができない場合に、不特定の相手にパケットを送信するブロードキャストを用いて所望の機器の検出を行なう方法がある。この方法では、まずコンピュータが予め利用する目的の機器のＩＰアドレスと機器固有の値（例えば、ＭＡＣアドレス）とを記憶しておく。そして、ＩＰアドレスの問合せをブロードキャストする。この問合せを受信した機器は、応答の中にＭＡＣアドレスを含めて応答を返す。応答を受信したコンピュータは、自身で記憶している固有値と応答に含まれる固有値を比較することで、目的の機器からの応答の有無を確認する方法である。また、機器からの応答にＩＰアドレスを含めることにより、目的の機器のＩＰアドレスを確認、更新することもできる。
【０００６】
さて、近年、セキュリティ意識の高まりに伴い、家庭用のコンピュータにおいてもファイアウォールソフトウェアが普及している。ファイアウォールはコンピュータのネットワーク通信を監視し、通信を制限することにより、外部からの不正アクセスなどを防止するものである。ここで、セキュリティを維持するためファイアウォールソフトウェアの設定により、不特定のホスト宛てに送られるブロードキャストによる通信は制限される場合がある。具体的には、例えば、コンピュータ上で動作するアプリケーションが送信したブロードキャストリクエストに対する応答が、ファイアウォールによりブロックされてアプリケーションに届かなくなる。このような状況では、ＤＨＣＰサーバにより以前と異なるアドレスを割り当てられた機器を、ブロードキャストを用いて検出することができない。
【０００７】
一方、ＵＮＩＸ（登録商標）系のオペレーティングシステム（ＯＳ）として、Ｌｉｎｕｘ（登録商標）の普及が進んでいる。Ｌｉｎｕｘが無償のソフトウェアであること、導入が容易になってきていることから、コンピュータに精通したユーザでなくてもＬｉｎｕｘ環境を使用する場合も多くなっている。さらにコンピュータにプリインストールされる場合も見受けられてきた。Ｌｉｎｕｘには多様な頒布形態（ディストリビューション）があり、代表的なものとして、Ｆｅｄｏｒａ（登録商標）、Ｕｂｕｎｔｕ（登録商標）、ｏｐｅｎＳＵＳＥ（登録商標）などが挙げられる。これらのディストリビューションを用いることにより様々な環境を簡単に構築することができる。多くのディストリビューションでは基本的にファイアウォールのソフトウェアが導入されており、アプリケーションが自由にブロードキャストを用いて通信することができない場合が多い。ここで、このファイアウォールの設定の変更は、セキュリティ上ユーザが望まないことが多い上に、設定変更すること自体、環境によって大きく設定方法が異なるため困難な場合が多い。
【０００８】
ここで、従来技術として特許文献１では、ブロードキャストによる通信が制限される環境下であってもネットワーク上の機器の検出をする方法が示されている。特許文献１では、機器の検出のためにブロードキャストとユニキャストとの両方を用いる。具体的には、ユニキャストを正常に行なえたらブロードキャストを試みて、その時点のブロードキャスト可否を判定し、可否判定の結果により検出の方法を選択または、その順序を切り換えている。ユニキャストは、宛先となるＩＰアドレスを指定して行なう一対一の通信である。ブロードキャストとは異なり、不特定多数との通信ではないため、ユニキャストによる通信はファイアウォールによる制限はされることが少ない。ここで、ユニキャストを用いてネットワーク上の機器検出を行なう場合は、ネットワークに存在しうるアドレス全てに対して各々ユニキャストで通信を行なっていくことになる。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００６−３４０２８６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
ユニキャストによってネットワーク上の機器を検出することは、多数のアドレスに対し一対一で試行していかなければならない。この処理は、各アドレスに対して、応答を待たなければいけない時間（タイムアウト）があるため、機器の検出に時間のかかる場合が多い。機器検出に時間がかかると、ユーザは検出が失敗している可能性が高いと判断して検出を中断してしまうこともある。これでは結果的に機器の検出できないことと同じである。
【００１１】
また、ファイアウォールソフトウェアは、特定のＯＳに標準で付属するのものや、サードパーティー製のものが、多種多様に存在し、他のアプリケーションからその設定を知る一般的な方法は存在しない。したがって、ファイアウォールによりブロードキャストによる通信が制限されている設定になっていても、アプリケーションはそれを知ることができない。つまり、ブロードキャストで送信したリクエストに対する応答を受信できなかった場合に、その原因を特定できない。ここで、ブロードキャストのリクエストに対する応答が受信できない場合の原因として、他にも目的の機器の電源が投入されていない等の理由がある。現状、アプリケーションはブロードキャストによる通信を行なおうとして失敗した、という結果のみ認識可能で、それがファイアウォールにブロックされたためなのか、その他の理由のためなのかを区別することができない。
【００１２】
目的の機器の検出に際しては、ファイアウォールの設定や機器の電源投入のタイミングなどを考慮した上で、可能な限り早期にその機器を検出できることが好ましい。そこで、本発明は、様々な環境条件においても機器の検出を行い、その検出にかかる時間の期待値を向上させることが可能な手法を目的とする。
【課題を解決するための手段】
【００１３】
上記課題を解決するために本発明の情報処理装置は、目的のネットワーク機器の検出確認用の識別情報を予め保持し、当該保持された検出確認用の識別情報とネットワーク上のネットワーク機器から取得した識別情報と比較することで、目的のネットワーク機器の検出を行なうものであって、ネットワーク上のネットワーク機器の検出の際に対象とすべきアドレスの範囲を設定する設定手段と、ブロードキャストまたはマルチキャストを用いて、ネットワーク上のネットワーク機器から該ネットワーク機器の識別情報を含む応答を要求することで、目的のネットワーク機器の検出を行なう第１の検出手段と、前記設定手段により設定された対象とすべきアドレスの範囲に対するユニキャストを用いて、ネットワーク上のネットワーク機器から該ネットワーク機器の識別情報を含む応答を要求することで、目的のネットワーク機器の検出を行なう第２の検出手段と、前記第２の検出手段により前記対象とすべきアドレスの範囲の全てのアドレスに対してユニキャストによる要求を行う前に、前記対象とすべきアドレスの範囲の一部のアドレスに対してユニキャストによる要求を行い、その後に前記第１の検出手段によりブロードキャストまたはマルチキャストによる要求を行なうことを、目的のネットワーク機器が検出できるまで繰り返す制御手段と、を備えることを特徴とする。
【発明の効果】
【００１４】
本発明によれば、様々な環境条件においても機器の検出を行い、その検出にかかる時間の期待値を向上させることが可能となる。
【図面の簡単な説明】
【００１５】
【図１】本発明におけるネットワークの構成の例を示した図である。
【図２】本発明におけるコンピュータのハードウェアの構成例を示した図である。
【図３】本発明におけるプリンタドライバを含めたソフトウェアの構成例を示した図である。
【図４】本発明における機器の検出処理のフローチャートである。
【図５】ネットワーク上の機器の検出タイミングを説明するための図である。
【図６】図５とは異なる検出方法を用いた場合の、ネットワーク上の機器の検出タイミングを説明するための図である。
【図７】ユニキャストによる機器の検出をマルチスレッドで行なう例を示した図である。
【図８】マルチスレッドで、あるスレッドが一定時間毎にブロードキャスト検出のみ、他方がユニキャスト検出のみを行なう例を示した図である。
【図９】マルチスレッドで、各スレッドがブロードキャスト検出とユニキャスト検出の双方を行なう方法の例を示した図である。
【発明を実施するための形態】
【００１６】
以下、本発明の実施例について図面を参照しながら詳細に説明する。
【００１７】
図１において、コンピュータ１０１、１０２、プリンタ１０３、１０４、ルータ１０５がネットワーク１０６に接続されている。各機器はＴＣＰ／ＩＰプロトコルにしたがって通信を行なっているものとする。また、ルータ１０５はＤＨＣＰサーバ機能を備え、コンピュータ１０１、１０２、プリンタ１０３、１０４はルータ１０５からＩＰアドレスを割り当てられる。ＩＰアドレスは、ルータ１０５が１９２．１６８．０．１とし、コンピュータ１０１、１０２、プリンタ１０３、１０４は電源が投入されると直ちにそれぞれ１９２．１６８．０．２〜１９２．１６８．０．５が割り当てられるものとする。
【００１８】
情報処理装置としてのコンピュータ１０１、１０２は、図２に示すような構成を持つ。ＣＰＵ２０４、シリアルポートやＵＳＢポートなど、周辺機器を接続するための接続ポート２０５、ネットワークに接続するためのＬＡＮポート２０６、メモリ２０７、ハードディスクなどの補助記憶装置２０８、ビデオカードなどの画面に出力するための画面出力装置２０９を備えている。出力ポートのキーボードやマウス、スキャナなどの入力装置２０２、ＵＳＢメモリや外付けハードディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭなどの外部記憶装置２０３がそれぞれＳＡＴＡポートやＵＳＢポートなどの接続ポート２０５に接続されている。モニタ２１０は、画面出力装置２０９の出力端子に接続されている。また、ＬＡＮポート２０６はネットワーク１０６に接続されている。プリンタ１０３、１０４もコンピュータ１０１と同じネットワーク１０６に接続されている。
【００１９】
コンピュータ１０１は、プリンタを検出し印刷を行なうためのソフトウェア（ここでは、プリンタドライバ）が導入されているものとする。図３はコンピュータ１０１のソフトウェア構成を示したものである。アプリケーション３００、プリンタドライバ３０１、ファイアウォール３０７を備える。コンピュータ１０２に関しても、各種アプリケーションやファイアウォールなどの構成を備えているものとする。
【００２０】
プリンタドライバ３０１は、画像データ形式であるＲＧＢ成分を印刷に適したＣＭＹＫ成分へと変換する画像変換部３０２、ユーザの指定する印刷設定に応じて誤差拡散などの画像処理を施して印刷に適した形式に処理する画像処理部３０３を備える。さらに、プリンタが解釈できるコマンドを生成する印刷コマンド生成部３０４、プリンタの検出を行い、印刷コマンドを送受信するプリンタ通信部３０７、ユーザにプリンタの状況を通知するステータス表示部３０５を備える。
【００２１】
ここで、コンピュータ１０１では、プリンタドライバ３０１がブロードキャストで通信できるようにファイアウォール３０７の設定が行なわれているものとする。コンピュータ１０２では、ファイアウォール３０７の設定により、ブロードキャストでの通信が制限されているものとする。
【００２２】
また、コンピュータ１０１、１０２は、それぞれプリンタ１０３の検出確認用の固有の識別情報をユーザがプリンタ１０３を設置した際に入力しておくなどして、あらかじめ保持しているものとする。本発明においては、ネットワーク機器の検出確認用の識別情報としてＭＡＣアドレスを用いるが、該機器のシリアル番号やネットワークサービス名などを用いてもよい。
【００２３】
図５は、ブロードキャストとユニキャストの両方を用いたネットワーク上の機器の検出の一例に関して、その検出タイミングを説明するための図である。ここでは、ブロードキャストを１度行なった後に、全てのＩＰアドレス（１９２．１６８．０．１〜１９２．１６８．０．２５４）に対してユニキャストの検出を行っていくといった単純な検出方法を用いている。さらに、本検出方法ではユニキャスト後、その応答を待つために所定時間空けて、再びブロードキャストを行っている。ここで、検出対象とする目的のプリンタのアドレスは、１９２．１６８．０．４とする。
【００２４】
図５の最上段にある２行は、システムの環境を示す。上の行（ブロードキャスト）では、ファイアウォールの設定によりブロードキャストの通信が制限されている（禁止）か、制限されていない（許可）ことを示す。下の行（電源）では、プリンタドライバ３０１が機器の検出を行なう前の、ネットワーク機器の電源の状態（ＯＮ／ＯＦＦ）を示している。
【００２５】
条件１は、ファイアウォールの設定はブロードキャストによる通信をブロックしないように設定されており、さらに最初はプリンタの電源が投入されていないが、機器の検出開始後に電源が投入されたケースを示す。このケースは、ユーザが印刷を実行する際に、プリンタドライバがプリンタの検出を開始してから、プリンタの電源が投入されていないことに気づき、プリンタの電源が投入されるといった状況を想定している。条件１においては、ユーザの電源投入のタイミングが遅いと（アドレス１９２．１６８．０．４へのユニキャストより後）、図示されたように、２度目のブロードキャストが行われるまでプリンタの検出ができない。
【００２６】
条件２は、ファイアウォールの設定はブロードキャストによる通信をブロックしないように設定されており、さらに最初からプリンタの電源が投入されているケースを示す。この場合は、最初のブロードキャストにより目的のプリンタが検出できる。
【００２７】
条件３は、ファイアウォールの設定はブロードキャストによる通信をブロックするように設定されており、さらに最初からプリンタの電源が投入されているケースを示す。この場合は、最初のブロードキャスト後のユニキャストにより目的のプリンタが検出できる。
【００２８】
条件４は、ファイアウォールの設定はブロードキャストによる通信をブロックするように設定されており、さらに最初からプリンタの電源が投入されてないケースを示す。条件４においては、ユーザの電源投入のタイミングが遅いと（アドレス１９２．１６８．０．４へのユニキャストより後）、図示されたように、２度目のブロードキャスト後のユニキャストで、プリンタが検出される。
【００２９】
図６は、第１の検出の処理としてのブロードキャストと第２の検出の処理としてのユニキャストの両方を用いたネットワーク上の機器の検出に関して、本発明において特有な検出方法を用いており、その検出タイミングを説明するための図である。図示される条件１〜４は、図５と同様である。
【００３０】
ここでは、図６に示す条件１に相当する環境で、プリンタ１０３で印刷を行なう例を挙げて、具体的なコンピュータにおける処理を説明する。ここでは、ネットワーク上に設置された機器として、コンピュータ１０１、プリンタ１０３、１０４、ルータ１０５があるものとする。
【００３１】
まず、ユーザが任意のアプリケーション３００で印刷を実行すると、プリンタドライバ３０１は、アプリケーション３００からしかるべき画像データを受け取る。その後、所定の処理を行い、プリンタ通信部３０６がネットワーク１０６上のプリンタの検出処理を開始する。
【００３２】
図４を用いて、プリンタ通信部３０６における検出に関する処理を具体的に説明する。図４で示すフローチャートは、プログラムを所定の記憶領域に読み出し、ＣＰＵ２０４が実行することで実現される処理ステップを示している。
【００３３】
Ｓ４０１では、自分のコンピュータ１０１のネットワーク情報を取得し、ネットワーク１０６上で利用され得るネットワークアドレスを計算する。また、検出試行アドレスやアドレス間隔を初期化する。検出試行アドレスは、ユニキャストによるプリンタ検出の際に試行する対象のアドレスのことである。また、アドレス間隔は、ブロードキャストを行なうタイミングを決定する変数で、この変数分のアドレスをユニキャストにおいて試行したら、もう１度ブロードキャストによる検出を行なうものとする。
【００３４】
ここでは、ネットワーク情報として、ネットワークアドレスが１９２．１６８．０．０、サブネットマスクが２５５．２５５．２５５．０が得られたとする。このネットワークの範囲は、サブネットマスクのビットの立っていない範囲となるので、１９２．１６８．０．０〜１９２．１６８．０．２５５となる。はじめのアドレス１９２．１６８．０．０はネットワークアドレスであり、終わりのアドレス１９２．１６８．０．２５５はブロードキャストアドレスとなる。したがって、実際に機器に割り当てられるアドレスは、１９２．１６８．０．１〜１９２．１６８．０．２５４となり、検出試行アドレスには初期値として１９２．１６８．０．１が設定される。また、本実施例では、アドレス間隔としては規定値（＝５０）が設定される。なお、この数は一例であり、ネットワークのアドレス数に応じて、適切に変化させるなどしてもかまわない。
【００３５】
Ｓ４０２では、ブロードキャストアドレス（１９２．１６８．０．２５５、または２５５．２５５．２５５．２５５でもよい）に対して、プリンタコマンドとして用意してあるＭＡＣアドレスとＩＰアドレスを問い合わせるコマンド（要求コマンド）を送信する。これにより、ネットワーク１０６上の機器からＭＡＣアドレスとＩＰアドレスを問い合わせる。ここでは、予め不要なアドレスを指定していないマルチキャストなどをブロードキャストに代わって用いてもよいとする。
【００３６】
Ｓ４０３では、要求コマンドに対応してネットワーク１０６に接続された機器から応答が返される。ここでは応答があることだけを確認する。１つでも応答があればＳ４１２に進み、なければＳ４０４に進む。
【００３７】
なお、上述した条件１のような環境では、コンピュータ１０１のプリンタドライバ３０１がブロードキャストでの通信が行なえるようにファイアウォール３０７が設定されているが、プリンタドライバ３０１自身はこのファイアウォール３０７の設定を知り得ない。そこで、プリンタドライバ３０１はブロードキャストアドレスを用いた機器検出において、ネットワーク３１０に接続されたプリンタなどからの応答を受け取ることで、ブロードキャストでの通信が可能かどうかを判断できる。
【００３８】
Ｓ４０３において、条件１のような環境（ここでは、プリンタ１０３、１０４ともに電源が投入されていない）では、ネットワーク機器からの応答はなく、Ｓ４０５へ進む。ネットワーク機器からの応答が無い原因としては、いくつか挙げられるが、ここ時点ではプリンタドライバ３０１は、その原因を特定することが出来ない。応答が無い原因としては、プリンタ１０３、１０４の電源が投入されていない、ネットワーク１０６に接続されていない、コンピュータ１０１においてブロードキャストによる通信がファイアウォール３０７によりブロックされているか、などが考えられる。
【００３９】
その後、Ｓ４０４〜Ｓ４１１においてユニキャスト検索によるプリンタ検出を試行することになる。
【００４０】
Ｓ４０４では、ユニキャストによる検出アドレス数をカウントするアドレスカウントを初期化（＝１）する。次に、Ｓ４０５において、検出試行アドレスが有効な範囲かどうかを確認する。ここでは、有効な範囲は、１９２．１６８．０．１〜１９２．１６８．０．２５４のアドレスである。有効な範囲内であるならＳ４０７に進み、有効な範囲外であるならＳ４０６に進む。Ｓ４０６に進む場合は、全てのアドレスに対して、ユニキャストによる試行を行っても目的のプリンタが発見できなかった場合であるので、検出失敗と判断されることになる。この際には、ユーザに対してモニタ２１０などで検出失敗を通知し、処理を終了する。
【００４１】
一方、Ｓ４０６では、検出試行アドレスに対してユニキャストで要求コマンドを送り、ＩＰアドレスとＭＡＣアドレスの問い合わせを行なう。つまり、まずアドレス１９２．１６８．０．１に対して問い合わせを行なうことになる。Ｓ４０８では、要求コマンドに対して応答があるかを確認する。応答があればＳ４０９に進み、無ければＳ４１０に進む。例えば、アドレス１９２．１６８．０．１に対して要求コマンドを送った場合、ルータ１０５のアドレスであり、要求コマンドに対応する応答がない。
【００４２】
Ｓ４０９では、応答元のＭＡＣアドレスが目的のプリンタのアドレスと一致するかを判断する。一致すればＳ４１５に進み、一致しなければＳ４１０に進む。
【００４３】
Ｓ４１０では、ユニキャストによりチェックしたアドレス数（アドレスカウント）を確認し、アドレス間隔の５０個のアドレスを確認したかを判断する。もし、アドレス間隔分のユニキャストを行なっている場合（ＹＥＳ）は、いったんブロードキャストを行なうためＳ４０２に戻る。アドレス間隔分のユニキャストを行なっていない場合は、Ｓ４１１に進む。Ｓ４１１では、検出試行アドレスを１つ進め、アドレスカウントを１だけ増加させる。上述した条件１のような環境において、最初のユニキャストを終えた段階では、本ステップにおいて、検出試行アドレスは１９２．１６８．０．２となり、アドレスカウントは２になる。
【００４４】
その後、Ｓ４０５〜Ｓ４１１までの処理をアドレス間隔分繰り返し、ユニキャストによるプリンタ検出を試みる。前述の条件１の例では、１９２．１６８．０．４のユニキャストによる検出を終えた後に、プリンタ１０３の電源は投入される。よって、目的のプリンタからの応答がないまま、検出試行アドレスは１９２．１６８．０．５０まで進む。そして、Ｓ４１０で、アドレスカウントがアドレス間隔を超えるので、Ｓ４０２へ戻り、ブロードキャストを行なうことになる。
【００４５】
前述の条件１の例では、Ｓ４０２でブロードキャストによる問合せを行い、Ｓ４０３で応答の有無を判断する。今度は、プリンタ１０３の電源が投入されているので、プリンタ１０３からの応答を受け取るので、Ｓ４１２に進む。
【００４６】
Ｓ４１２では、応答を返したプリンタが目的のプリンタ１０３かどうかを確認する。応答されたデータに含まれるＭＡＣアドレスが、コンピュータ１０１で予め保持されている目的のプリンタのＭＡＣアドレスと一致するかを判断する。目的のプリンタが応答している場合は、Ｓ４１５に進み、検出成功と判断し、処理を終了する。前述の条件１の例では、プリンタ１０３が応答することになるので検出成功となる。プリンタ１０３の検出が成功したときに、その応答データに含まれるＩＰアドレスを確認することにより、プリンタ１０３のＩＰアドレスが１９２．１６８．０．４であることが得られる。この後の通信では、得られたＩＰアドレスを使用して通信を行なうことになる。具体的には、プリンタ通信部は印刷データをプリンタ１０３に送信していき、プリンタ１０３は印刷データを受け取り、印刷データに基づいて印刷を開始することになる。
【００４７】
一方、Ｓ４１２で、目的のプリンタからの応答を受け取っていない場合は、例えばプリンタ１０３以外の機器から応答を受け取った場合はＳ４１３に進む。Ｓ４１３では、ユーザによるプリンタの探索のキャンセル指示があるか否かを判断する。ここでは、目的のプリンタの検出に時間がかかり過ぎていることによるユーザのキャンセル指示などを想定している。キャンセル指示があった場合は、Ｓ４０６に進み、検出失敗となり、そのまま処理を終了する。キャンセル指示が無かった場合は、Ｓ４０２に進み、処理を繰り返すことになる。
【００４８】
Ｓ４１３では、ユーザからのキャンセル指示において、プリンタ機器の未検出のまま、処理を終了するといった例外処理を説明した。この際に考えられる目的のプリンタの検出に時間がかかった原因としては、ブロードキャストによる応答をプリンタドライバが受け取っているので、ファイアウォールの設定以外、例えば目的のプリンタに電源が投入されていないことなど、が考えられる。よって、Ｓ４１３からＳ４０６に進み、検出失敗を判断した場合は、ユーザに対して「プリンタの電源が投入されていない可能性があります。確認後、プリンタを再探索しますか？」といった、注意を促すような表示をモニタ２１０で行ってもよい。
【００４９】
以上までで、図６の条件１の環境を例として、本発明に特有な機器の検出手法に関して具体的に説明を行なった。以降では、プリンタの検出タイミングに関して、図６の条件１以外についても詳細に説明する。
【００５０】
まず、図６の条件２について説明する。この環境においては、１回目のブロードキャスト（Ｓ４０２）により目的のプリンタであるプリンタ１０３が検出できる。
【００５１】
次に、図６の条件３について説明する。この環境においては、まず、コンピュータ１０１において、ファイアウォールによりプリンタドライバのブロードキャストによる通信がブロックされる（Ｓ４０３−ＮＯ）。その後、ユニキャストによる機器の検出が行なわれ、検出試行アドレス１９２．１６８．０．４となった時に、目的のプリンタが検出されることになる（Ｓ４０９−ＹＥＳ）。
【００５２】
さらに、図６の条件４について説明する。まず、コンピュータ１０１において、ファイアウォールによりプリンタドライバのブロードキャストによる通信がブロックされる（Ｓ４０３−ＮＯ）。その後、ユニキャストによる機器の検出が１９２．１６８．０．１〜１９２．１６８．０．２５４まで全て試され、その間、前述のアドレス間隔に応じてブロードキャストによる検索も試されるが、目的のプリンタが検出されない。ここでは、検出失敗と判断する（Ｓ４０６）。このような場合は、プリンタドライバ３０１の検出結果を待っている処理部（たとえば、ステータス表示部３０５）に、検出が失敗したことをいったん通知する。
【００５３】
ステータス表示部３０５は、ユーザに対して、目的のプリンタが検出できなかった旨と、「プリンタの電源が投入されていない可能性があります。確認後、プリンタを再探索しますか？」といった、注意を促すような表示をモニタ２１０で行ってもよい。これは、全てのアドレスに対してユニキャストを行っても、目的のプリンタを検出できなかったので、プリンタの電源が投入されていないなど、が原因として考えられるからである。また、この表示としては、ネットワーク設定などが原因の場合があるので、その旨を伝えて機器の検出のリトライを促すようにしてもよい。ここで、再びユーザからの印刷処理が指示される、または機器の検出のリトライが指示されるなどして、Ｓ４０１から検出処理を開始される。すると、検出試行アドレス１９２．１６８．０．４となった時に、目的のプリンタの検出が成功する。
【００５４】
上記に示すように、本発明によれば、プリンタドライバのブロードキャストによる通信が可能なように設定されていれば、プリンタの電源があらかじめ投入されていなくても、比較的高速に目的のプリンタの検出が可能である（図６の条件１や条件２）。特に図５の検出方法と比較して、条件１では検出のタイミングがはやい事がわかる。特に家庭用プリンタは、常時電源が入れられているものではなく、印刷開始時に電源が投入されていないこともある。よって、図６のような機器の検出方法は、このような環境では特に有効な手法といえる。状況での検出に特に高速に検出が出来るようになる。
【００５５】
また、一方で、ファイアウォールによりプリンタドライバのブロードキャストによる通信が制限されている際に、図５の検出方法と比較しても、あまり変わらないタイミングで目的のプリンタの検出が可能である（条件３や条件４）。
【００５６】
（応用例１）
本発明においては、まずブロードキャストにより検出を行い、見つからない場合にＩＰアドレスを５０個だけユニキャストにより検出を行なう、ということを繰り返す形態である。上述では、ユニキャストで検出を行なうアドレス間隔を固定している。しかしながら、このアドレス間隔は、検出タイミングを左右するものであり、環境に応じて変更するのが望ましい。また、このアドレス間隔は検出処理中に変更してもよい。例えば、検出処理の初期ではブロードキャストを行なう間隔を短くし、処理が進むにつれ、アドレス間隔を次第に長くして、検出開始時の検出速度の改善を図ってもよい。
【００５７】
また、本実施例においてはユニキャストする対象のアドレスを毎回異ならせている。しかしながら、一部または全てのアドレスを敢えて重複させてユニキャストによる目的のプリンタの探索を行ってもよい。これにより、例えば、電源投入のタイミングなどを考慮した、早いタイミングによる目的のプリンタの検出が行なえることが考えられる。
【００５８】
また、ブロードキャストを行なうタイミングはアドレスの個数ではなく、アドレスの範囲により決定してもよい。ユニキャストによる検出を行い、ある特定のアドレスの範囲を確認し終えたことを検知して、ブロードキャストによる検出を行なってもかまわない。例えば、検出対象となっているアドレスの範囲の終わりのアドレスを確認することで判定をしてもよい。すなわち、Ｓ４１０での判定の際に検出試行アドレスが１９２．１６８．０．５０、１９２．１６８．０．１００、１９２．１６８．０．１５０、及び１９２．１６８．０．２００のいずれかであれば、ブロードキャストを行なうようにしてもよい。
【００５９】
さらに、ブロードキャストを行なうタイミングはチェックしたアドレスの個数ではなく、時間により決定してもよい。ユニキャストによる検出を行い、一定時間経過するごとにブロードキャストによる検出を行なってもかまわない。例えば、Ｓ４１０での判定を、前回のブロードキャストによる検出から５秒以上経過したかを判定するようにすれば、実現可能である。
【００６０】
（応用例２）
検出に成功した際に、その結果（目的のプリンタのＩＰアドレス）をキャッシュなどに保存しておき、次回検出を行なう際に、まずそのキャッシュしたＩＰアドレスに対してＭＡＣアドレスの問合せを行ってもよい。キャッシュの情報で検出が出来なかった場合は、本発明に示すような処理を行なえばよい。また、キャッシュの情報を基に検出を行なうタイミングとして、例えば、ブロードキャストによる検出の前後で、検出試行アドレスとして試行を行なってもかまわない。
【００６１】
（応用例３）
検出に成功した際に、目的のプリンタがブロードキャスト、ユニキャストのどちらの検出で行なわれたかを記憶しておくことも考えられる。前回、ユニキャストで目的のプリンタを検出したならば、次回検出の際にこの情報を基に、自動的に検出方法に関して、ブロードキャストとユニキャストの検出順序を入れ替えてもよい。
【００６２】
さらに、本発明による検出が成功した際に、ユニキャストにより検出された場合は、さらにブロードキャストにより検出を試みて、目的のプリンタからの応答があるか否かを確認するとしてもよい。これは、それまでに目的のプリンタが検出できなかった原因が、ファイアウォールによりブロードキャストによる通信が制限されているからなのかを判断するためである。ここで、ブロードキャストに対応する応答があった場合は、それまでに目的のプリンタが検出できなかった原因がファイアウォールによりブロードキャストによる通信が制限されているからではないことが把握できる。
【００６３】
例えば、ファイアウォールによりブロードキャストによる通信が制限されているからではないことが把握された場合は、次回の検出処理においては、ブロードキャストを所定時間おきに行なうことで目的のプリンタを検出するようにすることが可能となる。また、ここでは、ユーザに「プリンタの電源が投入されていることを確認してください」といった、通知を行なう表示を行ってもよい。
【００６４】
また、ユニキャストによりプリンタが検出された後に、さらにブロードキャストにより検出を試みて、目的のプリンタからの応答が無かった場合は、次回の検出処理において、ユニキャストによる検出をブロードキャストよりも先に行なってもよい。これにより、目的のプリンタの検出に関して、効率が向上することが考えられる。また、ユーザに対してファイアウォールの設定変更を促すようなメッセージを提示したりしてもよい。
【００６５】
このように、ユニキャストによる目的のプリンタの検出後のブロードキャストによるプリンタの検出の成否により、ユーザに通知する内容を異ならせ、次回のプリンタの検出をより効率良く行なえるような処理をユーザに促すことができる。当然、上述したように、通知内容だけでなく、プリンタドライバによるプリンタの探索方法も切り換えるように制御させてもよい。
【００６６】
（応用例４）
前述の実施例は、単一の制御系（スレッド）で処理を進める例であるが、検出にかかる時間をさらに縮めたいのであれば、複数の制御系（マルチスレッド）で同時に検索を実行してもかまわない。
【００６７】
例えば、図７に示すように、ブロードキャストによる検出を行なった後のユニキャストによる検出は、複数のスレッドを設けて行なってもよい。図７では２つのスレッド１，２を設けて検出を行なっている。
【００６８】
また、図８に示すように、ブロードキャストによる検出タイミングを時間により決定するならば、スレッド１でブロードキャストによる検出を一定間隔（ここでは５秒）で行いながら、スレッド２でユニキャストによる検出を並行して行なってもかまわない。なお、ひとつのスレッドでブロードキャストによる検出と、ユニキャストによる検出を併用してもよい。
【００６９】
図９のように、ブロードキャストとユニキャストを組み合わせた機器の検出処理を、複数のスレッドを設けて実施してもかまわない。
【００７０】
また、マルチスレッドで実施する場合は、ネットワークの負荷などを考慮して、ブロードキャストによる検出を行なう際は、ユニキャストによる検出をいったん中断し、ユニキャストとブロードキャストの通信を同時に行なわないようにしてもよい。
【００７１】
さらに、ユニキャストによる検出の際に、アドレスの順序を１９２．１６８．０．１から順に進める例を示したが、順序はこれに限らない。例えば、単純に逆順でも良いし、コンピュータのアドレス付近を優先に検出を行なうように良いし、前回の検出結果から得られるアドレスから開始してもよい。
【００７２】
（他の実施例）
先述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵまたはＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することとなり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００７３】
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤなどを用いることができる。
【００７４】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施例の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳなどが実際の処理の一部または全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれることは言うまでもない。
【００７５】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図１】
2010238020.tif 000003
【図２】
2010238020.tif 000004
【図３】
2010238020.tif 000005
【図４】
2010238020.tif 000006
【図５】
2010238020.tif 000007
【図６】
2010238020.tif 000008
【図７】
2010238020.tif 000009
【図８】
2010238020.tif 000010
【図９】
2010238020.tif 000011