(57)【要約】【課題】  マルチコネクション通信をサポートしていないサーバに対してマルチコネクション通信を実行した場合、情報処理装置はエラー終了していた。【解決手段】  通信実行指示を受け付けた情報処理装置１０１は、サーバが１０２がマルチコネクション通信をサポートしているか否かを判定する。そしてその判定結果に応じて、情報処理装置１０１は、マルチコネクション通信を実行するか、又は、１つのコネクションを使用して通信を実行するか否かを決定する。【選択図】  図４
2019050623.tif 000002
【特許請求の範囲】
【請求項１】
複数のコネクションを使用して通信するマルチコネクション通信を実行可能な情報処理装置であって、
通信相手である外部装置が前記マルチコネクション通信をサポートしているか否かを判定する判定手段と、
前記判定手段によって前記外部装置が前記マルチコネクション通信をサポートしていると判定された場合、前記外部装置との間で前記マルチコネクション通信を実行し、前記判定手段によって前記外部装置が前記マルチコネクション通信をサポートしていないと判定された場合、前記外部装置との間で１つのコネクションを使用した通信を実行する通信手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記通信手段は、通信相手である外部装置が前記マルチコネクション通信をサポートしているか否かを判定するための通信を実行し、
前記判定手段は、前記通信に対する前記外部装置の応答に基づいて、前記外部装置が前記マルチコネクション通信をサポートしているか否かを判定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記外部装置の前記応答がエラーを示す場合、前記判定手段は、前記外部装置が前記マルチコネクション通信をサポートしていないと判定することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記判定手段によって前記外部装置が前記マルチコネクション通信をサポートしていないと判定された場合、前記通信手段は、１つのコネクションを使用して前記外部装置との通信を実行するか、又は、エラー終了するかを決定するかをエラーの種類に基づいて決定することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
通信の実行指示を受け付ける受付手段を更に備え、
前記判定手段は、前記受付手段が前記実行指示を受け付けたことに従って、前記外部装置が前記マルチコネクション通信をサポートしているか否かを判定することを特徴とする請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
複数のコネクションを使用して通信するマルチコネクション通信を通信相手である外部装置との間で実行する通信手段と、
前記マルチコネクション通信に対する応答を前記外部装置から受信する受信手段と、
前記受信手段が受信した応答がエラーを示さない場合、前記マルチコネクション通信を継続するよう前記通信手段を制御し、前記受信手段が受信した応答がエラーを示す場合、通信方法を前記マルチコネクション通信から１つのコネクションを使用する通信に切り替えるよう前記通信手段を制御する制御手段と、
を備えることを特徴とする情報処理装置。
【請求項７】
前記受信手段が受信した応答がエラーを示す場合、前記制御手段は、１つのコネクションを使用して前記外部装置との通信を実行するか、又は、エラー終了するかを決定するかをエラーの種類に基づいて決定することを特徴とする請求項６に記載の情報処理装置。
【請求項８】
通信の実行指示を受け付ける受付手段を更に備え、
前記通信手段は、前記受付手段が前記実行指示を受け付けたことに従って、前記外部装置との間で前記マルチコネクション通信を実行することを特徴とする請求項５乃至７のいずれか１項に記載の情報処理装置。
【請求項９】
前記通信手段が前記マルチコネクション通信を実行する場合、パケットのヘッダ部には特定のヘッダ情報が含まれ、
前記通信手段が１つのコネクションを使用して通信を実行する場合、パケットのヘッダ部には前記特定のヘッダ情報が含まれないことを特徴とする請求項１乃至８のいずれか１項に記載の情報処理装置。
【請求項１０】
複数のコネクションを使用して通信するマルチコネクション通信を実行可能な情報処理装置であって、
パケットのヘッダ部に前記マルチコネクション通信に関連する特定のヘッダ情報を含めたパケットを、１つのコネクションを使用して外部装置に送信する送信手段と、
前記送信手段が送信したパケットに対する応答パケットを前記外部装置から受信する受信手段と、
前記受信手段が受信した前記応答パケットに基づいて、前記外部装置との間で前記マルチコネクション通信を実行するか、又は、パケットのヘッダ部に前記特定のヘッダ情報を含めずに１つのコネクションを使用して前記外部装置との通信を実行するかを決定する決定手段と、
を備えることを特徴とする情報処理装置。
【請求項１１】
通信の実行指示を受け付ける受付手段を更に備え、
前記送信手段は、前記受付手段が前記実行指示を受け付けたことに従って、前記特定のヘッダ情報を含めたパケットを、１つのコネクションを使用して外部装置に送信することを特徴とする請求項１０記載の情報処理装置。
【請求項１２】
前記応答パケットがエラーを示すパケットではない場合、前記決定手段は、前記マルチコネクション通信を実行すると決定し、前記応答パケットがエラーを示すパケットである場合、前記決定手段は、パケットのヘッダ部に前記特定のヘッダ情報を含めずに１つのコネクションを使用して前記外部装置との通信を実行すると決定することを特徴とする請求項１０又は１１に記載の情報処理装置。
【請求項１３】
前記応答パケットがエラーを示すパケットである場合、前記決定手段は、パケットのヘッダ部に前記特定のヘッダ情報を含めずに１つのコネクションを使用して前記外部装置との通信を実行するか、又は、エラー終了するかを決定するかをエラーの種類に基づいて決定することを特徴とする請求項１２に記載の情報処理装置。
【請求項１４】
前記特定のヘッダ情報は、ＨＴＴＰのＣｏｎｔｅｎｔ−Ｒａｎｇｅであることを特徴とする請求項９乃至１３のいずれか１項に記載の情報処理装置。
【請求項１５】
前記特定のヘッダ情報は、ＨＴＴＰのＲａｎｇｅであることを特徴とする請求項９乃至１３のいずれか１項に記載の情報処理装置。
【請求項１６】
原稿を読み取り画像データを生成する読取手段を更に備え、
前記マルチコネクション通信は、前記画像データを分割し、分割された前記画像データを複数のコネクションを使用して前記外部装置に送信する処理であることを特徴とする請求項１乃至１５のいずれか１項に記載の情報処理装置。
【請求項１７】
印刷手段を更に備え、
前記マルチコネクション通信は、分割された印刷データを複数のコネクションを使用して前記外部装置から取得する処理であり、
前記印刷手段は、前記外部装置から取得した印刷データに基づいて印刷を実行することを特徴とする請求項１乃至１６のいずれか１項に記載の情報処理装置。
【請求項１８】
複数のコネクションを使用して通信するマルチコネクション通信を実行可能な情報処理装置の制御方法であって、
通信相手である外部装置が前記マルチコネクション通信をサポートしているか否かを判定する判定ステップと、
前記判定ステップで前記外部装置が前記マルチコネクション通信をサポートしていると判定された場合、前記外部装置との間で前記マルチコネクション通信を実行し、前記判定ステップで前記外部装置が前記マルチコネクション通信をサポートしていないと判定された場合、前記外部装置との間で１つのコネクションを使用した通信を実行する通信ステップと、
を有することを特徴とする情報処理装置の制御方法。
【請求項１９】
情報処理装置の制御方法であって、
複数のコネクションを使用して通信するマルチコネクション通信を通信相手である外部装置との間で実行する通信ステップと、
前記マルチコネクション通信に対する応答を前記外部装置から受信する受信ステップと、
前記受信ステップで受信した応答がエラーを示さない場合、前記マルチコネクション通信を継続し、前記受信ステップで受信した応答がエラーを示す場合、通信方法を前記マルチコネクション通信から１つのコネクションを使用する通信に切り替えるよう制御する制御ステップと、
を有することを特徴とする情報処理装置の制御方法。
【請求項２０】
複数のコネクションを使用して通信するマルチコネクション通信を実行可能な情報処理装置の制御方法であって、
パケットのヘッダ部に前記マルチコネクション通信に関連する特定のヘッダ情報を含めたパケットを、１つのコネクションを使用して外部装置に送信する送信ステップと、
前記送信ステップで送信したパケットに対する応答パケットを前記外部装置から受信する受信ステップと、
前記受信ステップで受信した前記応答パケットに基づいて、前記外部装置との間で前記マルチコネクション通信を実行するか、又は、パケットのヘッダ部に前記特定のヘッダ情報を含めずに１つのコネクションを使用して前記外部装置との通信を実行するかを決定する決定ステップと、
を有することを特徴とする情報処理装置の制御方法。
【請求項２１】
コンピュータを、請求項１乃至１７のいずれか１項に記載の情報処理装置として動作させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理装置の制御方法、及びプログラムに関する。
【背景技術】
【０００２】
ＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）では、情報処理装置はサーバとの間で１つのコネクションを確立して、データ通信を実行する。このデータ通信をより効率的に実行するための技術として、情報処理装置とサーバとの間で複数のコネクションを確立して、データを分割して分割したデータを複数のコネクションを使用して通信する技術が知られている。なお、以降の説明では、分割データを複数のコネクションを使用して通信することをマルチコネクション通信と呼ぶ。
【０００３】
マルチコネクション通信を実行する場合、複数のコネクションを並列して通信に使用できるため、１つのコネクションを使用してデータを通信する場合に比べてより効率的に実行することができる。特許文献１には、情報処理装置が最大接続数をサーバに通知し、通知された最大接続数に従って、サーバが情報処理装置との間で通信を実行する技術が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−９５０９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
例えば分割データを情報処理装置が複数のコネクションを使用してサーバに送信する場合、情報処理装置はＨＴＴＰパケットのヘッダ部にＣｏｎｔｅｎｔ−Ｒａｎｇｅ情報を含めて分割データをサーバに送信する。このＨＴＴＰパケットを受信したサーバは、ヘッダ部のＣｏｎｔｅｎｔ−Ｒａｎｇｅ情報を参照することで、複数のコネクションを使用して受信した複数の分割データを元の１つのデータに結合することができる。
【０００６】
しかしながら、Ｃｏｎｔｅｎｔ−Ｒａｎｇｅ情報等の特定のヘッダ情報はサポートが必須の情報ではないため、サーバによってはマルチコネクション通信をサポートしていないことになる。これに対して特許文献１の場合、サーバがマルチコネクション通信をサポートしていることを前提としている。従って、特許文献１の情報処理装置がマルチコネクション通信をサポートしていないサーバに対してマルチコネクション通信を実行すると、エラー終了することになり、情報処理装置がサーバと通信を実行できないことになってしまう。
【０００７】
そこで本発明では、サーバがマルチコネクション通信をサポートしていない場合に、マルチコネクション通信ではなく、１つのコネクションを使用した通信を実行する情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決するために、本発明が提供する情報処理装置は、複数のコネクションを使用して通信するマルチコネクション通信を実行可能な情報処理装置であって、通信相手である外部装置が前記マルチコネクション通信をサポートしているか否かを判定する判定手段と、前記判定手段によって前記外部装置が前記マルチコネクション通信をサポートしていると判定された場合、前記外部装置との間で前記マルチコネクション通信を実行し、前記判定手段によって前記外部装置が前記マルチコネクション通信をサポートしていないと判定された場合、１つのコネクションを使用して前記実行指示が示す通信を実行する通信手段と、を備えることを特徴とする。
【０００９】
また、本発明が提供する情報処理装置は、複数のコネクションを使用して通信するマルチコネクション通信を通信相手である外部装置との間で実行する通信手段と、前記マルチコネクション通信に対する応答を前記外部装置から受信する受信手段と、前記受信手段が受信した応答がエラーを示さない場合、前記マルチコネクション通信を継続するよう前記通信手段を制御し、前記受信手段が受信した応答がエラーを示す場合、通信方法を前記マルチコネクション通信から１つのコネクションを使用する通信に切り替えることで前記実行指示が示す通信を実行するよう前記通信手段を制御する制御手段と、を備えることを特徴とする。
【００１０】
また、本発明が提供する情報処理装置は、複数のコネクションを使用して通信するマルチコネクション通信を実行可能な情報処理装置であって、パケットのヘッダ部に前記マルチコネクション通信に関連する特定のヘッダ情報を含めたパケットを、１つのコネクションを使用して外部装置に送信する送信手段と、前記送信手段が送信したパケットに対する応答パケットを前記外部装置から受信する受信手段と、前記受信手段が受信した前記応答パケットに基づいて、前記外部装置との間で前記マルチコネクション通信を実行するか、又は、パケットのヘッダ部に前記特定のヘッダ情報を含めずに１つのコネクションを使用して前記実行指示が示す通信を実行するかを決定する決定手段と、を備えることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、サーバがマルチコネクション通信をサポートしていない場合に、マルチコネクション通信ではなく、１つのコネクションを使用した通信を実行する。これにより、サーバがマルチコネクション通信をサポートしていない場合であっても、エラー終了するのではなく通信を実行できる。
【図面の簡単な説明】
【００１２】
【図１】システム全体を示す図である。
【図２】情報処理装置１０１の構成を示す図である。
【図３】マルチコネクション通信を実行するか否かを設定するための画面を示す図である。
【図４】実施形態１で実行される処理を示すフローチャートである。
【図５】データ送信処理に関する画面を示す図である。
【図６】データを送信する際のマルチコネクション通信を示す図である。
【図７】データを取得する際のマルチコネクション通信を示す図である。
【図８】実施形態２で実行される処理を示すフローチャートである。
【図９】実施形態２で実行されるマルチコネクション通信を説明する図である。
【図１０】情報処理装置１０１が記憶するテーブル１０００を示す図である。
【発明を実施するための形態】
【００１３】
以下、本発明を実施するための最良の形態について図面を用いて説明する。なお、以下の実施の形態は特許請求の範囲に係る発明を限定するものでなく、また実施の形態で説明されている特徴の組み合わせの全てが発明の解決手段に必須のものとは限らない。
【００１４】
（実施形態１）
図１を用いて本実施形態に係る情報処理システムの構成を説明する。情報処理システムは、情報処理装置１０１とサーバ１０２を備え、情報処理装置１０１とサーバ１０２はネットワーク１０３を介して互いに通信可能に接続されている。
【００１５】
次に、図２を用いて情報処理装置１０１のハードウェア構成について説明する。情報処理装置１０１は、コピー機能、プリント機能、スキャン機能、送信機能等を備える印刷装置である。なお、本実施形態では、情報処理装置１０１として印刷装置を例にして説明するが、印刷装置に限らず、サーバ１０２と通信を実行できる装置（例えばＰＣ、携帯電話、スマートフォン等）であればよい。
【００１６】
ＣＰＵ２０１は、ＲＯＭ２０２に記憶された制御プログラムを読み出して、情報処理装置１０１全体の動作を制御する。ＲＡＭ２０３は、ＣＰＵ２０１の主メモリ、ワークエリア等の一時記憶領域として用いられる。ＨＤＤ２０４は、フォントデータ、エミュレーションプログラム、フォームデータ等の各種データを記憶する。
【００１７】
なお、情報処理装置１０１の場合、１つのＣＰＵ２０１が後述するフローチャートに示す各処理を実行するものとするが、他の態様であっても構わない。例えば、複数のＣＰＵが協働して後述するフローチャートに示す各処理を実行するようにすることもできる。
【００１８】
プリンタ２０５は、印刷ジョブやスキャナ２０６が生成した画像データに基づいて印刷処理を実行する。スキャナ２０６は、原稿を読み取って画像データを生成する。操作部２０７にはタッチパネル機能を有する液晶表示部やキーボードなどが備えられている。ユーザは操作部２０７を介して情報処理装置１０１に対する操作、指示を入力することができる。ネットワークＩ／Ｆ２０８は、ネットワーク１０３を介してサーバ１０２等の外部装置との通信を実行する。
【００１９】
情報処理装置１０１は、あるデータをサーバ１０２に送信する場合に、サーバ１０２との間で複数のコネクション（ＨＴＴＰコネクション）を確立して、この複数のコネクションを使用してデータを送信することができる。この際、送信対象のデータは所定のサイズに分割され、分割データが複数のコネクションを使用して並列してサーバ１０２に送信される。サーバ１０２は、受信した分割データを結合して、元のデータに戻すことができる。また、情報処理装置１０１は、あるデータをサーバ１０２から取得する場合にも、サーバ１０２との間で複数のコネクションを確立して、この複数のコネクションを使用してデータを取得することができる。
【００２０】
このように、分割データを複数のコネクションを使用して通信する通信方法のことを、以降の説明ではマルチコネクション通信と呼ぶこととする。情報処理装置１０１はマルチコネクション通信をサポートしていて、マルチコネクション通信を実行可能である。マルチコネクション通信を実行ことによって、複数のコネクションを並列して通信に使用できるため、１つのコネクションを使用してデータを通信する場合に比べて通信をより効率的に実行することができる。しかしながら、通信相手である外部装置（例えばサーバ１０２）が、必ずしもマルチコネクション通信をサポートしているとは限らない。そこで本実施形態の情報処理装置１０１は、外部装置がマルチコネクション通信をサポートしていないと判定されたことに応じて、通信方法を１つのコネクションを使用する通信に切り替えることを特徴とする。情報処理装置１０１が実行する処理は、後述のフローチャートで詳しく説明する。
【００２１】
図３の画面３００は、操作部２０７が表示する画面である。この画面３００は、情報処理装置１０１がマルチコネクション通信を実行するか否かを、ユーザが設定するために使用する画面である。ボタン３０１をユーザが選択すると、「マルチコネクション通信を実行する」という設定がＨＤＤ２０４に記憶される。一方、ボタン３０２をユーザが選択すると、「マルチコネクション通信を実行しない」という設定がＨＤＤ２０４に記憶される。
【００２２】
情報処理装置１０１がマルチコネクション通信を実行すると、ＣＰＵ２０１の処理負荷が増加するため、ＣＰＵ２０１の処理負荷を軽減することを優先する場合には、ユーザはボタン３０２を選択すればよい。一方、通信の高速化を優先する場合には、ユーザはボタン３０１を選択すればよい。
【００２３】
以上の説明の通り、画面３００によってユーザはマルチコネクション通信を実行するか否かを設定することができる。なお、本実施形態では画面３００の設定はどのユーザでも行えるものとするが、情報処理装置にユーザ認証機能を導入することで特定のユーザ（例えば管理者権限を有するユーザ）のみが画面３００の設定を行えるようにしてもよい。
【００２４】
次に、マルチコネクション通信を行う場合に情報処理装置１０１が実行する処理を、図４のフローチャートを用いて説明する。図４のフローチャートに示す各ステップは、ＣＰＵ２０１がＲＯＭ２０２等のメモリに格納されたプログラムをＲＡＭ２０３に展開して実行することによって処理される。また、マルチコネクション通信を実行するか否かの設定が、画面３００を介してユーザに設定されていて、設定された内容がＨＤＤ２０４に記憶されている。
【００２５】
まずステップＳ４０１において、ＣＰＵ２０１は、データ通信の実行指示をユーザから受け付ける。図５の画面５００は、スキャナ２０６が原稿を読み取って生成したスキャン画像（読取画像）を、サーバ１０２等の外部装置にアップロードする際に使用される画面であり、操作部２０７が表示する。例えばこの画面５００のボタン５０１がユーザによって押下された場合に、ステップＳ４０１において、データ通信の実行指示をＣＰＵ２０１が受け付ける。
【００２６】
ステップＳ４０１でデータ通信の実行指示を受け付けると、ステップＳ４０２において、ＣＰＵ２０１はマルチコネクション通信を実行するか否かを判定する。ステップＳ４０２の判定は、画面３００を介して設定され、ＨＤＤ２０４に記憶されている設定をＣＰＵ２０１が参照することで行われる。「マルチコネクション通信を実行する」という設定がＨＤＤ２０４に記憶されていれば、マルチコネクション通信を実行するとＣＰＵ２０１が判定し、ステップＳ４０３に進む。一方、「マルチコネクション通信を実行しない」という設定がＨＤＤ２０４に記憶されていれば、マルチコネクション通信を実行しないとＣＰＵ２０１が判定し、ステップＳ４０９に進む。
【００２７】
次にステップＳ４０３において、ネットワークＩ／Ｆ２０８は、複数のＨＴＴＰコネクションをサーバ１０２との間で確立し、この複数のＨＴＴＰコネクションを使用してデータ通信を実行する。ステップＳ４０３で実行されるデータ通信を、図６を用いて詳しく説明する。
【００２８】
情報処理装置１０１は、マルチコネクション通信を実行する場合に５本のＨＴＴＰコネクションを確立することとする。なお、この５本という数は単なる例示であり、装置の性能に応じた他の数でもよいし、ユーザに設定された数でもよい。図５のボタン５０１がユーザによって押下されると、情報処理装置１０１は、スキャン画像をサーバ１０２にアップロードするために、スキャン画像を所定のサイズに分割して、分割データを５本のＨＴＴＰコネクションを使用してサーバ１０２に送信する。パケットのヘッダ部６０１には、Ｃｏｎｔｅｎｔ−Ｒａｎｇｅ情報が含まれていて、１つの分割データがデータ全体の何バイト目であるかを示している。ヘッダ部６０１の場合、０バイト目から９９９バイト目の分割データを送信することを示している。分割データを受信したサーバ１０２は、Ｃｏｎｔｅｎｔ−Ｒａｎｇｅ情報を参照することで、分割データを元の１つのデータに結合することができる。図６では記載を省略したが、Ｓ４０３で送信される分割データにはすべてＣｏｎｔｅｎｔ−Ｒａｎｇｅ情報が指定される。
【００２９】
次にステップＳ４０４において、ＣＰＵ２０１は、ステップＳ４０３で実行した通信に対する応答パケットをサーバ１０２から受信したか否かを判定する。応答パケットを受信したとＣＰＵ２０１が判定すると、ステップＳ４０５に進み、応答パケットを受信していないとＣＰＵ２０１が判定すると、応答パケットを受信するまで待機する。
【００３０】
サーバ１０２から応答パケットを受信すると、ステップＳ４０５において、ＣＰＵ２０１は受信した応答パケットがエラー応答を示すパケットであるか否かを判定する。サーバ１０２がＣｏｎｔｅｎｔ−Ｒａｎｇｅ情報をサポートしている場合、受信成功を示す応答パケットがサーバ１０２から返される。受信成功を示す応答パケットとは、ＨＴＴＰの場合、ステータスコードに「２００：ＯＫ」や「２０１：Ｃｒｅａｔｅｄ」を含むＨＴＴＰパケットのことである。このような受信成功を示す応答パケットをサーバ１０２から受信した場合、受信した応答パケットがエラー応答を示すパケットではないとＣＰＵ２０１が判定し、ステップＳ４０６に進む。
【００３１】
ステップＳ４０６において、ネットワークＩ／Ｆ２０８は、確立済みの複数のＨＴＴＰコネクションを使用して、残りの分割データをサーバ１０２に送信する。言い換えれば、サーバ１０２がマルチコネクション通信をサポートしていることがわかっているため、情報処理装置１０１はマルチコネクション通信を継続する。なお、ステップＳ４０６で実行される通信は、ステップＳ４０３と同様にパケットのヘッダ部にＣｏｎｔｅｎｔ−Ｒａｎｇｅ情報が含まれる。
【００３２】
一方、ステップＳ４０５において受信した応答パケットがエラー応答を示すパケットであるとＣＰＵ２０１が判定すると、ステップＳ４０７に進む。ステップＳ４０７において、ＣＰＵ２０１は、通信方法を切り替えるか否かを判定する。
【００３３】
サーバ１０２が特定のヘッダ情報（例えばＣｏｎｔｅｎｔ−Ｒａｎｇｅ）をサポートしていない場合、情報処理装置１０１は、エラー応答をサーバ１０２から受信する。受信したエラー応答がステータスコードに「４００：Ｂａｄ  Ｒｅｑｕｅｓｔ」や「５０１：Ｎｏｔ  Ｉｍｐｌｅｍｅｎｔｅｄ」を含む応答である場合、マルチコネクション通信を使わなければ情報処理装置１０１はサーバ１０２と通信を実行できる可能性が高い。そこでステップＳ４０７では、受信したエラー応答の種類に基づいて、通信方法を切り替えるか否かをＣＰＵ２０１が判定する。
【００３４】
「４００：Ｂａｄ  Ｒｅｑｕｅｓｔ」や「５０１：Ｎｏｔ  Ｉｍｐｌｅｍｅｎｔｅｄ」のような特定のエラー応答をサーバ１０２から受信した場合、ステップＳ４０７において通信方法を切り替えるとＣＰＵ２０１が判定して、ステップＳ４０９に進む。一方、ステータスコード「５００：Ｉｎｔｅｒｎａｌ  Ｓｅｒｖｅｒ  Ｅｒｒｏｒ」のようなエラー応答をサーバ１０２から返された場合は、通信方法を切り替えたとしても情報処理装置１０１はサーバ１０２と通信を実行できない。従って、「５００：Ｉｎｔｅｒｎａｌ  Ｓｅｒｖｅｒ  Ｅｒｒｏｒ」のような特定のエラー応答をサーバ１０２から受信した場合は、ステップＳ４０７において通信方法を切り替えないとＣＰＵ２０１が判定して、ステップＳ４０８に進む。
【００３５】
ステップＳ４０８において、ＣＰＵ２０１は、エラー終了する。ステップＳ４０８においてエラー終了する場合、エラー終了した旨を操作部２０７に表示してもよいし、所定の外部装置に通知してもよい。
【００３６】
次にステップＳ４０９について説明する。ステップＳ４０９において、ネットワークＩ／Ｆ２０８は、１つのＨＴＴＰコネクションを使用してサーバ１０２との間でデータ通信を実行する。このとき使用するＨＴＴＰコネクションは、Ｓ４０３で確立済みの複数のＨＴＴＰコネクションのいずれか１つを使用してもよいし、サーバ１０２との間で新たなＨＴＴＰコネクションを１つ確立してもよい。本実施形態では、ステップＳ４０９において１つのＨＴＴＰコネクションを使用してスキャン画像がサーバ１０２に送信される。マルチコネクション通信をサポートしていないサーバ１０２は、ステップＳ４０３で送信された分割データを破棄している可能性が高いため、ステップＳ４０９ではスキャン画像の先頭から送信される。また、ステップＳ４０９で実行される通信は、Ｃｏｎｔｅｎｔ−Ｒａｎｇｅ情報等のマルチコネクション通信に関連する特定のヘッダ情報を含まない。
【００３７】
なお、ステップＳ４０９の処理は、ステップＳ４０２においてマルチコネクション通信を実行しないとＣＰＵ２０１が判定した場合にも実行される。ステップＳ４０２においてマルチコネクション通信を実行しないと判定された場合は、複数のＨＴＴＰコネクションがサーバ１０２との間で確立していない。ネットワークＩ／Ｆ２０８はサーバ１０２との間でＨＴＴＰコネクションを１つ確立して、通信を実行する。
【００３８】
以上の説明の通り、情報処理装置１０１は、サーバがマルチコネクション通信をサポートしていないと判定したことに応じて、通信方法を１つのＨＴＴＰコネクションを使用する通信に切り替えることができる。これにより、サーバがマルチコネクション通信をサポートしていない場合であっても、エラー終了することなく、サーバとのデータ通信を実行することができる。
【００３９】
なお、図４のフローチャートの説明では、マルチコネクション通信の一例として情報処理装置１０１がサーバ１０２にデータを送信するデータ送信処理を挙げたが、図４のフローチャートは送信処理に限定されるものではない。情報処理装置１０１がサーバ１０２からデータを取得するデータ取得処理にも、図４のフローチャートを適用することができる。
【００４０】
情報処理装置１０１がサーバ１０２からデータを取得する場合に実行される処理を、図４と図７を用いて説明する。図４のフローチャートについては、先に説明した送信処理と異なる処理を実行するステップを詳しく説明し、同様の処理を実行するステップの説明は省略する。また、データ取得処理として、サーバ１０２から情報処理装置１０１が印刷データを取得してプリンタ２０５が印刷を実行する処理を例にして説明する。
【００４１】
ステップＳ４０３において、ネットワークＩ／Ｆ２０８は、複数のＨＴＴＰコネクションをサーバ１０２との間で確立し、この複数のＨＴＴＰコネクションを使用して印刷データを取得するためのＨＴＴＰのＧＥＴ要求をサーバ１０２に送信する。このＧＥＴ要求の送信を、図７に示す。サーバ１０２に送信されるパケットのヘッダ部７０１には、Ｒａｎｇｅ情報が含まれている。図７では記載を省略したが、Ｓ４０３で送信されるＧＥＴ要求のパケットにはすべてＲａｎｇｅ情報を含んでいる。このＲａｎｇｅ情報は、取得する印刷データの範囲を指定するための情報であり、ヘッダ部７０１の場合、０バイト目から９９９バイト目の印刷データをサーバ１０２に要求していることになる。なお、Ｒａｎｇｅ情報もサポートが必須の情報ではないため、Ｃｏｎｔｅｎｔ−Ｒａｎｇｅ情報と同様に、サーバによってはＲａｎｇｅ情報を使用したマルチコネクション通信をサポートしていない場合がある。
【００４２】
図６のＧＥＴ要求を受信したサーバ１０２がＲａｎｇｅ情報をサポートしている場合、つまりマルチコネクション通信をサポートしている場合、サーバ１０２は、情報処理装置１０１にＲａｎｇｅ情報によって指定された範囲の印刷データを送信する。この応答を受信した情報処理装置１０１は、ステップＳ４０５において受信した応答はエラー応答ではないと判定し、ステップＳ４０６において残りの印刷データを取得する際にもマルチコネクション通信を実行する。印刷データ全体の受信が完了すると、受信した印刷データに基づいて、プリンタ２０５が印刷処理を実行する。
【００４３】
一方、図６のＧＥＴ要求を受信したサーバ１０２がＲａｎｇｅ情報をサポートしていない場合、つまりマルチコネクション通信をサポートしていない場合、サーバ１０２は、エラー応答を情報処理装置に返す。このときサーバ１０２が送信するエラー応答は、図４の説明と同様にステータスコードに「４００：Ｂａｄ  Ｒｅｑｕｅｓｔ」や「５０１：Ｎｏｔ  Ｉｍｐｌｅｍｅｎｔｅｄ」を含むエラー応答である。この応答を受信した情報処理装置１０１は、ステップＳ４０７において通信方法を切り替えると判定し、ステップＳ４０９において１つのＨＴＴＰコネクションを使用して印刷データをサーバ１０２から取得する。ステップＳ４０９では、情報処理装置１０１がサーバ１０２に送信するＧＥＴ要求にはＲａｎｇｅ情報が含まれない。印刷データの受信が完了すると、受信した印刷データに基づいて、プリンタ２０５が印刷処理を実行する。
【００４４】
以上の説明の通り、データ送信処理とデータ取得処理のどちらであったとしても、情報処理装置１０１は、マルチコネクション通信をサポートしていないサーバとの通信方法を１つのＨＴＴＰコネクションを使用する通信に切り替えることができる。
【００４５】
（実施形態２）
実施形態１では、ステップＳ４０３において複数のＨＴＴＰコネクションを確立してマルチコネクション通信を実行し、そしてサーバ１０２から受信した応答に基づいて、サーバ１０２がマルチコネクション通信をサポートしているか否かを判定する構成を説明した。これに対して本実施形態では、実施形態１の変形例として、まずは１つのコネクションを使用した通信を実行し、その応答に基づいてサーバ１０２がマルチコネクション通信をサポートしているか否かを判定する構成を説明する。
【００４６】
本実施形態においてマルチコネクション通信を行う場合に情報処理装置１０１が実行する処理を、図８のフローチャートを用いて説明する。図８のフローチャートに示す各ステップは、ＣＰＵ２０１がＲＯＭ２０２等のメモリに格納されたプログラムをＲＡＭ２０３に展開して実行することによって処理される。なお、図８の各ステップのうち、図４のフローチャートと同じ番号のステップは図４と同様の処理を実行するため、詳しい説明は省略する。
【００４７】
ステップＳ４０２においてマルチコネクション通信を実行するとＣＰＵ２０１が判定すると、ステップＳ８０１に進む。そしてステップＳ８０１において、ネットワークＩ／Ｆ２０８は、１つのＨＴＴＰコネクションをサーバとの間で確立して、この１つのＨＴＴＰコネクションを使用してデータ通信を実行する。ステップＳ８０１で実行されるデータ通信を、図９（ａ）を用いて詳しく説明する。
【００４８】
情報処理装置１０１は、図４のステップＳ４０３及び図７とは異なり、複数のＨＴＴＰコネクションではなく１つのＨＴＴＰコネクションをサーバ１０２との間で確立する。図９（ａ）は、情報処理装置１０１がデータ（例えばスキャン画像）をサーバ１０２に送信する処理を例に示している。情報処理装置１０１が送信する分割データのヘッダ部９０１には、マルチコネクション通信に関連する特定のヘッダ情報（図９の場合はＣｏｎｔｅｎｔ−Ｒａｎｇｅ情報）が含まれていている。従って、サーバ１０２から受信する応答に基づいて、情報処理装置１０１はサーバ１０２がマルチコネクション通信をサポートしているか否かを判定することができる。
【００４９】
ステップＳ８０１において特定のヘッダ情報（Ｃｏｎｔｅｎｔ−Ｒａｎｇｅ情報）を含むデータを１つのＨＴＴＰコネクションを使用してサーバ１０２に送信すると、情報処理装置１０１はその通信に対する応答をサーバ１０２から受信する。そしてステップＳ４０５において、ＣＰＵ２０１は、受信した応答パケットがエラー応答を示すパケットであるか否かを判定する。
【００５０】
受信した応答パケットがエラー応答を示すパケットではないとＣＰＵ２０１が判定すると、ステップＳ８０２に進み、ネットワークＩ／Ｆ２０８がマルチコネクション通信を実行する。ステップＳ８０２では、図９（ｂ）に示すように、情報処理装置１０１はサーバ１０２との間で複数のＨＴＴＰコネクションを確立して、そしてこの複数のＨＴＴＰコネクションを使用してデータ通信を実行する。ヘッダ部９１１には、Ｃｏｎｔｅｎｔ−Ｒａｎｇｅ情報が含まれる。
【００５１】
一方、受信した応答パケットがエラー応答を示すパケットであり、かつ、エラー内容が特定のエラー（「４００：Ｂａｄ  Ｒｅｑｕｅｓｔ」や「５０１：Ｎｏｔ  Ｉｍｐｌｅｍｅｎｔｅｄ」）であれば、ステップＳ８０３に進む。ステップＳ８０３では、図４のステップＳ４０９と同様に、１つのＨＴＴＰを使用してサーバ１０２との間でデータ通信を実行する。このとき、サーバ１０２はマルチコネクション通信をサポートしていないため、ステップＳ８０１とは異なり、Ｃｏｎｔｅｎｔ−Ｒａｎｇｅ情報等の特定のヘッダ情報を使用せずにデータ通信が実行される。
【００５２】
本実施形態と実施形態１を比較すると、ステップＳ８０１において、複数のＨＴＴＰコネクションではなく１つのＨＴＴＰコネクションを使用する点が異なる。ステップＳ８０１において、複数のＨＴＴＰコネクションではなく１つのＨＴＴＰコネクションを使用することで、以下の効果が得られる。
【００５３】
複数のＨＴＴＰコネクションを使用する通信は情報処理装置１０１とサーバ１０２の双方の処理負荷を増加させることになるため、出来る限りこの処理負荷を軽減することが望ましい。そこでサーバ１０２がマルチコネクション通信をサポートしているか否かを判定するまでは１つのＨＴＴＰコネクションを使用する通信を実行することで、情報処理装置１０１とサーバ１０２の双方の処理負荷を軽減することができる。
【００５４】
（実施形態３）
図４及び図８のステップＳ４０７では、受信したエラー応答の種類に基づいて、１つのＨＴＴＰコネクションを使用する通信を実行するか、又は、エラー終了するかを切り替えているが、他の形態であってもよい。例えば、ステップＳ４０５においてエラー応答を受信したとＣＰＵ２０１が判定した場合に、エラー応答の種類に関わらず、通信方法をマルチコネクション通信から１つのＨＴＴＰコネクションを使用する通信に一律切り替えてもよい。
【００５５】
（実施形態４）
上述した各実施形態では、データ通信の実行指示をユーザから受け付けるたびにサーバがマルチコネクション通信をサポートしているか否かを判定しているが、他の形態であってもよい。例えば、初めて通信する際はサーバがマルチコネクション通信をサポートしているか否かを判定し、その判定結果とサーバを示す識別情報とを対応付けてＨＤＤ２０４等のメモリに記憶してもよい。そして２回目以降の通信を実行するときは、ＨＤＤ２０４等のメモリに記憶している情報を参照して、マルチコネクション通信を実行するか否かを決定してもよい。
【００５６】
図１０のテーブル１０００は、一度通信したサーバがマルチコネクション通信をサポートしているか否かを情報処理装置１０１が記憶するためのテーブルであり、ＨＤＤ２０４に記憶される。図４や図８のステップＳ４０４でサーバから応答を受信した場合に、その応答がエラーを示す応答でなければ、情報処理装置１０１は通信相手のサーバがマルチコネクション通信をサポートしているとテーブル１０００に記憶する。一方、受信したエラーを示す応答であれば、情報処理装置１０１は通信相手のサーバがマルチコネクション通信をサポートしていないとテーブル１０００に記憶する。
【００５７】
項目１００１は、サーバを示す識別情報を記憶する。項目１００２と項目１００３は、データ送信処理とデータ取得処理のそれぞれについて、サーバがマルチコネクション通信をサポートしているか否かを記憶する。データ送信処理とデータ取得処理を分けて記憶しているのは、夫々で使用するヘッダ情報が異なるためであり、サーバによってはどちらか一方しかサポートしていない可能性があるためである。
【００５８】
例えば図４や図８のステップＳ４０２でマルチコネクション通信を実行すると判定された場合に、テーブル１０００を参照して、通信相手であるサーバがマルチコネクション通信をサポートしているか否かを判定する。通信相手であるサーバを示す情報がテーブル１０００に記憶されていれば、記憶されている判定結果に従って、マルチコネクション通信を実行するか、あるいはマルチコネクション通信を実行しないかを決定すればよい。これにより、マルチコネクション通信をサポートしてないサーバと２回目以降の通信を実行する場合に、無駄な通信を実行すること（マルチコネクション通信をサポートしてないサーバに対する図４のステップＳ４０３や図８のステップＳ８０１の実行）を防止できる。
【００５９】
一方、サーバを示す情報がテーブル１０００に記憶されていない場合（例えば初めて通信する場合）は、図４のステップＳ４０３や図８のステップＳ８０１の処理を実行して、サーバがマルチコネクション通信をサポートしているか否かを判定すればよい。そしてその判定結果をテーブル１０００に記憶して、次回以降の通信を実行する際に記憶した情報を参照すればよい。
【００６０】
（その他の実施形態）
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００６１】
１０１  情報処理装置
１０２  サーバ
２０１  ＣＰＵ
２０２  ＲＯＭ
２０３  ＲＡＭ
２０４  ＨＤＤ
２０８  ネットワークＩ／Ｆ
【図１】
2019050623.tif 000003
【図２】
2019050623.tif 000004
【図３】
2019050623.tif 000005
【図４】
2019050623.tif 000006
【図５】
2019050623.tif 000007
【図６】
2019050623.tif 000008
【図７】
2019050623.tif 000009
【図８】
2019050623.tif 000010
【図９】
2019050623.tif 000011
【図１０】
2019050623.tif 000012