(57)【要約】【課題】データの送信失敗後に直ちにデータを再送可能な通信装置及びその制御方法、並びにプログラムを提供する。【解決手段】画像形成装置１０１は、選択されたインタフェースからデータを送信し（ステップＳ６０３）、データの送信が失敗した場合に（ステップＳ６０４でＮＯ）、選択されたインタフェースとは異なるインタフェースからデータを送信する（ステップＳ６０８）。【選択図】図５
2015185987.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークと接続するための複数のインタフェースを有する通信装置であって、
前記ネットワークを介して宛先にデータを送信するインタフェースを前記複数のインタフェースから選択する選択手段と、
前記選択手段により選択されたインタフェースから前記データを送信する送信手段と、
前記送信手段による前記データの送信が失敗した場合に、前記選択されたインタフェースとは異なるインタフェースから前記データを送信する再送信手段とを有することを特徴とする通信装置。
【請求項２】
前記選択手段は、前記宛先のＩＰアドレスである宛先アドレスのバージョンがＩＰｖ４か否かを判別するバージョン判別手段と、
前記バージョン判別手段により前記宛先アドレスのバージョンがＩＰｖ４ではなくＩＰｖ６と判別された場合に、前記宛先アドレスがリンクローカルアドレスか否か判別するリンクローカル判別手段とを有し、
前記リンクローカル判別手段により前記宛先アドレスがリンクローカルアドレスと判別された場合に、予め定められたインタフェースを選択することを特徴とする請求項１記載の通信装置。
【請求項３】
前記選択手段は、前記バージョン判別手段により前記宛先アドレスのバージョンがＩＰｖ４と判別された場合に、前記宛先アドレスと同一のサブネットのＩＰアドレスを持つ前記インタフェースがあるか否か判別するサブネット判別手段をさらに有し、
前記サブネット判別手段により、前記宛先アドレスと同一のサブネットのＩＰアドレスを持つ前記インタフェースがあると判別された場合には、当該インタフェースを選択することを特徴とする請求項２記載の通信装置。
【請求項４】
前記選択手段は、前記サブネット判別手段により、前記宛先アドレスと同一のサブネットのＩＰアドレスを持つ前記インタフェースがないと判別された場合に、予め設定されたルータがあるか否かを判別するルータ判別手段をさらに有し、
前記ルータ判別手段により、予め設定されたルータがあると判別された場合には、前記予め設定されたルータと同一のサブネットのＩＰアドレスを持つ前記インタフェースを選択することを特徴とする請求項３記載の通信装置。
【請求項５】
前記選択手段は、前記ルータ判別手段により、予め設定されたルータがないと判別された場合に、前記宛先アドレスがＩＰｖ４か否かを判別する他のバージョン判別手段をさらに有し、
前記他のバージョン判別手段により、前記宛先アドレスのバージョンがＩＰｖ４と判別された場合には、前記予め定められたインタフェースを選択し、
前記他のバージョン判別手段により前記宛先アドレスのバージョンがＩＰｖ４ではなくＩＰｖ６と判別された場合には、ロンゲストマッチに従って前記インタフェースを選択することを特徴とする請求項４記載の通信装置。
【請求項６】
前記データの送信に成功した宛先と前記データを送信したインタフェースとの組を示す情報が設定されるテーブルをさらに有し、
前記再送信手段により送信が成功した場合には、送信に成功した前記宛先と前記インタフェースとの組を示す情報が前記テーブルに設定され、
前記データを送信する宛先が設定されている場合には、当該宛先と組になっているインタフェースを選択することを特徴と請求項１乃至請求項５のいずれか１項に記載の通信装置。
【請求項７】
前記テーブルに設定された前記宛先と前記インタフェースとの組は、ユーザにより削除可能であることを特徴とする請求項６記載の通信装置。
【請求項８】
前記送信手段による前記データの送信が失敗した場合に、失敗した内容を示すエラー内容が前記宛先の不在を示す内容である場合には、前記再送信手段による送信を行わないことを特徴とする請求項１乃至請求項７のいずれか１項に記載の通信装置。
【請求項９】
前記送信手段による前記データの送信が失敗し、前記再送信手段により前記データを送信する場合には、送信失敗の判断に用いられるタイムアウト時間を変更することを特徴とする請求項１乃至請求項８のいずれか１項に記載の通信装置。
【請求項１０】
ネットワークと接続するための複数のインタフェースを有する通信装置の制御方法であって、
前記ネットワークを介して宛先にデータを送信するインタフェースを前記複数のインタフェースから選択する選択ステップと、
前記選択ステップにより選択されたインタフェースから前記データを送信する送信ステップと、
前記送信ステップによる前記データの送信が失敗した場合に、前記選択されたインタフェースとは異なるインタフェースから前記データを送信する再送信ステップとを有することを特徴とする制御方法。
【請求項１１】
ネットワークと接続するための複数のインタフェースを有する通信装置の制御方法をコンピュータに実行させるためのプログラムであって、
前記制御方法は、
前記ネットワークを介して宛先にデータを送信するインタフェースを前記複数のインタフェースから選択する選択ステップと、
前記選択ステップにより選択されたインタフェースから前記データを送信する送信ステップと、
前記送信ステップによる前記データの送信が失敗した場合に、前記選択されたインタフェースとは異なるインタフェースから前記データを送信する再送信ステップとを有することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置及びその制御方法、並びにプログラムに関する。
【背景技術】
【０００２】
近年、画像形成装置やパーソナルコンピュータなどのデバイスに複数のネットワークインタフェースカード（以下、「ＮＩＣ」という）を搭載し、それらを同時にネットワークに接続して利用することができるようになっている。
【０００３】
これによってデバイスは、有線ＮＩＣと有線ＮＩＣ、有線ＮＩＣと無線ＮＩＣ、無線ＮＩＣと無線ＮＩＣなどの組み合わせで２個以上のＮＩＣを搭載し、それぞれを同一または別のネットワークに接続することで、より柔軟で多岐に渡る利用方法が考えられている。
【０００４】
このような複数のＮＩＣを持ったデバイスにおいては、それぞれのＮＩＣが接続されているネットワーク環境などの要因で、通信相手へのデータの送出に失敗する場合がある。
【０００５】
失敗時に通信相手に可能な限り確実にデータを届けるための技術として、複数のＮＩＣを搭載したルータなどでは、失敗時のデータと再送予定時刻を保持しておき、一定時間経過後に同じデータを再送するという技術が開示されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平３−９６０４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１に開示された技術では、一定時間経過後に再送するため、失敗後に直ちにデータを再送することができないという課題があった。
【０００８】
本発明の目的は、データの送信失敗後に直ちにデータを再送可能な通信装置及びその制御方法、並びにプログラムを提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、請求項１の通信装置は、ネットワークと接続するための複数のインタフェースを有する通信装置であって、前記ネットワークを介して宛先にデータを送信するインタフェースを前記複数のインタフェースから選択する選択手段と、前記選択手段により選択されたインタフェースから前記データを送信する送信手段と、前記送信手段による前記データの送信が失敗した場合に、前記選択されたインタフェースとは異なるインタフェースから前記データを送信する再送信手段とを有することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、選択されたインタフェースからデータを送信し、データの送信が失敗した場合に、選択されたインタフェースとは異なるインタフェースからデータを送信するので、データの送信失敗後に直ちにデータを再送可能となる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施の形態に係る通信装置としての画像形成装置を含む通信システムの概略構成を示す図である。
【図２】図１における画像形成装置の概略構成を示す図である。
【図３】図１における画像形成装置のソフトウェア構成を示す図である。
【図４】図３におけるＮＩＣ設定部が設定するテーブルを示す図である。
【図５】図２におけるＣＰＵにより実行される送信処理の手順を示すフローチャートである。
【図６】図２におけるＣＰＵにより実行される送信処理の手順を示すフローチャートである。
【図７】図５におけるステップＳ６０２の選択処理の手順を示すフローチャートである。
【図８】図５，６の送信処理の変形例を示すフローチャートである。
【図９】図４のテーブルの内容をユーザが削除する場合に表示される画面を示す図である。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の形態について図面を参照しながら詳述する。
【００１３】
図１は、本発明の実施の形態に係る通信装置としての画像形成装置１０１を含む通信システム１００の概略構成を示す図である。
【００１４】
図１において、通信システム１００は、画像形成装置１０１、ルータ１１１，１１２、サーバ１０４，１１４、ＬＡＮ１０２，１０３、及びネットワーク１１３で構成される。
【００１５】
画像形成装置１０１は、ＬＡＮ１０２，１０３、及びネットワーク１１３などの一般的なネットワークと接続するための複数（本実施の形態では２つ）のインタフェース（以下、「ＮＩＣ」という）を有し、一方のＮＩＣがＬＡＮ１０２に接続され、他方のＮＩＣがＬＡＮ１０３に接続されている。
【００１６】
ＬＡＮ１０３には、サーバ１０４が接続されている。また、ネットワーク１１３には、サーバ１１４が接続されている。
【００１７】
ルータ１１１は、ＬＡＮ１０２、及びネットワーク１１３に接続され、ルータ１１２は、ＬＡＮ１０３、及びネットワーク１１３に接続されている。
【００１８】
ネットワーク１１３は、ＬＡＮ１０２やＬＡＮ１０３とは異なるＬＡＮでもよいし、もっとインターネットであってもよい。
【００１９】
図２は、図１における画像形成装置１０１の概略構成を示す図である。
【００２０】
図２において、画像形成装置１０１は、コントローラ２０１、プリントエンジン２１４、及びスキャナ２１５で構成される。
【００２１】
コントローラ２０１は、画像形成装置１０１全体を制御する。プリントエンジン２１４は、コントローラ２０１の制御により、紙などの記録媒体に画像を印刷する。スキャナ２１５は、コントローラ２０１の制御により、原稿を読み取り、原稿を示す画像データを生成する。
【００２２】
また、コントローラ２０１は、ＣＰＵ２０３、ＲＡＭ２０４、ＲＯＭ２０５、ＮＩＣ２０６，２０７、操作パネル２０８、印刷インタフェース２０９、ディスクコントローラ２１０、ＨＤＤ２１１、不揮発性メモリ２１２、及び読取インタフェース２１３で構成され、それらはＨＤＤ２１１を除きシステムバス２０２で接続される。
【００２３】
ＣＰＵ２０３は、コントローラ２０１を制御することで、画像形成装置１０１全体を制御する。ＲＡＭ２０４は、ＣＰＵ２０３のワークエリアとして用いられたり、各種プログラムや各種データなどを記憶する。
【００２４】
ＲＯＭ２０５は、フォント、各種プログラム、及び各種データなどを記憶する。ＮＩＣ２０６は、ＬＡＮ１０２に接続されている。ＮＩＣ２０７は、ＬＡＮ１０３に接続されている。
【００２５】
操作パネル２０８は、ユーザに各種情報を表示したり、ユーザの操作入力を受け付ける。印刷インタフェース２０９は、コントローラ２０１とプリントエンジン２１４とのインタフェースである。
【００２６】
ディスクコントローラ２１０は、ＨＤＤ２１１を制御する。ＨＤＤ２１１は、各種プログラム、及び各種データなどを記憶する。後述するフローチャートは、ＨＤＤ２１１またはＲＯＭ２０５に記憶され、ＲＡＭ２０４に展開されたプログラムをＣＰＵ２０３が実行する処理を示している。
【００２７】
不揮発性メモリ２１２は、ユーザにより操作パネル２０８から設定される各種設定情報を記憶する。読取インタフェース２１３は、コントローラ２０１とスキャナ２１５とのインタフェースである。
【００２８】
図３は、図１における画像形成装置１０１のソフトウェア構成を示す図である。
【００２９】
アプリケーション３０１は他の装置に対してデータを送信する機能を有する。アプリケーション３０１がデータの送信を所望する場合、Socket API Wrapper３０２を呼び出すことによって、Socket API３０５が呼ばれ、さらにＯＳのネットワークプロトコル３０６を介して、ＮＩＣ２０７またはＮＩＣ２０６からデータが送信される。
【００３０】
本実施の形態におけるネットワークプロトコル３０６は、ＮＩＣ２０６をデフォルトのＮＩＣとしているものとする。また、デフォルトのルータが設定されている場合には、ルータ１１１をデフォルトのルータとする。
【００３１】
Socket API Wrapper３０２は、一方のＮＩＣでの送信失敗を検知すると、他方のＮＩＣから同じデータを再送し、再送が成功すると、ＮＩＣ設定部３０４に少なくとも宛先情報と送信に成功したＮＩＣの組をテーブルに設定させる。このテーブルについては後述する。
【００３２】
ＮＩＣ選択部３０３は、データ送信の際に、ＮＩＣ設定部３０４により設定された組をテーブルから検索し、保持された組が検索された場合には、送信元ＮＩＣを指定してSocket API３０５を呼び出す。
【００３３】
これによって送信に一度失敗しても次回からは適切なＮＩＣを初めから選択して送信することができる。
【００３４】
本実施の形態では、ＮＩＣ選択部３０３とＮＩＣ設定部３０４はSocket API Wrapper ３０２に含まれているが、実際にはどこに位置していてもよく、独立していてもよいし、アプリケーション３０１が持っていてもよいし、Socket API３０５に含まれていてもよい。
【００３５】
図４は、図３におけるＮＩＣ設定部３０４が設定するテーブル４００を示す図である。
【００３６】
図４に示されるテーブルは、ＨＤＤ２１１に記憶されている。
【００３７】
図４において、テーブル４００は、宛先、ＮＩＣ、及び再送フラグで構成される。そして、テーブル４００には、一方のＮＩＣからの送信に失敗し、他方のＮＩＣで送信に成功した場合に、その送信先の宛先と、送信に成功したＮＩＣとの組を示す情報が設定される。以下の説明では、宛先とＮＩＣとの組を示す情報が設定されることを、単に宛先とＮＩＣとの組が設定される、と表現する。
【００３８】
図４の場合、「beaf::beaf」と「ＮＩＣ２０６」の組、及び「172.100.76.11」と「ＮＩＣ２０７」の組が、送信に成功した組を示している。
【００３９】
このように成功した組の他に、送信中の情報も設定される。再送フラグは、一方のＮＩＣによる送信が失敗したときに、他方のＮＩＣによって再送するか否かを示すフラグである。
【００４０】
図４の場合、「fe80::3」、「100.100.100.100」に送信中であり、「fe80::3」への送信に失敗した場合には再送し、「100.100.100.100」への送信に失敗した場合には再送しないことが示されている。
【００４１】
そして、一方のＮＩＣによる送信が失敗し、他方のＮＩＣによって再送が成功した場合に、成功したＮＩＣが設定され、再送フラグは削除される。
【００４２】
図５，６は、図２におけるＣＰＵ２０３により実行される送信処理の手順を示すフローチャートである。
【００４３】
図５において、アプリケーション３０１がSocket API Wrapper３０２にデータの送信を要求すると（ステップＳ６００）、ＮＩＣ選択部３０３はテーブル４００で、アプリケーション３０１から要求された宛先とＮＩＣの組を検索し（ステップＳ６２１）、宛先とＮＩＣの組が検索されたか否かを判別する（ステップＳ６２２）。
【００４４】
ステップＳ６２２の判別の結果、宛先とＮＩＣの組が検索された場合には（ステップＳ６２２でＹＥＳ）、Socket API Wrapper３０２は検索されたＮＩＣを選択して、Socket API３０５を通じてネットワークプロトコル３０６に送信を依頼する（ステップＳ６２３）。このように、本実施の形態では、データを送信する宛先が設定されている場合には、当該宛先と組になっているインタフェースを選択する。
【００４５】
次いで、Socket API Wrapper３０２は送信結果をアプリケーション３０１に返して（ステップＳ６２４）、本処理を終了する。
【００４６】
一方、ステップＳ６２２の判別の結果、宛先とＮＩＣの組が検索されなかった場合には（ステップＳ６２２でＮＯ）、Socket API Wrapper３０２はSocket API３０５を通じてネットワークプロトコル３０６に対して送信を依頼する（ステップＳ６０１）。
【００４７】
送信を依頼されたネットワークプロトコル３０６は、後述する選択処理を行う（ステップＳ６０２）。この選択処理は、ネットワークを介して宛先にデータを送信するインタフェースを２つのインタフェースから選択する選択手段に対応し、さらにテーブル４００の宛先と再送フラグとを設定する。
【００４８】
次いで、選択処理で選択されたＮＩＣから宛先にデータを送信する（ステップＳ６０３）。このステップＳ６０３は、選択されたＮＩＣからデータを送信する送信手段に対応する。
【００４９】
図６に移り、送信が成功したか否か判別する（ステップＳ６０４）。ステップＳ６０４の判別の結果、送信が成功した場合には（ステップＳ６０４でＹＥＳ）、テーブル４００の宛先と再送フラグとを削除する（ステップＳ６０５）。
【００５０】
次いで、Socket API Wrapper３０２がアプリケーション３０１に対して送信成功を返して（ステップＳ６１１）、本処理を終了する。
【００５１】
一方、ステップＳ６０４の判別の結果、送信が成功しなかった場合には（ステップＳ６０４でＮＯ）、Socket API Wrapper３０２はテーブル４００を検索し（ステップＳ６０６）、再送フラグが「再送する」に設定されているか否かを判別する（ステップＳ６０７）。
【００５２】
ステップＳ６０７の判別の結果、再送フラグが「再送する」に設定されていない場合には（ステップＳ６０７でＮＯ）、Socket API Wrapper３０２がアプリケーション３０１に送信エラーを返して（ステップＳ６１３）、本処理を終了する。
【００５３】
一方、ステップＳ６０７の判別の結果、再送フラグが「再送する」に設定されている場合には（ステップＳ６０７でＹＥＳ）、Socket API Wrapper３０２は送信したＮＩＣとは異なるＮＩＣを選択してSocket API３０５を通じてネットワークプロトコル３０６に送信を再度依頼する（ステップＳ６０８）。このステップＳ６０８は、データの送信が失敗した場合に、選択されたインタフェースとは異なるインタフェースからデータを送信する再送信手段に対応する。
【００５４】
そして、送信が成功したか否か判別する（ステップＳ６０９）。ステップＳ６０９の判別の結果、送信が成功した場合には（ステップＳ６０９でＹＥＳ）、Socket API Wrapper３０２はＮＩＣ設定部３０４に送信に成功したＮＩＣを設定させて（ステップＳ６１０）、上記ステップＳ６１１に進む。宛先は予め設定されているので、ここでＮＩＣが設定されることで、再送信が成功した場合には、送信に成功した宛先とインタフェースとの組がテーブル４００に設定されることとなる。
【００５５】
一方、ステップＳ６０９の判別の結果、送信が成功しなかった場合には（ステップＳ６０９でＮＯ）、テーブル４００の宛先と再送フラグとを削除して（ステップＳ６１３）、上記ステップＳ６１３に進む。
【００５６】
図７は、図５におけるステップＳ６０２の選択処理の手順を示すフローチャートである。
【００５７】
図７において、宛先のＩＰアドレスのバージョン（ＩＰｖ４、ＩＰｖ６）を調査し（ステップＳ５０１）、バージョンがＩＰｖ４か否か判別する（ステップＳ５０２）。このステップＳ５０２は、宛先のＩＰアドレスである宛先アドレスのバージョンがＩＰｖ４か否かを判別するバージョン判別手段に対応する。
【００５８】
ステップＳ５０２の判別の結果、バージョンがＩＰｖ４の場合には（ステップＳ５０２でＹＥＳ）、宛先のＩＰアドレスと同一のサブネットのＩＰアドレスを持つＮＩＣがあるか否か判別する（ステップＳ５０６）。このステップＳ５０６は、宛先アドレスと同一のサブネットのＩＰアドレスを持つＮＩＣがあるか否か判別するサブネット判別手段に対応する。
【００５９】
ステップＳ５０６の判別の結果、宛先のＩＰアドレスと同一のサブネットのＩＰアドレスを持つＮＩＣがある場合には（ステップＳ５０６でＹＥＳ）、宛先のＩＰアドレスと同一のサブネットのＩＰアドレスを持つＮＩＣを選択する（ステップＳ５０７）。なお、ＮＩＣ２０６，２０７のいずれも同一のサブネットのＩＰアドレスを持つ場合はデフォルトのＮＩＣ２０６が選択される。このように、本実施の形態では、宛先アドレスと同一のサブネットのＩＰアドレスを持つＮＩＣがあると判別された場合には、当該インタフェースを選択する。
【００６０】
そして、テーブル４００の宛先にＩＰアドレスを設定し、再送フラグを「再送しない」に設定し（ステップＳ５１５）、本処理を終了する。「再送しない」に設定する理由は、ステップＳ５０７で、最も最適なＮＩＣが選択されたと考えられるため、異なるＮＩＣから送信しても成功する可能性がないためである。
【００６１】
ステップＳ５０６の処理に戻り、ステップＳ５０６の判別の結果、宛先のＩＰアドレスと同一のサブネットのＩＰアドレスを持つＮＩＣがない場合には（ステップＳ５０６でＮＯ）、デフォルトのルータが設定されているか否か判別する（ステップＳ５０８）。このステップＳ５０８は、予め設定されたルータがあるか否かを判別するルータ判別手段に対応する。
【００６２】
ステップＳ５０８の判別の結果、デフォルトのルータが設定されている場合には（ステップＳ５０８でＹＥＳ）、デフォルトのルータ１１１と同一のサブネットのＩＰアドレスを持つＮＩＣを選択する（ステップＳ５０９）。このように、本実施の形態では、予め設定されたルータがあると判別された場合には、予め設定されたルータと同一のサブネットのＩＰアドレスを持つＮＩＣを選択する。
【００６３】
そして、いずれのＮＩＣも同一のネットワークに接続されているか否か判別する（ステップＳ５１３）。
【００６４】
ステップＳ５１３の判別の結果、いずれのＮＩＣも同一のネットワークに接続されている場合には（ステップＳ５１３でＹＥＳ）、テーブル４００の宛先にＩＰアドレスを設定し、再送フラグを「再送しない」に設定し（ステップＳ５１５）、本処理を終了する。「再送しない」に設定する理由は、選択されたＮＩＣで送信を失敗した場合に同一のネットワークに接続された異なるＮＩＣから送信しても成功する可能性がないためである。
【００６５】
一方、ステップＳ５１３の判別の結果、いずれのＮＩＣも同一のネットワークに接続されていない場合には（ステップＳ５１３でＮＯ）、テーブル４００の宛先にＩＰアドレスを設定し、再送フラグを「再送する」に設定し（ステップＳ５１４）、本処理を終了する。
【００６６】
ステップＳ５０８に戻り、ステップＳ５０８の判別の結果、デフォルトのルータが設定されていない場合には（ステップＳ５０８でＮＯ）、バージョンがＩＰｖ４か否か判別する（ステップＳ５１０）。このステップＳ５１０は、宛先アドレスのバージョンがＩＰｖ４か否かを判別する他のバージョン判別手段に対応する。
【００６７】
ステップＳ５１０の判別の結果、バージョンがＩＰｖ４ではなく、ＩＰｖ６の場合には（ステップＳ５１０でＮＯ）、ロンゲストマッチに従ってＮＩＣを選択し（ステップＳ５１１）、上記ステップＳ５１２に進む。このように、本実施の形態では、宛先アドレスのバージョンがＩＰｖ４ではなくＩＰｖ６と判別された場合には、ロンゲストマッチに従ってＮＩＣを選択する。
【００６８】
一方、ステップＳ５１０の判別の結果、バージョンがＩＰｖ４の場合には（ステップＳ５１０でＹＥＳ）、デフォルトのＮＩＣ２０６を選択して（ステップＳ５１２）、上記ステップＳ５１３に進む。このように、本実施の形態では、宛先アドレスのバージョンがＩＰｖ４と判別された場合には、予め定められたインタフェースを選択する。
【００６９】
ステップＳ５０２に戻り、ステップＳ５０２の判別の結果、バージョンがＩＰｖ４ではなく、ＩＰｖ６の場合には（ステップＳ５０２でＮＯ）、宛先のＩＰアドレスを調査し（ステップＳ５０３）、ＩＰアドレスがリンクローカルアドレスであるか否か判別する（ステップＳ５０４）。このステップＳ５０４は、宛先アドレスがリンクローカルアドレスか否か判別するリンクローカル判別手段に対応する。
【００７０】
ステップＳ５０４の判別の結果、ＩＰアドレスがリンクローカルアドレスではない場合には（ステップＳ５０４でＮＯ）、上記ステップＳ５０６に進む。
【００７１】
一方、ステップＳ５０４の判別の結果、ＩＰアドレスがリンクローカルアドレスの場合には（ステップＳ５０４でＹＥＳ）、上記ステップＳ５１２に進む。このように、本実施の形態では、宛先アドレスがリンクローカルアドレスと判別された場合に、予め定められたインタフェースを選択する。
【００７２】
以上説明した選択処理は、ネットワークプロトコル３０６で行われる処理であるが、Socket API Wrapper３０２やSocket API３０５が行ってもよい。
【００７３】
上述した送信処理において、送信失敗時に異なるＮＩＣから送信して成功する（Ｓ６０９でＹＥＳ）の例として、図１の通信システム１００がＩＰｖ６リンクローカルアドレスのみを用いてネットワークが構築されており、ＮＩＣ２０６，２０７、サーバ１０４が全てＩＰｖ６リンクローカルアドレスしか持っていないような場合が挙げられる。
【００７４】
この場合、ステップＳ５０４の判別によって、ＬＡＮ１０２に接続されたデフォルトのＮＩＣ２０６が選択されるが、実際の通信相手であるサーバ１０４はＬＡＮ１０３に接続されている。
【００７５】
従って、ＮＩＣ２０６からの送信は必ず失敗するが、ＮＩＣ２０７からの送信は成功することになる。
【００７６】
また、他の例として、図１の通信システム１００がＩＰｖ４アドレスを用いてネットワークが構築されており、デフォルトのルータ１１１と通信相手であるサーバ１１４との間で何らかのネットワークトラブルが発生している場合が挙げられる。
【００７７】
このような場合、ステップＳ５０９によって選択されたＮＩＣ２０６からの送信は失敗するが、ＮＩＣ２０７からの送信は成功することになる。
【００７８】
図８は、図５，６の送信処理の変形例を示すフローチャートである。
【００７９】
図８（Ａ）は、最初の送信時の失敗の原因を調査して動作を変更する場合の処理の手順を示すフローチャートである。
【００８０】
図８（Ａ）において、図６のステップＳ６０７の判別の結果、再送フラグが「再送する」に設定されている場合には（ステップＳ６０７でＹＥＳ）、Socket API Wrapper３０２は、Socket API３０５から受け取ったエラーの内容を解析する（ステップＳ７０１）。
【００８１】
解析の結果、エラー内容が宛先が不在を示す内容か否か判別する（ステップＳ７０２）。ステップＳ７０２の判別の結果、エラー内容が宛先が不在を示す内容の場合には（ステップＳ７０２でＹＥＳ）、ステップＳ６０８に進む。
【００８２】
一方、ステップＳ７０２の判別の結果、エラー内容が宛先が不在を示す内容ではない場合には（ステップＳ７０２でＮＯ）、ステップＳ６０２に進む。次いで、ステップＳ６１３で送信失敗を返すこととなる。このように、本実施の形態では、データの送信が失敗した場合に、失敗した内容を示すエラー内容が宛先の不在を示す内容である場合には、再送信を行わない。
【００８３】
Socket API３０５から受け取るエラーとして、例えばLinux（登録商標）等の標準的なＡＰＩを使用している場合、宛先への到達不能を示すENETUNREACHや、接続を試みたがタイムアウトしたことを示すETIMEDOUTがある。このようなエラーが返ってきたときは、宛先との間にネットワークの疎通がないと考えることができ、再送の対象となる。
【００８４】
それ以外のものに関しては、ネットワークの疎通はあるが、通信相手から切断されたり、内部のエラーと考えて再送は行わない。
【００８５】
なお、ETIMEDOUTが返ってくる例として、以下のケースが挙げられる。図１の通信システム１００において、ＩＰｖ６リンクローカルアドレスを用いて画像形成装置１０１がサーバ１０４と通信をしたい場合、最初にＬＡＮ１０２に送信する。
【００８６】
画像形成装置１０１がＬＡＮ１０２に送信すると、応答する機器が全くないため、一定時間経過後にタイムアウトを迎えることになる。この時Socket API３０５はSocket API Wrapper３０２にETIMEDOUTを返すことになる。
【００８７】
また、ENETUNREACHが返ってくる例として、以下のケースが挙げられる。ＩＰｖ４アドレスを用いて画像形成装置１０１がサーバ１１４と通信をする場合、ＬＡＮ１０２のルータ１１１が、ネットワーク１１３を介してサーバ１１４まで到達できないことを検知する。このとき、ルータ１１１は、ENETUNREACHを画像形成装置１０１に送信する。
【００８８】
図８（Ｂ）は、再送する場合にタイムアウト時間を変更する場合の処理の手順を示すフローチャートである。
【００８９】
図８（Ｂ）において、図６のステップＳ６０７の判別の結果、再送フラグが「再送する」に設定されている場合には（ステップＳ６０７でＹＥＳ）、タイムアウト時間を変更し（ステップＳ８０１）、ステップＳ６０８に進む。
【００９０】
ステップＳ８０１において、タイムアウト時間は、初回送信時より短い時間に変更される。これは、再送信時のタイムアウト時間を初回送信時のタイムアウト時間と同じにすると、再送信に失敗した場合にタイムアウトまでの時間が倍になってしまうためである。
【００９１】
なお、初回送信時と再送信時のタイムアウト時間をデフォルトのタイムアウト時間の半分にしておけば、初回送信時と再送信時のタイムアウト時間の合計がデフォルトのタイムアウト時間となる。従って、図８（Ｂ）で示した処理に代え、初回送信時と再送信時のタイムアウト時間をデフォルトのタイムアウト時間の半分に調整するようにしてもよい。
【００９２】
このように、本実施の形態では、データの送信が失敗し、データを再送信する場合には、送信失敗の判断に用いられるタイムアウト時間を変更する。
【００９３】
図９は、図４のテーブル４００の内容をユーザが削除する場合に表示される画面９００を示す図である。
【００９４】
図９において、画面９００には、テーブル４００に設定された宛先とＮＩＣの組が表示される。
【００９５】
そして、削除ボタン９０１，９０２により、ユーザはテーブル４００に設定された宛先とＮＩＣの組を１つずつまたは全て削除することができる。このように、本実施の形態では、テーブル４００に設定された宛先と前記インタフェースとの組は、ユーザにより削除可能である。
【００９６】
この画面９００を設けた理由は、ネットワーク環境を変更したり、トラブルが発生しているネットワーク環境が修復されることによって、元々通信が行えなかったＮＩＣで通信が可能になる場合があるためである。
【００９７】
このように、ネットワーク環境変更前や、トラブル発生中など特殊な状況で宛先とＮＩＣの組が設定された場合、ユーザは画面９００で宛先とＮＩＣの組を削除できる。これにより、ネットワーク通信を可能な限りネットワークプロトコルの自然な判断で行うことができる。
【００９８】
以上説明したように、本実施の形態によれば、選択されたインタフェースからデータを送信し（ステップＳ６０３）、データの送信が失敗した場合に（ステップＳ６０４でＮＯ）、選択されたインタフェースとは異なるインタフェースからデータを送信するので（ステップＳ６０８）、データの送信失敗後に直ちにデータを再送可能となる。
【００９９】
（他の実施の形態）
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）をネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムコードを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【符号の説明】
【０１００】
１００  通信システム
１０１  画像形成装置
１０２，１０３  ＬＡＮ
１１１，１１２  ルータ装置
１１３  ネットワーク
２０３  ＣＰＵ
２０４  ＲＡＭ
２０５  ＲＯＭ
２０６，２０７  ＮＩＣ
２０８  操作パネル
２１１  ＨＤＤ
２１２  不揮発性メモリ
３０２  Socket API Wrapper
３０３  ＮＩＣ選択部
３０４  ＮＩＣ設定部
３０５  Socket API
３０６  ネットワークプロトコル
【図１】
2015185987.tif 000003
【図２】
2015185987.tif 000004
【図３】
2015185987.tif 000005
【図４】
2015185987.tif 000006
【図５】
2015185987.tif 000007
【図６】
2015185987.tif 000008
【図７】
2015185987.tif 000009
【図８】
2015185987.tif 000010
【図９】
2015185987.tif 000011