(57)【特許請求の範囲】
【請求項１】
第１のネットワークインターフェースと第２のネットワークインターフェースを備える通信装置であって、
前記通信装置で動作するアプリケーションからの要求に応じて、前記第１のネットワークインターフェースと前記第２のネットワークインターフェースのそれぞれを介して探索パケットを送信する送信手段と、
前記探索パケットに対する応答パケットを受信する受信手段と、
前記第１のネットワークインターフェースと前記第２のネットワークインターフェースのそれぞれを介して前記受信手段が同じ送信元アドレスの応答パケットを受信した場合に、前記第１のネットワークインターフェースを介して受信した応答パケットと、前記第２のネットワークインターフェースを介して受信した応答パケットのいずれか一方を前記アプリケーションに転送し、もう一方の応答パケットは前記アプリケーションに転送しないよう制御する制御手段とを備えることを特徴とする通信装置。
【請求項２】
前記第１のネットワークインターフェースを介して前記受信手段が第１の応答パケットを受信し、その後に前記第２のネットワークインターフェースを介して前記第１の応答パケットと同じ送信元アドレスの第２の応答パケットを前記受信手段が受信した場合に、前記制御手段は、前記第１の応答パケットを前記アプリケーションに転送し、前記第２の応答パケットを前記アプリケーションに転送しないよう制御することを特徴とする請求項１に記載の通信装置。
【請求項３】
前記制御手段は、前記アプリケーションに転送しない応答パケットを破棄することを特徴とする請求項１又は２に記載の通信装置。
【請求項４】
前記応答パケットの送信元が自装置であるか否かを判定する判定手段を更に備え、
前記制御手段は、前記判定手段によって前記応答パケットの送信元が自装置であると判定された場合に、前記応答パケットを前記アプリケーションに転送しないことを特徴とする請求項１乃至３のいずれか１項に記載の通信装置。
【請求項５】
前記制御手段は、前記判定手段によって前記応答パケットの送信元が自装置であると判定された場合に、前記応答パケットを破棄することを特徴とする請求項４に記載の通信装置。
【請求項６】
第１のネットワークインターフェースと第２のネットワークインターフェースを備える通信装置であって、
探索パケットの送信要求に応じて、前記第１のネットワークインターフェースと前記第２のネットワークインターフェースのそれぞれを介して探索パケットを送信する送信手段と、
前記探索パケットに対する応答パケットを受信する受信手段と、
前記第１のネットワークインターフェースと前記第２のネットワークインターフェースのそれぞれを介して前記受信手段が同じ送信元アドレスの応答パケットを受信した場合に、前記第１のネットワークインターフェースを介して受信した応答パケットと、前記第２のネットワークインターフェースを介して受信した応答パケットのいずれか一方を破棄する制御手段とを備えることを特徴とする通信装置。
【請求項７】
前記第１のネットワークインターフェースを介して前記受信手段が第１の応答パケットを受信し、その後に前記第２のネットワークインターフェースを介して前記第１の応答パケットと同じ送信元アドレスの第２の応答パケットを前記受信手段が受信した場合に、前記制御手段は、前記第２の応答パケットを破棄することを特徴とする請求項６に記載の通信装置。
【請求項８】
前記制御手段は、破棄しない応答パケットを前記送信要求の要求元に転送することを特徴とする請求項６又は７に記載の通信装置。
【請求項９】
前記応答パケットの送信元が自装置であるか否かを判定する判定手段を更に備え、
前記制御手段は、前記判定手段によって前記応答パケットの送信元が自装置であると判定された場合に、前記応答パケットを破棄することを特徴とする請求項６乃至８のいずれか１項に記載の通信装置。
【請求項１０】
第１のネットワークインターフェースと第２のネットワークインターフェースを備える通信装置であって、
探索パケットの送信要求に応じて、前記第１のネットワークインターフェースと前記第２のネットワークインターフェースのそれぞれを介して探索パケットを送信する送信手段と、
前記探索パケットに対する応答パケットを受信する受信手段と、
前記第１のネットワークインターフェースを介して前記受信手段が第１の応答パケットを受信し、かつ前記第２のネットワークインターフェースを介して前記第１の応答パケットと同じ送信元アドレスの第２の応答パケットを前記受信手段が受信した場合に、前記第１の応答パケットに関する情報と前記第２の応答パケットに関する情報のいずれか一方を探索結果として表示するように制御し、もう一方は探索結果として表示しないように制御する制御手段とを備えることを特徴とする通信装置。
【請求項１１】
前記第１のネットワークインターフェースを介して前記受信手段が前記第１の応答パケットを受信し、その後に前記第２のネットワークインターフェースを介して前記受信手段が前記第２の応答パケットを受信した場合に、前記制御手段は、前記第１の応答パケットに関する情報を探索結果として表示するように制御し、前記第２の応答パケットに関する情報は探索結果として表示しないように制御することを特徴とする請求項１０に記載の通信装置。
【請求項１２】
第１のネットワークインターフェースと第２のネットワークインターフェースを備える通信装置の制御方法であって、
前記通信装置で動作するアプリケーションからの要求に応じて、前記第１のネットワークインターフェースと前記第２のネットワークインターフェースのそれぞれを介して探索パケットを送信する送信工程と、
前記探索パケットに対する応答パケットを受信する受信工程と、
前記第１のネットワークインターフェースと前記第２のネットワークインターフェースのそれぞれを介して前記受信工程で同じ送信元アドレスの応答パケットを受信した場合に、前記第１のネットワークインターフェースを介して受信した応答パケットと、前記第２のネットワークインターフェースを介して受信した応答パケットのいずれか一方を前記アプリケーションに転送し、もう一方の応答パケットは前記アプリケーションに転送しないよう制御する制御工程とを備えることを特徴とする通信装置の制御方法。
【請求項１３】
前記第１のネットワークインターフェースを介して前記受信工程で第１の応答パケットを受信し、その後に前記第２のネットワークインターフェースを介して前記第１の応答パケットと同じ送信元アドレスの第２の応答パケットを前記受信工程で受信した場合に、前記制御工程は、前記第１の応答パケットを前記アプリケーションに転送し、前記第２の応答パケットを前記アプリケーションに転送しないよう制御することを特徴とする請求項１２に記載の通信装置の制御方法。
【請求項１４】
前記制御工程は、前記アプリケーションに転送しない応答パケットを破棄することを特徴とする請求項１２又は１３に記載の通信装置の制御方法。
【請求項１５】
前記応答パケットの送信元が自装置であるか否かを判定する判定工程を更に備え、
前記制御工程は、前記判定工程によって前記応答パケットの送信元が自装置であると判定された場合に、前記応答パケットを前記アプリケーションに転送しないことを特徴とする請求項１２乃至１４のいずれか１項に記載の通信装置の制御方法。
【請求項１６】
前記制御工程は、前記判定工程によって前記応答パケットの送信元が自装置であると判定された場合に、前記応答パケットを破棄することを特徴とする請求項１５に記載の通信装置の制御方法。
【請求項１７】
第１のネットワークインターフェースと第２のネットワークインターフェースを備える通信装置の制御方法であって、
探索パケットの送信要求に応じて、前記第１のネットワークインターフェースと前記第２のネットワークインターフェースのそれぞれを介して探索パケットを送信する送信工程と、
前記探索パケットに対する応答パケットを受信する受信工程と、
前記第１のネットワークインターフェースと前記第２のネットワークインターフェースのそれぞれを介して前記受信工程で同じ送信元アドレスの応答パケットを受信した場合に、前記第１のネットワークインターフェースを介して受信した応答パケットと、前記第２のネットワークインターフェースを介して受信した応答パケットのいずれか一方を破棄する制御工程とを備えることを特徴とする通信装置の制御方法。
【請求項１８】
前記第１のネットワークインターフェースを介して前記受信工程で第１の応答パケットを受信し、その後に前記第２のネットワークインターフェースを介して前記第１の応答パケットと同じ送信元アドレスの第２の応答パケットを前記受信工程で受信した場合に、前記制御工程は、前記第２の応答パケットを破棄することを特徴とする請求項１７に記載の通信装置の制御方法。
【請求項１９】
前記制御工程は、破棄しない応答パケットを前記送信要求の要求元に転送することを特徴とする請求項１７又は１８に記載の通信装置の制御方法。
【請求項２０】
前記応答パケットの送信元が自装置であるか否かを判定する判定工程を更に備え、
前記制御工程は、前記判定工程によって前記応答パケットの送信元が自装置であると判定された場合に、前記応答パケットを破棄することを特徴とする請求項１７乃至１９のいずれか１項に記載の通信装置の制御方法。
【請求項２１】
第１のネットワークインターフェースと第２のネットワークインターフェースを備える通信装置の制御方法であって、
探索パケットの送信要求に応じて、前記第１のネットワークインターフェースと前記第２のネットワークインターフェースのそれぞれを介して探索パケットを送信する送信工程と、
前記探索パケットに対する応答パケットを受信する受信工程と、
前記第１のネットワークインターフェースを介して前記受信工程で第１の応答パケットを受信し、かつ前記第２のネットワークインターフェースを介して前記第１の応答パケットと同じ送信元アドレスの第２の応答パケットを前記受信工程で受信した場合に、前記第１の応答パケットに関する情報と前記第２の応答パケットに関する情報のいずれか一方を探索結果として表示するように制御し、もう一方は探索結果として表示しないように制御する制御工程とを備えることを特徴とする通信装置の制御方法。
【請求項２２】
前記第１のネットワークインターフェースを介して前記受信工程で前記第１の応答パケットを受信し、その後に前記第２のネットワークインターフェースを介して前記受信工程で前記第２の応答パケットを受信した場合に、前記制御工程は、前記第１の応答パケットに関する情報を探索結果として表示するように制御し、前記第２の応答パケットに関する情報は探索結果として表示しないように制御することを特徴とする請求項２１に記載の通信装置の制御方法。
【請求項２３】
請求項１２乃至２２のいずれか１項に記載の通信装置の制御方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置及び通信装置の制御方法並びにプログラムに関し、特に、複数のネットワークインターフェースを有するデバイス上で、ネットワーク上に存在する他のデバイスを探索する技術に関する。
【背景技術】
【０００２】
近年、画像形成装置等のデバイス同士が互いに連携してサービスを提供するために、デバイスがネットワーク上の他のデバイスを探索する処理が行われている。その場合、マルチキャストパケットやブロードキャストパケットを利用した手法が一般的に利用されている（例えば、特許文献１参照）。
【０００３】
マルチキャストパケットは、ネットワーク上に存在する複数のデバイスに同一のデータを送信する際に利用されるＩＰ（Internet Protocol）パケットである。マルチキャストパケットの特徴の一つとして、パケット内にＴＴＬ（TimeToLive）値が存在する点が挙げられる。ＴＴＬ値は、ＩＰパケットの生存期間を表しており、ルータを通過するたびに１減少する。つまり、マルチキャストパケットの送信元でＴＴＬ値を１以上に設定することによって、ルータを超えた広い範囲のネットワーク（サブネット）に同一のマルチキャストパケットを送信することが可能となる。
【０００４】
一方、ブロードキャストパケットは、ネットワーク上に存在する不特定多数のデバイスに同一のデータを送信する際に利用されるＩＰパケットである。ブロードキャストパケットは、ルータを超えることは出来ず、ルータが形成するネットワーク（サブネット）上へのみ送信することが可能となる。これに対して、ネットワーク上に存在する単一のデバイスを特定し、そのデバイスのＩＰアドレスに対して送信するパケットは、ユニキャストパケットと呼ばれている。
【０００５】
また、複数のネットワークインターフェースを持つマルチホーム画像形成装置への要望が高まっており、その実現が予定されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００−１８１８４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来、複数のネットワークインターフェース（Ｉ／Ｆ）を持つマルチホームデバイスでは、ネットワーク上の他のデバイスを探索する際に、各ネットワークＩ／Ｆからマルチキャストパケット又はブロードキャストパケットを送出する。この場合、複数のネットワークＩ／Ｆが同じサブネットに属するデバイスでは、そのサブネットに存在するデバイスから重複してデバイス探索応答を受け取るという問題がある。
【０００８】
また、複数のネットワークＩ／Ｆが異なるサブネットに接続するデバイスでも、ＴＴＬ値が１以上に設定されたマルチキャストパケットによる探索を実施すると、サブネットを超えた探索が可能となるため、同一の問題が発生する。
【０００９】
本発明は、複数のネットワークＩ／Ｆを有する通信装置でデバイス探索を行ったときの必要な機器の探索を、当該装置上で動作するアプリケーションに修正を加えることなく実現することができる通信装置及び通信装置の制御方法並びにプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、請求項１記載の通信装置は、第１のネットワークインターフェースと第２のネットワークインターフェースを備える通信装置であって、前記通信装置で動作するアプリケーションからの要求に応じて、前記第１のネットワークインターフェースと前記第２のネットワークインターフェースのそれぞれを介して探索パケットを送信する送信手段と、前記探索パケットに対する応答パケットを受信する受信手段と、前記第１のネットワークインターフェースと前記第２のネットワークインターフェースのそれぞれを介して前記受信手段が同じ送信元アドレスの応答パケットを受信した場合に、前記第１のネットワークインターフェースを介して受信した応答パケットと、前記第２のネットワークインターフェースを介して受信した応答パケットのいずれか一方を前記アプリケーションに転送し、もう一方の応答パケットは前記アプリケーションに転送しないよう制御する制御手段とを備えることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、複数のネットワークＩ／Ｆを有する通信装置で機器探索を行う際に、不要な機器が探索されてしまうという問題を、当該装置上で動作するアプリケーションに修正を加えることなく解決することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明を適用した画像形成装置が存在するネットワーク環境の一例を示す構成図である。
【図２】図１の複合機Ａのハードウェア構成を示すブロック図である。
【図３】図１の複合機Ｂのハードウェア構成を示すブロック図である。
【図４】複合機Ａのソフトウェア構成を示すブロック図である。
【図５】複合機Ｂのソフトウェア構成を示すブロック図である。
【図６】複合機Ａ上の機器探索制御部からＳＬＰ探索要求パケットを送信した際のデータの流れを示す図である。
【図７】複合機Ｂから送出されるＳＬＰ探索要求応答パケットの流れを示す図である。
【図８】複合機Ａ内のソケットＡＰＩラッパーが保持する機器探索管理テーブルを示す図である。
【図９】複合機Ａで探索応答パケット送信時にソケットＡＰＩラッパーが実行する処理の一例を示すフローチャートである。
【図１０】複合機Ａで探索応答パケット受信時にソケットＡＰＩラッパーが実行する処理の一例を示すフローチャートである。
【図１１】複合機Ａで表示される機器探索結果の一例を示す図である。
【図１２】複合機Ａで表示されるオペレーション画面の一例を示す図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態を図面を参照して詳細に説明する。
【００１４】
図１は、本発明を適用した画像形成装置が存在するネットワーク環境の一例を示す構成図である。
【００１５】
複合機Ａ１０１は、印刷機能やスキャナ機能等を備える画像形成装置であるが、２つのネットワークインターフェース（ネットワークＩ／Ｆ）を備え、互いに異なるネットワーク（サブネット１，２）に接続されている。サブネット１とサブネット２は、ルータ１０４により相互に接続されている。
【００１６】
複合機Ａ１０１は、サブネット１及びサブネット２の少なくとも一方にマルチキャストパケットやブロードキャストパケットを送信し、ネットワーク上の機器（デバイス）探索を実行する機能を有する。また、複合機Ａ１０１は、サブネット１又はサブネット２からマルチキャストパケットやブロードキャストパケットを受信し、ネットワーク上の他の機器による機器探索に対して応答する機能を有する。
【００１７】
複合機Ｂ１０２は、印刷機能やスキャナ機能等を備える画像形成装置であるが、１つのネットワークＩ／Ｆを備え、サブネット１に接続されている。複合機Ｂ１０２は、サブネット１からマルチキャストパケットやブロードキャストパケットを受信し、ネットワーク上の他の機器探索に対して応答する機能を有する。
【００１８】
なお、本実施形態では、マルチキャストパケットを利用した機器探索プロトコルとしてＳＬＰを利用する。その際、ＳＬＰ機器探索パケット内のＴＴＬ値には１が設定されているものとする。
【００１９】
次に、図１の複合機Ａ１０１，Ｂ１０２のハードウェア及びソフトウェア構成について説明する。
【００２０】
図２は、図１の複合機Ａ１０１のハードウェア構成を示すブロック図である。
【００２１】
複合機Ａ１０１は、以下に説明するハードウェアを備える。スキャナＩ／Ｆ制御部２０２は、原稿等から画像の読み取りを実行するスキャナ部２１２に接続し、スキャナ部２１２との画像データ等の入出力を制御する。ＣＰＵ２０３は、複合機Ａ１０１に格納されたソフトウェアプログラムを実行し、機器全体の制御を行う。
【００２２】
ＲＯＭ２０４は、リードオンリーメモリであり、機器のブートプログラムや固定パラメータ等のデータを記憶する。ＲＡＭ２０５は、ランダムアクセスメモリであり、ＣＰＵ２０３が機器を制御する際のデータの一時的な記憶などに使用される。ＨＤＤ２０６は、ハードディスクドライブであり、印刷データなどの様々なデータの格納に使用される。
【００２３】
プリンタＩ／Ｆ制御部２０７は、印刷を実行するプリンタ部２１１に接続し、プリンタ部２１１との印刷データ等の入出力を制御する。ＮＶＲＡＭ２０８は、不揮発性のメモリであり、プリンタ部２１１の各種設定値を保存する。パネル制御部２０９は、ＬＣＤ（Liquid Crystal Display）やタッチパネル等で構成された表示装置であるオペレーションパネル２１０を制御し、各種情報の表示、使用者からの指示入力を行う。
【００２４】
第１のネットワークＩ／Ｆ制御部２１３は、例えば、ネットワークインターフェイスカード等で構成され、サブネット１に接続してサブネット１とのデータの送受信を制御する。第２のネットワークＩ／Ｆ制御部２１４は、第１のネットワークＩ／Ｆ制御部２１３と同様に、例えば、ネットワークインターフェイスカード等で構成され、サブネット２に接続し、サブネット２とのデータの送受信を制御する。
【００２５】
バス２１５は、図示のように、上述したスキャナＩ／Ｆ制御部２０２、ＣＰＵ２０３、ＲＯＭ２０４等を相互に接続し、ＣＰＵ２０３からの制御信号や各装置間のデータ信号が送受信されるシステムバスである。
【００２６】
図３は、図１の複合機Ｂ１０２のハードウェア構成を示すブロック図である。
【００２７】
複合機Ｂ１０２は、以下に説明するハードウェアを備える。スキャナＩ／Ｆ制御部３０１は、原稿等から画像の読み取りを実行するスキャナ部３１１に接続し、スキャナ部３１１とのデータの入出力を制御する。ＣＰＵ３０２は、複合機Ｂ１０２に格納されたソフトウェアプログラムを実行し、機器全体の制御を行う。
【００２８】
ＲＯＭ３０３は、リードオンリーメモリであり、機器のブートプログラムや固定パラメータ等のデータを記憶する。ＲＡＭ３０４は、ランダムアクセスメモリであり、ＣＰＵ３０２が機器を制御する際のデータの一時的な記憶などに使用される。ＨＤＤ３０５は、ハードディスクドライブであり、印刷データなどの様々なデータの格納に使用される。
【００２９】
プリンタＩ／Ｆ制御部３０６は、印刷を実行するプリンタ部３１２に接続し、プリンタ部３１２との印刷データ等の入出力を制御する。ＮＶＲＡＭ３０７は、不揮発性のメモリであり、プリンタ部３１２の各種設定値を保存する。パネル制御部３０８は、ＬＣＤ（Liquid Crystal Display）やタッチパネル等で構成された表示装置であるオペレーションパネル３１０を制御し、各種情報の表示、使用者からの指示入力を行う。
【００３０】
ネットワークＩ／Ｆ制御部３１３は、例えば、ネットワークインターフェイスカード等で構成され、サブネット１に接続してサブネット１とのデータの送受信を制御する。バス３０９は、図示のように、上述したスキャナＩ／Ｆ制御部３０１、ＣＰＵ３０２、ＲＯＭ３０３等を相互に接続し、ＣＰＵ３０２からの制御信号や各装置間のデータ信号が送受信されるシステムバスである。
【００３１】
図４は、複合機Ａ１０１のソフトウェア構成を示すブロック図である。なお、同図では、本発明に関わる主要部分のみを例示する。
【００３２】
プロトコルスタック４０４は、ＴＣＰ（Transmission Control Protocol）／ＩＰ及びＵＤＰ（User Datagram Protocol）／ＩＰプロトコルの制御を行う。ＴＣＰ及びＵＤＰは、ＯＳＩ参照モデルにおける第４層（トランスポート層）に属し、ＩＰ層と第５層（セッション）層に属するプロトコルとの橋渡しを行う。ＴＣＰヘッダ及びＵＤＰヘッダにはポート番号が含まれ、上位プロトコルを識別するために利用される。例えば、ＳＬＰの場合には、ＴＣＰヘッダのポート番号に４２７が利用される。
【００３３】
プロトコルスタック４０４は、別のソフトウェアモジュール（アプリケーション）から利用される。プロトコルスタック４０４とアプリケーション間のインターフェース部をソケットと呼び、各ソケットには、ソケットを一意に判別可能な識別子（ソケット識別子）が割り当てられるものとする。
【００３４】
ソケットＡＰＩ４０３は、プロトコルスタック４０４を上位プロトコルが利用するために提供されるＡＰＩである。近年、このＡＰＩは、ＰＯＳＩＸ（Portable Operating System Interface for UNIX(登録商標)）等、統一規格化されており、様々なシステムで共通した形式を持つ。ソケットＡＰＩ４０３では、ソケット識別子を引数に持ち、プロトコルスタック４０４が、利用元のアプリケーションを特定するために用いられている。
【００３５】
ソケットＡＰＩラッパー４０２は、ソケットＡＰＩ４０３を利用するためのラッパーであり、機器探索制御部４０１から利用される。ソケットＡＰＩラッパー４０２は、ソケットＡＰＩ４０３と同形式で提供されるため、その利用元は、ソケットＡＰＩ４０３を直接呼ぶ場合と何ら形式を変更することなく、ソケットＡＰＩラッパー４０２を利用することができる。
【００３６】
第１のネットワークＩ／Ｆドライバ４０５は、サブネット１に接続する第１のネットワークＩ／Ｆ制御部２１３とプロトコルスタック４０４とのデータ受け渡しを行う。第２のネットワークＩ／Ｆドライバ４０６は、サブネット２に接続する第２のネットワークＩ／Ｆ制御部２１４とプロトコルスタック４０４とのデータ受け渡しを行う。
【００３７】
機器探索制御部４０１は、機器探索を制御するモジュールである。機器探索制御部４０１は、機器探索のトリガの受信や、機器探索結果の処理を行う。例えば、機器探索制御部４０１では、オペレーションパネル２１０から、パネル制御部２０９を経由して、ユーザからの機器探索指示を受信し、それをトリガとして機器探索を実行する。また、機器情報探索応答の結果を、パネル制御部２０９を経由してオペレーションパネル２１０上に表示させ、ユーザへ通知する。
【００３８】
機器探索制御部４０１は、機器探索のトリガを受信すると、機器探索を行うためのＳＬＰ探索パケットを形成し、ソケットＡＰＩラッパー４０２を利用して、パケットの送信を行う。その後、ソケットＡＰＩラッパー４０２を利用し、ＳＬＰ探索応答パケットの受信を行い、機器探索結果を得る（なお、ＳＬＰ探索要求パケットの詳細についてはＲＦＣ２１６５を参照）。
【００３９】
機器探索応答部４０７は、ソケットＡＰＩ４０３を利用し、ネットワーク上の別機器からＳＬＰ探索要求パケットを受信する。機器探索応答部４０７は、ＳＬＰ探索パケットを受信すると、ＳＬＰ探索応答パケットを形成し、ソケットＡＰＩ４０３を利用して、パケットの送信を行う。
【００４０】
図５は、複合機Ｂ１０２のソフトウェア構成を示すブロック図である。なお、同図では、本発明に関わる主要部分のみを例示する。
【００４１】
機器探索応答部５０１は、ネットワーク上の他の機器から機器探索要求を受信した際に、その応答データを生成する。プロトコルスタック５０３は、ＴＣＰ／ＩＰ及びＵＤＰ／ＩＰプロトコルの制御を行う。ソケットＡＰＩ５０２は、プロトコルスタック５０３を利用するために提供されるＡＰＩである。ネットワークＩ／Ｆドライバ５０４は、サブネット１に接続するネットワークＩ／Ｆ制御部３１３とプロトコルスタック５０３とのデータ受け渡しを行う。
【００４２】
図６（ａ）及び図６（ｂ）は、複合機Ａ１０１上の機器探索制御部４０１からＳＬＰ探索要求パケットを送信した際のデータの流れを示す図である。
【００４３】
図６（ａ）において、機器探索制御部４０１で形成されたＳＬＰ機器探索パケットは、第１のネットワークＩ／Ｆドライバ４０５、第２のネットワークＩ／Ｆドライバ４０６を経由し、サブネット１及びサブネット２へ送出される（６０１）。サブネット１に送出されたＳＬＰ機器探索パケットは、サブネット１に接続する複合機Ｂ１０２へ到達する（６０２）。一方、サブネット２に送出されたＳＬＰ機器探索パケットは、ＳＬＰ機器探索要求パケットのＴＴＬ値が１であるため、ルータ１０４を経由して、サブネット１へ転送され（６０３）、サブネット１に接続する複合機Ｂ１０２へ到達する（６０４）。
【００４４】
図６（ｂ）において、サブネット１に送出されたＳＬＰ機器探索パケットは、ルータ１０４を経由してサブネット２へ送出され、サブネット２に接続する複合機Ａ１０１内の第２のネットワークＩ／Ｆ制御部２１４へも到達する（６０５）。
【００４５】
図７（ａ）及び図７（ｂ）は、複合機Ｂ１０２から送出されるＳＬＰ探索要求応答パケットの流れを示す図である。
【００４６】
図７（ａ）において、複合機Ｂ１０２では、複合機Ａ１０１から直接受信したＳＬＰ探索要求パケット６０２への応答であるＳＬＰ探索応答パケット７０１を送信する。また、ルータ１０４を経由して、受信したＳＬＰ探索要求パケット６０４への応答であるＳＬＰ探索応答パケット７０２を送信する。その結果、複合機Ａ１０１では、ＳＬＰ探索応答パケットを複合機Ｂ１０２から二度、受信することとなる。
【００４７】
図７（ｂ）において、複合機Ａ１０１内の第２のネットワークＩ／Ｆ制御部２１４へ到達したＳＬＰ探索パケットは、第２のネットワークＩ／Ｆドライバ４０６、プロトコルスタック４０４、ソケットＡＰＩ４０３を経由し、機器探索応答部４０７で受信される。機器探索応答部４０７は、ＳＬＰ探索要求パケット６０５への応答であるＳＬＰ探索応答パケット７０３を送信する。その結果、複合機Ａ１０１では、自装置からのＳＬＰ応答パケットを受信してしまい、機器探索結果として、自装置を含めてしまうこととなる。
【００４８】
図８は、複合機Ａ１０１において、ソケットＡＰＩラッパー４０２が保持する機器探索管理テーブルを示す図である。
【００４９】
図８において、機器探索管理テーブル８００は、以下に説明する要素で構成される。ソケット識別子８０１は、ソケット識別子を示し、プロトコルスタック４０４を利用するアプリケーションを識別するために設定される。相手先ポート番号８０２は、ソケット識別子が管理するＴＣＰ及びＵＤＰコネクションの相手先ポート番号を意味し、利用しているプロトコルを識別するために設定される。ソケット識別子８０１と相手先ポート番号８０２は、例えば、探索データの識別情報となる。
【００５０】
機器探索応答受信済みアドレス８０３には、ソケット識別子８０１及び相手先ポート番号８０２に対して機器探索を行った際の応答を受信した相手先のＩＰアドレスが設定される。
【００５１】
ソケット識別子８０１、相手先ポート番号８０２、及び機器探索応答受信済みアドレス８０３は、１対１対多の関係を持つ。図示例では、ソケット識別子６、相手先ポート番号４２７（ＳＬＰ）を利用した機器探索応答受信済みアドレスとして、「１７２．２４．２４．２４４」「１７２．２４．２４．２４５」が設定されている。
【００５２】
図９は、複合機Ａ１０１において、ＳＬＰ探索要求パケットを送信するためにソケットＡＰＩラッパー４０２が機器探索制御部４０１からコールされた際のソケットＡＰＩラッパー４０２で実行される処理の一例を示すフローチャートである。
【００５３】
図９において、ソケットＡＰＩラッパー４０２は、機器探索制御部４０１から渡されたデータのポート番号を参照し、ポート番号から割り出されるプロトコルが機器探索プロトコルか否かの判定を行う（ステップＳ９０１）。例えば、機器探索制御部４０１からＳＬＰ探索パケットが渡された場合はポート番号が４２７であることから、ソケットＡＰＩラッパー４０２は機器探索プロトコルであると判定する。ステップＳ９０１は第３の判定手段の一例である。
【００５４】
ステップＳ９０１の判定の結果、ポート番号から求めたプロトコルが機器探索プロトコルではないと判定した場合、ソケットＡＰＩラッパー４０２は、そのままソケットＡＰＩ４０３へデータを渡して（ステップＳ９０５）、本処理を終了する。一方、ステップＳ９０１でポート番号から求めたプロトコルが機器探索プロトコルであると判定した場合、ステップＳ９０２へ移行する。
【００５５】
ステップＳ９０２では、ソケットＡＰＩラッパー４０２は、機器探索管理テーブル８００を参照し、該当するソケット識別子及び相手先ポート番号が登録されているか否かを判定する。ステップＳ９０２は第４の判定手段の一例である。該当する情報が登録されていると判定した場合、ソケットＡＰＩラッパー４０２は、ソケット識別子及び相手先ポート番号に対応する機器探索応答済みアドレスを機器探索管理テーブル８００から全て削除（クリア）する（ステップＳ９０３）。例えば、図８に示す機器探索管理テーブル８００において、ソケット識別子６及び相手先ポート番号４２７に対応するアドレス「１７２．２４．２４．２４４」、「１７２．２４．２４．２４５」、・・・が全て削除される。ステップ９０３で設定済み情報を削除する理由は、同じアプリケーションから連続して機器探索が実行された場合に、既に応答済みとして扱われることを防ぐためである。
【００５６】
一方、ステップＳ９０２で該当する情報が登録されていないと判定した場合、ソケットＡＰＩラッパー４０２は、新しくソケット識別子及び相手先ポート番号を機器探索管理テーブル８００に登録して（ステップＳ９０４）、ステップＳ９０５へ移行する。
【００５７】
図１０は、複合機Ａ１０１において、ＳＬＰ探索応答パケットを受信するためにソケットＡＰＩラッパー４０２が機器探索制御部４０１からコールされた際のソケットＡＰＩラッパー４０２で実行される処理の一例を示すフローチャートである。
【００５８】
図１０において、ソケットＡＰＩラッパー４０２は、ソケットＡＰＩ４０３を経由してプロトコルスタック４０４へソケット識別子を渡し、ソケット識別子に該当するデータを取得する（ステップＳ１００１）。
【００５９】
図６（ｂ）の６０５に示すように、複合機Ａ１０１は、第１のネットワークＩ／Ｆ制御部２１３が保持するアドレスを送信元アドレスとするＳＬＰ探索パケットを第２のネットワークＩ／Ｆ制御部２１４で受信する。一方、図７（ｂ）の７０３に示すように、複合機Ａ１０１は、第２のネットワークＩ／Ｆ制御部２１４が保持するアドレスを送信元アドレスとするＳＬＰ探索パケットを第１のネットワークＩ／Ｆ制御部２１３で受信する。このようなデータを破棄するため、ソケットＡＰＩラッパー４０２は、受け取ったデータの送信元アドレスが、自装置の第１及び第２のネットワークＩ／Ｆ制御部２１３，２１４が保持するアドレス（自装置のアドレス）かどうかを判定する（ステップＳ１００２）。ステップＳ１００２は第１の判定手段の一例である。ステップＳ１００２の判定の結果、受信したデータの送信元アドレスが自装置のネットワークＩ／Ｆのアドレスであると判定した場合、ソケットＡＰＩラッパー４０２は、該当データを破棄して、本処理を終了する。これは第１の破棄手段の一例である。一方、ステップＳ１００２で送信元アドレスが自装置のネットワークＩ／Ｆのアドレスではないと判定した場合、ステップＳ１００３へ移行する。
【００６０】
ステップＳ１００３では、ソケットＡＰＩラッパー４０２は、機器探索管理テーブル８００を参照し、ステップＳ１００１で取得したデータのソケット識別子及び相手先ポート番号が登録されているか否かを判定する。ステップＳ１００３は第２の判定手段の一例である。該当する情報が登録されていないと判定した場合、ソケットＡＰＩラッパー４０２は、受信したデータが機器探索パケットの応答ではないと判定し、該当データをアプリケーションへ渡して（ステップＳ１００６）、本処理を終了する。
【００６１】
一方、ステップＳ１００３で該当する情報が登録されていると判定した場合、ソケットＡＰＩラッパー４０２は、データの送信元アドレスが機器探索管理テーブル８００に登録されているかどうかを判定する（ステップＳ１００４）。ステップＳ１００４は第１の判定手段の一例である。ここでは、送信元アドレスが機器探索管理テーブル８００の機器探索応答受信済みアドレス８０３に登録済みか否かが判定される。
【００６２】
ステップＳ１００４の判定の結果、送信元アドレスが登録されていると判定した場合、ソケットＡＰＩラッパー４０２は、既にＳＬＰ探索要求パケットを受け取った機器からのＳＬＰ探索応答であるから受信データを破棄して本処理を終了する。これは第２の破棄手段の一例である。一方、ステップＳ１００４で送信元アドレスが登録されていないと判定した場合、ステップＳ１００５へ進む。
【００６３】
ステップＳ１００５では、ソケットＡＰＩラッパー４０２は、データの送信元アドレスを機器探索管理テーブル８００の機器探索応答受信済みアドレスに登録し、ステップＳ１００６へ移行する。ステップＳ１００６では、ソケットＡＰＩラッパー４０２は、ＳＬＰ探索応答パケットのみをアプリケーション（不図示）へ渡して、本処理を終了する。
【００６４】
次に、複合機Ａ１０１のオペレーションパネル２１０に表示される探索結果について説明する。
【００６５】
ソケットＡＰＩラッパー４０２を利用せずに、機器探索制御部４０１が機器探索を行った際に想定される機器探索結果を図１１（ａ）に示す。結果として、複合機Ｂ１０２の情報が重複している（１１０１，１１０２）。また、機器探索結果として自装置の情報が得られてしまう（１１０３）。
【００６６】
一方、ソケットＡＰＩラッパー４０２を利用して、機器探索制御部４０１が機器探索を行った場合の機器探索結果を図１１（ｂ）に示す。結果として、複合機Ｂ１０２の情報が重複することなく得られる（１２０１）。
【００６７】
図１２（ａ）は、複合機Ａ１０１において、ユーザから機器探索応答結果として自装置を含めるかどうかの選択を可能とするオペレーション画面の一例を示す図である。
【００６８】
例えば、一元管理する画像形成装置を探索する場合等、自装置を機器探索結果として含めたいという機器探索ポリシーの設定が予想される。この様な場合にも、本実施形態では、ソケットＡＰＩラッパー４０２の処理フローを修正することによって、機器探索を行う各アプリケーションに修正を加えることなく、統一されたポリシーを適用することが可能となる。
【００６９】
図１２（ｂ）は、複合機Ａ１０１において、機器探索を行うインターフェースを指定するためのオペレーション画面の一例を示す図である。
【００７０】
複数のネットワークＩ／Ｆのうち、あるインターフェースから接続可能な機器の探索を行う場合に、探索インターフェースポリシーの設定が予想される。この様な場合にも、本実施形態では、ソケットＡＰＩラッパー４０２の処理フローを修正することによって、機器探索を行う各アプリケーションに修正を加えることなく、統一されたポリシーを適用することが可能となる。
【００７１】
図１２（ｂ）に示すオペレーション画面上で、ＥＴＨ０は第１のネットワークＩ／Ｆ制御部２１３に対応し、ＥＴＨ１は第２のネットワークＩ／Ｆ制御部２１４に対応する。例えば、図示のように、ＥＴＨ０がＯＦＦ、ＥＴＨ１がＯＮと設定された場合、探索データは、第２のネットワークＩ／Ｆ制御部２１４から送出される。また、ＥＴＨ０，１がいずれもＯＮの場合には、探索データは、第１及び第２のネットワークＩ／Ｆ制御部から送出される。
【００７２】
上記実施の形態によれば、ネットワークに送出する探索データに関するソケット識別子と相手先ポート番号、送出した探索データに対して受信した応答データの機器探索応答受信済みアドレスを機器探索管理テーブル８００に登録する。そして。ネットワークから受信したデータの送信元情報により、データの送信元が自装置であると判定されたときに当該データを破棄する。さらに、データの送信元情報が機器探索管理テーブル８００に登録されていると判定されたときに当該データを破棄する。そして、データの送信元情報が機器探索管理テーブル８００に登録されていないと判定された場合、機器探索管理テーブル８００にデータの送信元アドレスを登録して、データをアプリケーションに渡す。これにより、複数のネットワークＩ／Ｆを有する通信装置でデバイス探索を行ったときの必要な機器の探索を、当該装置上で動作するアプリケーションに修正を加えることなく実現することができる。
【００７３】
上記実施の形態において、第１及び第２のネットワークＩ／Ｆ制御部から探索データを送出する場合にのみ、図９及び図１０の処理を実行するように構成してもよい。
【００７４】
本発明の実施の形態は、ネットワーク又は各種記憶媒体を介して取得したソフトウェア（プログラム）をパーソナルコンピュータ（ＣＰＵ，プロセッサ）にて実行することでも実現できる。
【符号の説明】
【００７５】
１０１  複合機Ａ
１０２  複合機Ｂ
２１３  第１のネットワークＩ／Ｆ制御部
２１４  第２のネットワークＩ／Ｆ制御部
４０１  機器探索制御部
４０２  ソケットＡＰＩラッパー
４０３  ソケットＡＰＩ
４０４  プロトコルスタック
４０５  第１のネットワークＩ／Ｆドライバ
４０６  第２のネットワークＩ／Ｆドライバ
【図１】
0005388784.tif 000002
【図２】
0005388784.tif 000003
【図３】
0005388784.tif 000004
【図４】
0005388784.tif 000005
【図５】
0005388784.tif 000006
【図６】
0005388784.tif 000007
【図７】
0005388784.tif 000008
【図８】
0005388784.tif 000009
【図９】
0005388784.tif 000010
【図１０】
0005388784.tif 000011
【図１１】
0005388784.tif 000012
【図１２】
0005388784.tif 000013