特許第6015360号(P6015360)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ブラザー工業株式会社の特許一覧

<>
  • 特許6015360-通信装置および通信プログラム 図000002
  • 特許6015360-通信装置および通信プログラム 図000003
  • 特許6015360-通信装置および通信プログラム 図000004
  • 特許6015360-通信装置および通信プログラム 図000005
  • 特許6015360-通信装置および通信プログラム 図000006
  • 特許6015360-通信装置および通信プログラム 図000007
  • 特許6015360-通信装置および通信プログラム 図000008
  • 特許6015360-通信装置および通信プログラム 図000009
  • 特許6015360-通信装置および通信プログラム 図000010
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6015360
(24)【登録日】2016年10月7日
(45)【発行日】2016年10月26日
(54)【発明の名称】通信装置および通信プログラム
(51)【国際特許分類】
   G06F 13/00 20060101AFI20161013BHJP
   H04L 12/28 20060101ALI20161013BHJP
【FI】
   G06F13/00 353C
   H04L12/28 200Z
【請求項の数】11
【全頁数】17
(21)【出願番号】特願2012-242302(P2012-242302)
(22)【出願日】2012年11月2日
(65)【公開番号】特開2014-92889(P2014-92889A)
(43)【公開日】2014年5月19日
【審査請求日】2015年10月20日
(73)【特許権者】
【識別番号】000005267
【氏名又は名称】ブラザー工業株式会社
(74)【代理人】
【識別番号】110000110
【氏名又は名称】特許業務法人快友国際特許事務所
(72)【発明者】
【氏名】松田 宗久
【審査官】 新田 亮
(56)【参考文献】
【文献】 特開2010−251846(JP,A)
【文献】 特開2006−238364(JP,A)
【文献】 特開2004−102443(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/00
H04L 12/28
(57)【特許請求の範囲】
【請求項1】
マルチセッションによって通信するクライアントアプリケーションを1つ以上備えているデータ処理装置と、通信回線を介して通信可能に接続されている通信装置であって、
前記クライアントアプリケーションとの間で前記通信回線を介してセッションを確立し、確立した前記セッションによってHTTP要求を前記クライアントアプリケーションから受信する受信手段と、
前記受信手段が受信した前記HTTP要求に対するHTTP応答を、前記セッションによって前記クライアントアプリケーションへ送信する送信手段と、
を備え、
前記送信手段は、前記HTTP要求を受信する際に用いた前記通信回線がマルチセッションが可能でない回線である場合には、前記HTTP応答を前記セッションによって前記クライアントアプリケーションへ送信した後に前記セッションを切断する処理を前記データ処理装置に実行させる第1切断指示情報を、前記データ処理装置へ送信することを特徴とする通信装置。
【請求項2】
前記マルチセッションが可能でない前記通信回線は、ユニバーサルシルアルバス(USB)であることを特徴とする請求項1に記載の通信装置。
【請求項3】
前記第1切断指示情報は、前記HTTP応答が備えているHTTPヘッダに含まれている情報であることを特徴とする請求項1または2に記載の通信装置。
【請求項4】
前記送信手段は、前記HTTP要求を受信する際に用いた前記通信回線がマルチセッションが可能でない回線である場合には、前記HTTP応答の前記HTTPヘッダで指定されているメッセージであってコネクションに関するメッセージの内容を、コネクションをクローズする内容に書き換えることを特徴とする請求項3に記載の通信装置。
【請求項5】
前記送信手段は、前記HTTP応答がWebページを記述する内容の応答である場合には、前記第1切断指示情報を前記データ処理装置へ送信しないことを特徴とする請求項1〜4の何れか1項に記載の通信装置。
【請求項6】
前記送信手段は、前記クライアントアプリケーションとの間の前記セッションが維持されている場合に、前記HTTP要求を予め定められた所定時間の間受信しなかった場合には、前記セッションを切断する処理を前記データ処理装置に実行させる第2切断指示情報を前記データ処理装置へ送信することを特徴とする請求項1〜5の何れか1項に記載の通信装置。
【請求項7】
前記送信手段は、前記HTTP要求を受信する際に用いた前記通信回線がマルチセッションが可能な回線である場合には、前記第1切断指示情報を前記データ処理装置へ送信しないことを特徴とする請求項1〜6の何れか1項に記載の通信装置。
【請求項8】
前記通信装置はWebサーバを備えており、
前記クライアントアプリケーションはWebブラウザであることを特徴とする請求項1〜7の何れか1項に記載の通信装置。
【請求項9】
前記通信装置は、プロキシをさらに備えており、
前記受信手段は、前記プロキシと前記Webサーバとの間のソケットを作成し、
前記送信手段は、前記第1切断指示情報を前記データ処理装置へ送信すると共に、前記ソケットを消滅させることを特徴とする請求項8に記載の通信装置。
【請求項10】
前記受信手段は、前記USBが備える複数のエンドポイントのうちの1のエンドポイントを介して、複数の前記クライアントアプリケーションの各々から前記HTTP要求を受信することを特徴とする請求項2〜9の何れか1項に記載の通信装置。
【請求項11】
マルチセッションによって通信するクライアントアプリケーションを1つ以上備えているデータ処理装置と、通信回線を介して通信可能に接続されている通信装置のコンピュータが読み取り可能な通信プログラムであって、
前記通信装置の前記コンピュータを、
前記クライアントアプリケーションとの間で前記通信回線を介してセッションを確立し、確立した前記セッションによってHTTP要求を前記クライアントアプリケーションから受信する受信手段と、
前記受信手段が受信した前記HTTP要求に対するHTTP応答を、前記セッションによって前記クライアントアプリケーションへ送信する送信手段と、
して機能させ、
前記送信手段は、前記HTTP要求を受信する際に用いた前記通信回線がマルチセッションが可能でない回線である場合には、前記HTTP応答を前記セッションによって前記クライアントアプリケーションへ送信した後に前記セッションを切断する処理を前記データ処理装置に実行させる第1切断指示情報を、前記データ処理装置へ送信することを特徴とする通信プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書に開示する技術は、各種のデータを通信することができる通信装置および通信プログラムに関する。
【背景技術】
【0002】
従来、画像処理装置にWebサーバ機能を備え、端末装置で実行されるWebブラウザに画像処理装置の設定画面などを表示する技術が開示されている(例えば特許文献1参照)。また、画像処理装置と端末装置とをネットワークで接続し、ネットワークを介して画像処理装置に画像を処理させるIPP(Internet Printing Protocol)と呼ばれる規格が知られている。そして、画像処理装置と端末装置とがUSB(Universal Serial Bus)によって接続されている環境において上述したIPPによる通信を行うための、IPP over USBという規格のドラフトが知られている。
【0003】
USBは、エンドポイントと呼ばれる論理チャンネルを、複数備えることができる。エンドポイントを複数備えることにより、物理的にシリアル通信であるUSBを用いて、複数の通信経路を形成することができる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2011−257945号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
1のエンドポイントを用いて複数種類のリクエストを同時期に通信する必要が生じる場合がある。複数種類のリクエストの一例としては、Webブラウザで画像処理装置の設定画面を表示するリクエストと、画像処理装置で印刷を実行するリクエストが挙げられる。しかしながら、USBにはマルチセッションの概念がない。すると、1のリクエストによってWebサーバ機能とセッションが確立されている期間中は、他のリクエストは、Webサーバ機能とセッションを確立することができない。この場合、他のリクエストは、1のリクエストにより確立されているセッションがタイムアウト等によって切断されるまで、通信を開始することができないため、ユーザの利便性を損なうおそれがある。本明細書では、このような不便性を解消することができる技術を提供する。
【課題を解決するための手段】
【0006】
本明細書によって開示される通信装置は、マルチセッションによって通信するクライアントアプリケーションを1つ以上備えているデータ処理装置と、通信回線を介して通信可能に接続されている通信装置であって、クライアントアプリケーションとの間で通信回線を介してセッションを確立し、確立したセッションによってHTTP要求をクライアントアプリケーションから受信する受信手段と、受信手段が受信したHTTP要求に対するHTTP応答を、セッションによってクライアントアプリケーションへ送信する送信手段と、を備え、送信手段は、HTTP要求を受信する際に用いた通信回線がマルチセッションが可能でない回線である場合には、HTTP応答をセッションによってクライアントアプリケーションへ送信した後にセッションを切断する処理をデータ処理装置に実行させる第1切断指示情報を、データ処理装置へ送信することを特徴とする。
【0007】
あるクライアントアプリケーションが、マルチセッションが可能でない通信回線を用いて通信装置との間でセッションを確立している場合には、他のクライアントアプリケーションは、通信装置とセッションを確立することができない。請求項1に記載の通信装置では、通信回線がマルチセッションが可能でない回線である場合には、クライアントアプリケーションを備えているデータ処理装置へ、第1切断指示情報を送信することができる。これにより、セッションを確立して1のHTTP要求を受信し、1のHTTP応答を送信するという処理が完了することに応じて、セッションを切断することができる。すなわち、HTTP要求に対してHTTP応答を返信するという処理ごとに、セッションの確立および切断を行うことができる。これにより、ある1のクライアントアプリケーションと通信装置との通信中に、他のクライアントアプリケーションと通信装置との通信を割り込ませることが可能になる。
【0008】
上記通信装置によると、クライアントアプリケーションと通信装置とが、ユニバーサルシルアルバスを介して、HTTPに基づいた通信を行うことが可能となる。
【0009】
上記通信装置によると、HTTP応答が備えているHTTPヘッダを用いて、第1切断指示情報をデータ処理装置へ送信することができる。よって、第1切断指示情報を送信するための専用の構成を備える必要を無くすことができる。
【0010】
上記通信装置によると、HTTP応答のHTTPヘッダで指定されている、コネクションをクローズする内容のメッセージを用いて、第1切断指示情報をデータ処理装置へ送信することができる。これにより、HTTPに基づいて第1切断指示情報を送信することができるため、データ処理装置の機種依存性などを無くすことができ、確実に切断指示をデータ処理装置へ伝達することが可能となる。
【0011】
HTTP要求の内容がWebページを記述する内容である場合には、テキストファイルや画像ファイルなどの複数のファイルを、セッションを用いて通信する必要がある場合がある。上記通信装置によると、HTTP要求の内容がWebページを記述する内容である場合には、第1切断指示情報をデータ処理装置へ送信しないため、クライアントアプリケーションと通信装置との間のセッションが確立された状態を維持することができる。そして、確立が維持されているセッションを用いて、複数のファイルを通信することができる。これにより、ファイルごとにセッションを確立および切断する場合に比して、通信にかかる時間を短縮化することや、通信装置の負荷を低減することが可能となる。
【0012】
上記通信装置によると、セッションを用いた通信が行われていない場合には、セッションを切断することが可能となる。これにより、マルチセッションが可能でない通信回線を用いる場合においても、ある1のクライアントアプリケーションと通信装置との通信中に、他のクライアントアプリケーションと通信装置との通信を割り込ませることが可能になる。
【0013】
上記通信装置によると、通信回線がマルチセッションが可能な回線である場合には、第1切断指示情報をデータ処理装置へ送信しないため、クライアントアプリケーションと通信装置との間のセッションが確立された状態を維持することができる。よって、通信装置の負荷を低減することが可能となる。
【0014】
上記通信装置によると、通信装置にWebサーバ機能を備えさせることができる。また、クライアントアプリケーションであるWebブラウザに、通信装置に関する画面を表示させることができる。
【0015】
上記通信装置によると、これにより、セッションが確立され、1のHTTP要求を受信して1のHTTP応答を送信するという処理が完了することに応じて、通信装置内部でのセッションを切断することができる。すなわち、HTTP要求に対してHTTP応答を返信するという処理ごとに、通信装置内部で、セッションの確立および切断を行うことができる。これにより、ある1のクライアントアプリケーションと通信装置との通信中に、他のクライアントアプリケーションと通信装置との通信を割り込ませることが可能になる。
【0016】
上記通信装置によると、1のエンドポイントを介して、複数のクライアントアプリケーションの各々からHTTP要求を受信する場合においても、通信時間が増大してしまうという事態を防止することが可能になる。
【0017】
なお、上記の技術を実現するための通信プログラムも、新規で有用である。
【図面の簡単な説明】
【0018】
図1】通信システム1の電気的構成を示す図である。
図2】PCおよびMFPのプログラム構成を示す図である。
図3】MFPのプロキシで行われる通信中継処理のフローチャートである。
図4】MFPのプロキシで行われる通信中継処理のフローチャートである。
図5】HTTP要求の一例を示すである。
図6】HTTP応答の一例を示すである。
図7】通信システムの動作例を示すシーケンス図である。
図8】通信システムの動作例を示すシーケンス図である。
図9】通信システムの動作例を示すシーケンス図である。
【発明を実施するための形態】
【0019】
<通信システムの構成>
図1に、本願に係る第1実施形態として例示される通信システム1の電気的構成を示す。通信システム1は、パーソナルコンピュータ(PCと記す)9、多機能周辺装置(以下「MFP」と称す)51、外部機器91および93を備えている。MFP51は、プリンタ機能、スキャナ機能、コピー機能、ファクシミリ機能などを備える。外部機器91および93の一例としては、PCや携帯電話などが挙げられる。
【0020】
PC9の構成について説明する。PC9は、CPU10、ROM11、RAM12、表示部13、操作部14、記憶部15、USBホストインタフェース部(図1ではUSBホストIF部と記す)16、及び、ネットワークインタフェース部(図1ではネットワークIF部と記す)17、を備えている。
【0021】
CPU10は、ROM11や記憶部15に記憶されているプログラムを実行することによってPC9の各部を制御する。ROM11には、CPU10によって実行されるプログラムやデータなどが記憶されている。RAM12は、CPU10が各種の処理を実行するための主記憶装置として用いられる。
【0022】
表示部13は、液晶ディスプレイなどの表示装置、表示装置を駆動するディスプレイ駆動回路などを備えている。操作部14は、キーボードやマウス、それらが接続されるインタフェースなどを備えている。記憶部15は、ハードディスクやフラッシュメモリなどの不揮発性のメモリを用いて各種のプログラムやデータを記憶する装置である。記憶部15には、オペレーティングシステム(OSと記す)21、Webブラウザ23、IPPクライアント24、TCP/IPスタック25、プロキシ26、USBドライバ27、などのプログラムが記憶されている。これらのプログラムの内容については、後述する。
【0023】
USBホストインタフェース部16は、USB(Universal SerialBus、ユニバーサルシリアルバス)ホストコントローラ(不図示)、USBケーブルが接続されるジャック(不図示)、などを備えている。USBホストインタフェース部16は、USB18を介してMFP51と通信を行う部位である。USB18は、マルチセッションを行うことができない通信回線である。ネットワークインタフェース部17は、LAN(Local Area Network)やインターネットなどの通信ネットワークを介して、PC、携帯電話、携帯通信端末などの不図示の通信端末と通信するためのインタフェースである。
【0024】
MFP51の構成について説明する。MFP51は、プリンタ19、スキャナ20、CPU32、ROM33、RAM34、記憶部35、無線送受信部36、無線アンテナ部37、ボタン入力部38、パネル39、モデム40、電話回線接続部41、USBインタフェース部(図1ではUSB_IF部と記す)42、LANインタフェース部(図1ではLAN_IF部と記す)43、を主に備えている。これらの構成要素は、入出力ポート44を介して互いに通信可能とされている。ROM33は、各種のプログラムを記憶する。CPU32は、ROM33に記憶されているプログラムを実行する。RAM34は、揮発性のメモリである。
【0025】
記憶部35は、ハードディスクやフラッシュメモリなどの不揮発性のメモリを用いて各種のプログラムやデータを記憶する装置である。記憶部35には、OS61、Webサーバ62、印刷ドライバ64、TCP/IPスタック65、プロキシ66、USBドライバ67、ブルートゥースドライバ68、LANドライバ69、などのプログラムが記憶されている。これらのプログラムの内容については、後述する。
【0026】
USBインタフェース部42は、USB18を介してPC9と通信を行う部位である。LANインタフェース部43は、LAN通信92を介して外部機器91と通信を行う部位である。無線送受信部36は、無線アンテナ部37を介して、外部機器93との間でブルートゥース通信94を行う部位である。LAN通信92およびブルートゥース通信94は、マルチセッションを行うことが可能な通信回線である。ボタン入力部38は、第1MFP51の各機能を実行するためのキーである。ボタン入力部38は、タッチパネルとして、パネル39と一体に構成されていてもよい。パネル39は、各種の画像を表示する。プリンタ19は、印刷用紙に印刷を実行する部位である。スキャナ20は、紙の原稿をスキャンして、画像データを生成する部位である。モデム40は、ファクシミリ機能によって送信する原稿データを、電話回線網100に伝送可能な信号に変調して電話回線接続部41を介して送信したり、電話回線網100から電話回線接続部41を介して入力された信号を受信し、原稿データへ復調するものである。
【0027】
<PCとMFPとの通信>
PC9は、USB18を介して、MFP51との間で少なくとも以下の通信を行う。(1)MFP51を設定するための通信。(2)MFP51に印刷データを送信するための通信。これらの通信は、IPP over USB規格に従って行われる。IPP(Internet Printing Protocol)とは、HTTP(HyperTextTransfer Protocol)をベースにした規格であって、インターネットやLANなどのTCP/IPネットワークを介してMFP51と通信するための規格である。IPP over USBは、USBによって接続されている環境において上述したIPPによる通信を実現するための規格である。IPP over USBでは、IPPの通信データが、USBのパケットに格納されて送受信される。
【0028】
<PCおよびMFPのプログラム構成>
図2を参照して、IPP over USBによって通信を行うための、PC9およびMFP51のプログラム構成について説明する。PC9は、Webブラウザ23、IPPクライアント24、TCP/IPスタック25、プロキシ26、USBドライバ27、などのプログラムを実行する。
【0029】
Webブラウザ23は、ユーザがMFP51の各種設定を行うためのユーザインタフェースとして用いられるプログラムである。Webブラウザ23としては、一般に利用されているものを用いることができる。Webブラウザ23は、マルチセッションによって通信するクライアントアプリケーションである。
【0030】
TCP/IPスタック25は、TCP/IP通信のプロトコルに関するプログラムをまとめて1つのプログラム群にしたものである。TCP/IPスタック25とプロキシ26の間には、ソケット81が作成されている。TCP/IPスタック25とWebブラウザ23の間には、ソケット82が作成されている。TCP/IPスタック25とIPPクライアント24の間には、ソケット83が作成されている。ソケットは、TCP/IPによって通信を行うための抽象化されたインタフェースであり、アプリケーションをネットワークに接続するための機構である。具体的には、ソケットは、TCP/IPで通信を行うコンピュータが持つネットワーク内での住所にあたるIPアドレスと、IPアドレスのサブ(補助)アドレスであるポート番号を組み合わせたネットワークアドレスを備えている。アプリケーションは、アドレスとポートの組であるソケットを指定して回線を開くだけで、通信手順の詳細を気にすることなくデータの送受信を行うことができる。
【0031】
プロキシ26は、WWW閲覧のためにHTTPによる接続を中継するプログラムである。プロキシ26は、USBドライバ27を介してUSB18に接続されている。USBドライバ27は、USBホストインタフェース部16を制御して、USB18を介した通信を実行するためのプログラムである。プロキシ26は、Webブラウザ23とプロキシ66との間、及び、IPPクライアント24とプロキシ66との間の通信を中継する。プロキシ26は、localhost(IP=127.0.0.1)の特定ポート(以後はポート80を使用するものとして記述する)に対するサーバとして働く。Webブラウザ23は、localhostのポート80(例:http://127.0.0.1:80)に対してアクセスすることにより、画面データの送信をプロキシ26に要求する。画面データの一例としては、MFP51の各種の設定を行うための設定画面を表示するためのデータが挙げられる。ここで、画面データはHTML(HyperText Markup Language)やXML(Extensible Markup Language)によって記述されている。プロキシ26に送信した要求は、プロキシ26により、USB18を介してMFP51のプロキシ66に送信される。
【0032】
IPPクライアント24は、IPPによる通信を行って、Webサーバ62からサービスを受けるプログラムである。IPPクライアント24は、マルチセッションによって通信するクライアントアプリケーションである。IPPクライアント24の一例としては、スプーラが挙げられる。スプーラは、印刷データを一時的に保存するプログラムである。IPPクライアント24は、OS21の一部として提供されてもよい。IPPクライアント24がスプーラである場合に、PC9とMFP51とがUSB18によって接続されている環境では、IPPクライアント24は、プロキシ26とIPPによって通信することにより、プロキシ26に印刷データを送信する。プロキシ26に送信した印刷データは、プロキシ26により、USB18を介してMFP51のプロキシ66に送信される。
【0033】
図2を参照して、MFP51のプログラム構成について説明する。MFP51は、Webサーバ62、印刷ドライバ64、TCP/IPスタック65、プロキシ66、USBドライバ67、ブルートゥースドライバ68、LANドライバ69、などのプログラムを実行する。TCP/IPスタック65とプロキシ66の間には、ソケット71が作成されている。TCP/IPスタック65とWebサーバ62の間には、ソケット72が作成されている。
【0034】
Webサーバ62は、HTTPによる情報送信機能を持ったプログラムである。Webサーバ62は、HTML文書や画像などの情報を蓄積しておき、Webブラウザなどのクライアントアプリケーションの要求に応じて、インターネットなどのネットワークを通じて、これらの情報を送信する役割を果たす。またWebサーバ62は、PC9から受信した印刷データを印刷ドライバ64に出力する機能を備えている。印刷ドライバ64は、プリンタ19を制御して印刷を実行するためのプログラムである。
【0035】
プロキシ66は、WWW閲覧のためにHTTPによる接続を中継するプログラムである。プロキシ66は、USBドライバ67を介してUSB18に接続されている。USBドライバ67は、USBインタフェース部42を制御して、USB18を介した通信を実行するためのプログラムである。プロキシ66は、ブルートゥースドライバ68およびブルートゥース通信94を介して、外部機器93と通信する。ブルートゥースドライバ68は、無線送受信部36および無線アンテナ部37を制御して、ブルートゥース通信94を実行するためのプログラムである。TCP/IPスタック65は、LANドライバ69およびLAN通信92を介して、外部機器91と通信する。LANドライバ69は、LANインタフェース部43を制御して、LAN通信92を実行するためのプログラムである。
【0036】
<USBにおけるインタフェース>
次に、USB18におけるインタフェースについて説明する。USB18では、物理的に一本のUSBケーブルに、インタフェースと呼ばれる1以上の論理的な通信回線が構成される。USB18では、コントロール転送を行うためのエンドポイント0と呼ばれる特殊なエンドポイントが必ず構成される。エンドポイント0は、双方向通信が可能なエンドポイントである。インタフェースは、エンドポイント0を介してMFP51から取得されるインタフェースディスクリプタに基づいて構成される。各インタフェースは、通常1ないし複数のエンドポイントを有する。
【0037】
本実施形態のMFP51では、インタフェース1が構成されるものとする。さらに、インタフェース1は、リード用エンドポイントおよびライト用エンドポイントを有し、それらを使用することにより双方向通信を実現しているものとする。そして、MFP51を設定するための通信、および、MFP51に印刷データを送信するための通信は、インタフェース1を用いて行われるものとする。すなわち本実施形態では、1のリード用エンドポイントを介して、Webブラウザ23およびIPPクライアント24の各々から、プロキシ66がHTTP要求を受信する場合を説明する。
【0038】
<プロキシによる通信中継処理の詳細>
図3および図4を参照して、MFP51のプロキシ66で行われる通信中継処理について説明する。プロキシ66は常駐プログラムとして実行されるものであり、本処理はMFP51に電源が投入されると常駐プログラムとして開始される。また以降の説明において、プロキシ66というときは、プロキシ66を実行するCPU32のことをいう場合がある。
【0039】
S12において、プロキシ66は、ソケット71および72をオープンする。これにより、プロキシ66とWebサーバ62の間の通信経路が形成される。
【0040】
S14においてプロキシ66は、PC9、外部機器91および93の何れかから、HTTP要求を受信したか否かを判断する。受信していない場合(S14:NO)にはS16へ進む。
【0041】
S16においてプロキシ66は、Keep−Aliveの持続時間が経過したか否かを判断する。Keep−Aliveは、Webサーバ62との間で確立した接続を転送終了後も維持し、維持した接続を2回目以降のリクエストでも使用する仕組みである。Keep−Aliveを使用すると、ファイルごとに接続を確立する必要がないため、CPU負荷や通信時間を節約することができる。Keep−Aliveの仕様は、RFC 2616(HTTP 1.1)で規定されている。Keep−Aliveの持続時間は、接続しているセッションからのリクエストが来なくなってから切断するまでの待ち時間である。持続時間は、ユーザ等によって予め定められるとしてもよい。持続時間の一例としては、Keep Alive Timeoutで設定された時間が挙げられる。持続時間が経過していない場合(S16:NO)にはS14へ戻り、経過した場合(S16:YES)にはS17へ進む。
【0042】
S17においてプロキシ66は、S12でソケットをオープンしてから、S14でHTTP要求を一度でも受信したか否かを判断する。一度も受信していない場合(S17:NO)にはS18をスキップしてS20へ進み、受信した場合(S17:YES)にはS18へ進む。これにより、MFP51の電源をオンにしただけの場合にように、一度もHTTP要求を受信していない場合には、PC9に切断指示情報が通知(S18)されないように制御することができる。
【0043】
S18においてプロキシ66は、セッションを切断する処理をPC9に実行させる切断指示情報を、USB18を介してPC9へ通知する。切断指示情報は、PC9に接続のクローズを行わせる情報である。また切断指示情報は、TCPの「FIN」に相当するデータである。S20においてプロキシ66は、ソケット71および72をクローズする。これにより、プロキシ66とWebサーバ62の間の通信経路が消滅する。
【0044】
一方、S14において、HTTP要求を受信した場合(S14:YES)には、S24へ進む。図5に、HTTP要求の一例を示す。図5に示すように、HTTP要求のメッセージは、リクエスト行111、ヘッダ112、メッセージボディ113を備えている。リクエスト行111は、Webサーバ62に実行して欲しい処理を伝えるための行である。リクエスト行111には、「メソッド」「URL」「HTTPのバージョン」の3つの情報が含まれている。ヘッダ112は、メッセージボディ113の前に送られてくる情報であり、各種の状態を示す情報である。ヘッダ112には、接続状況(Connection)を表す情報が含まれている。図5に示しているHTTP要求のヘッダ112には、Keep−Aliveを実行することを示す情報が含まれている(領域R1を参照)。メッセージボディ113は、HTMLで記述されたデータや画像データなどが含まれている部分である。
【0045】
S24においてプロキシ66は、HTTP要求のHTTPヘッダにおいて、Host(図5の領域R0を参照)をWebサーバ62に書き換える。S26においてプロキシ66は、Webサーバ62へHTTP要求を送信する。これにより、プロキシ66がWebブラウザ23から受信したHTTP要求が、Webサーバ62へ転送される。S28においてプロキシ66は、HTTP要求に対するHTTP応答を、Webサーバ62から受信したか否かを判断する。HTTP応答を受信していない場合(S28:NO)にはS28へ戻り、受信した場合(S28:YES)にはS30へ進む。
【0046】
図6に、HTTP応答の一例を示す。図6に示すように、HTTP応答のメッセージは、レスポンス行121、ヘッダ122、メッセージボディ123を備えている。レスポンス行121は、HTTP要求に対する応答の状態を示す行である。ヘッダ122は、各種の状態を示す情報である。メッセージボディ123は、HTMLで記述されたデータなどが含まれている部分である。図6に示しているHTTP要求のヘッダ122には、「Keep−Alive」という接続状況(Connection)を表す情報が含まれている(図6、領域R2を参照)。
【0047】
S30においてプロキシ66は、HTTP要求を受信した回線が、マルチセッションが可能な回線であるか否かを判断する。具体的には、HTTP要求を受信する際に用いたドライバが、マルチセッションが可能な回線用のドライバであるか否かを判断する。例えば図2のプログラム構成図では、USB18はマルチセッションが可能ではない回線であり、ブルートゥース通信94はマルチセッションが可能な回線である。よって、プロキシ66がUSBドライバ67を介してHTTP要求を受信した場合には、HTTP要求を受信した回線がマルチセッションが可能ではないと判断することができる。一方、プロキシ66がブルートゥースドライバ68を介してHTTP要求を受信した場合には、HTTP要求を受信した回線がマルチセッションが可能であると判断することができる。HTTP要求を受信した回線がマルチセッションが可能でない回線であると判断される場合(S30:NO)には、S31へ進む。S31においてプロキシ66は、HTTP応答がWebページを記述する内容の応答であるか否かを判断する。具体的には、HTTP応答のHTTPヘッダの「Content‐type」(図6、領域R3を参照)が、「html」であるか否かを判断する。HTTP応答がWebページを記述する内容ではない場合(S31:NO)には、S40へ進む。
【0048】
S40においてプロキシ66は、HTTP応答のHTTPヘッダで指定されているメッセージであって、コネクションに関するメッセージの内容を、コネクションをクローズする内容に書き換える。具体的には、HTTP応答のHTTPヘッダの「Connection」を、「close」に書き換える(図6、領域R4を参照)。これにより、Keep−Aliveを終了する処理を、Webブラウザ23に実行させることができる。S42においてプロキシ66は、PC9のWebブラウザ23へ、USB18を介して、HTTP応答を送信する。これにより、Webサーバ62からプロキシ66が受信したHTTP応答が、Webブラウザ23へ転送される。
【0049】
S44においてプロキシ66は、ソケット71および72をクローズする。具体的には、TCPの「FIN」に相当するデータを、TCP/IPスタック65およびWebサーバ62へ送信する。これにより、プロキシ66とWebサーバ62の間の通信経路が消滅する。そしてS12へ戻る。
【0050】
一方、HTTP要求を受信した回線がマルチセッションが可能である場合(S30:YES)や、HTTP応答がWebページを記述する内容の応答である場合(S31:YES)には、S34へ進む。S34においてプロキシ66は、PC9のWebブラウザ23へ、USB18を介して、HTTP応答を送信する。そしてS14へ戻る。このとき、HTTP応答のHTTPヘッダの「Connection」は、書き換えられない。よって、HTTPヘッダの「Connection」が「Keep−Alive」であるHTTP応答をWebサーバ62から受信した場合には、Keep−Aliveが維持されることになる。
【0051】
<通信システム1の動作>
図7図9のシーケンス図を用いて、通信システム1の動作の一例について説明する。本説明例では、PC9からMFP51を設定するための通信、および、PC9からMFP51で印刷を行なうための通信の両方を、USB18のインタフェース1を用いて実行する場合を説明する。また例として、Webサーバ62から送信されるHTTP応答のHTTPヘッダにおいて、「Connection」が「Keep−Alive」であり、「Content‐type」が「html」ではない場合を説明する。また例として、Webブラウザ23が表示する設定画面は複数の画像データを必要とする画面であり、複数のセッションの確立が必要である場合を説明する。
【0052】
プロキシ26はhttp://127.0.0.1:80に対するTCPサーバープログラムとして常駐している。Webブラウザ23は、ユーザから設定画面の表示を指示するためのアドレス(http://127.0.0.1:80)が入力されると、プロキシ26との間にネットワークのセッションを確立する(U12)。Webブラウザ23は、確立したセッションを介して、設定画面データのメインページの送信を要求するHTTP要求をプロキシ26に送信する(U16)。プロキシ26は、受信したHTTP要求を、USB18のインタフェース1を介してMFP51のプロキシ66へ転送する(U22)。
【0053】
IPPクライアント24は、ユーザから印刷指示が入力されると、プロキシ26との間にネットワークのセッションを確立する(U32)。IPPクライアント24は、確立したセッションを介して、印刷ドライバ64で印刷処理を実行させるための印刷要求をプロキシ26に送信する(U36)。ここで、USB18のインタフェース1では、前述したU22においてセッションが確立されている。また、USB18は、マルチセッションが可能でない回線である。よってプロキシ26は、印刷要求をMFP51へ通信できない場合であると判断し、印刷要求の送信を保留する(U40)。
【0054】
MFP51のプロキシ66は、HTTP要求を受信すると(S14:YES)、HTTP要求のHTTPヘッダのHostを書き換える(S24)。プロキシ66は、Webサーバ62へHTTP要求を送信する(S26)。プロキシ66は、HTTP応答を、Webサーバ62から受信する(S28:YES)。前述したS22でHTTP要求を受信した回線はUSB18であり、マルチセッションが可能な回線ではない(S30:NO)。また本動作例では、HTTP応答のHTTPヘッダの「Content‐type」が、「html」ではない場合を説明している(S31:NO)。よってプロキシ66は、HTTP応答のHTTPヘッダの「Connection」を、「close」に書き換える(S40)(図6、領域R4を参照)。そしてプロキシ66は、USB18のインタフェース1を介して、PC9のWebブラウザ23へ、HTTP応答を送信する(S42)。またプロキシ66は、TCPの「FIN」に相当するデータを、TCP/IPスタック65およびWebサーバ62へ送信する(S44)。
【0055】
PC9のプロキシ26は、受信したHTTP応答を、Webブラウザ23へ送信する(U52)。プロキシ26は、受信したHTTP応答のHTTPヘッダにおける、「Connection:close」の指示に従って、Webブラウザ23とWebサーバ62との間の1つ目のセッションを終了する。つまり、U22において確立したセッションを終了する(U56)。
【0056】
プロキシ26は、IPPクライアント24とWebサーバ62との間のセッションを確立できる状態であると判断し、U40で保留していた印刷要求の送信を再開する(U60)。これにより、印刷要求が、USB18のインタフェース1を介してプロキシ66へ転送される(U64)。プロキシ66で受信された印刷要求は、印刷ドライバ64へ転送される。なお、MFP51内部で印刷要求を転送する方法の詳細は、上述した内容と同様であるため、説明を省略する。
【0057】
Webブラウザ23は、Webサーバ62との間の2つ目のセッションの確立を行うために、プロキシ26との間にネットワークのセッションを確立する(U62)。Webブラウザ23は、確立したセッションを介して、メインページを構成する画像の送信を要求するHTTP要求をプロキシ26に送信する(U66)。ここで、USB18のインタフェース1では、前述したU64においてセッションが確立されている。また、USB18は、マルチセッションが可能でない回線である。よってプロキシ26は、HTTP要求をMFP51へ通信できない場合であると判断し、HTTP要求の送信を保留する(U70)。
【0058】
S62においてプロキシ66は、PC9のWebブラウザ23へ、USB18を介して、印刷応答を送信する。印刷応答のHTTPヘッダの「Connection」は、「close」に書き換えられている。PC9のプロキシ26は、受信した印刷応答を、IPPクライアント24へ送信する(U72)。プロキシ26は、受信した印刷応答のHTTPヘッダにおける、「Connection:close」の指示に従って、IPPクライアント24とWebサーバ62との間のセッションを終了する(U76)。
【0059】
プロキシ26は、Webブラウザ23とWebサーバ62との間のセッションを確立できる状態であると判断し、U70で保留していたHTTP要求の送信を再開する(U80)。以後、同様の処理が繰り返される。
【0060】
<効果>
本実施例に係る通信システム1の効果を説明する。複数のクライアントアプリケーション(Webブラウザ23およびIPPクライアント24)の各々とWebサーバ62とが、USBの1のエンドポイントを介して通信を行う場合を考える。この場合、USBはマルチセッションが可能でない回線であるため、1のクライアントアプリケーションであるWebブラウザ23がWebサーバ62との間でセッションを確立している期間中は、他のクライアントアプリケーションであるIPPクライアント24は、Webサーバ62とセッションを確立することができない。特に、Webブラウザ23がWebサーバ62とKeep−Aliveを使用してセッションを確立している場合には、Webブラウザ23からWebサーバ62への全ての要求が完了してから、Keep Alive Timeoutなどの持続時間が経過するまで、Webブラウザ23とWebサーバ62とのセッションが維持される。すると、IPPクライアント24がWebサーバ62とセッションを確立することができない期間がさらに長期化するため、印刷が実行されない時間が長期化し、ユーザの利便性を損なうおそれがある。
【0061】
本実施例に係るMFP51のプロキシ66は、通信回線がマルチセッションが可能でない回線である場合(S30:NO)には、HTTP応答のHTTPヘッダの「Connection」を、「close」に書き換えることができる(S40)。これにより、HTTP応答をクライアントアプリケーションへ送信した後にセッションを切断する処理の実行指示を、PC9へ送信することができる。よって、図7図9の動作例で説明したように、セッションを確立して1のHTTP要求をプロキシ66が受信し(S14:YES)、1のHTTP応答をプロキシ66が送信する(S42)という処理が完了することに応じて、セッションを切断することができる(U56)。すなわち、HTTP要求に対してHTTP応答を返信するという処理ごとに、セッションの確立および切断を行うことができる。これにより、Webブラウザ23からWebサーバ62へ複数の要求が行われている期間中に、IPPクライアント24からWebサーバ62への要求が行われる場合においても、Webブラウザ23からWebサーバ62への1の要求が完了したら(U52)、Webブラウザ23とWebサーバ62とのセッションを切断し(U56)、IPPクライアント24とWebサーバ62とセッションを確立させることができる(U64)。よって、Webブラウザ23からWebサーバ62へ複数の要求が送信されている期間中に、IPPクライアント24からWebサーバ62への要求を割り込ませることが可能となる。従って、IPPクライアント24がWebサーバ62とセッションを確立することができない期間(図7図9、期間T1を参照)が長期化する結果、印刷が実行されない時間が長期化してしまう、といった事態を防止することが可能となる。
【0062】
HTTP応答が備えているHTTPヘッダで指定されている、コネクションをクローズする内容のメッセージを用いて、セッションを切断する処理の実行指示をPC9へ送信することができる。よって、セッションを切断する処理の実行指示を送信するための専用の構成を備える必要を無くすことができる。これにより、HTTPに基づいてセッションを切断する処理の実行指示を送信することができるため、PCの機種依存性などを無くすことができ、確実に切断指示をPCへ伝達することが可能となる。
【0063】
HTTP要求の内容がWebページを記述する内容である場合(S31:YES)には、テキストファイルや画像ファイルなどの複数のファイルを、セッションを用いて通信する必要がある場合がある。本実施例に係るMFP51のプロキシ66によると、HTTP要求の内容がWebページを記述する内容である場合(S31:YES)には、HTTP応答のHTTPヘッダの「Connection」を、「close」に書き換えないため、セッションを切断する処理の実行指示がPC9へ送信されない。よって、HTTP応答のHTTPヘッダの「Connection」が「Keep−Alive」である場合には、クライアントアプリケーションとWebサーバ62との間のセッションが確立された状態を維持することができる。そして、確立が維持されているセッションを用いて、複数のファイルを通信することができる。これにより、ファイルごとにセッションを確立および切断する場合に比して、通信にかかる時間を短縮化することや、CPUの負荷を低減することが可能となる。
【0064】
HTTP要求を予め定められた所定時間の間受信しなかった場合(S16:YES)には、プロキシ66は、切断指示情報をPC9へ送信することができる(S18)。これにより、HTTP応答のHTTPヘッダの「Connection」を、「close」に書き換えない場合(S30:YES、または、S31:YES)においても、セッションを用いた通信が行われていない場合には、セッションを切断することが可能となる。
【0065】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。以下に変形例を説明する。
【0066】
<変形例>
S40において、HTTP応答のHTTPヘッダの「Connection」を「close」に書き換える処理は、プロキシ66で行う形態に限られない。当該処理を、Webサーバ62で行っても良い。この場合、Webサーバ62は、TCPの「FIN」に相当するデータを、TCP/IPスタック65およびプロキシ66へ送信するとすればよい。
【0067】
本明細書に記載の技術の適用範囲は、MFP51を設定するための通信、および、MFP51に印刷データを送信するための通信を、インタフェース1の同一のエンドポイントを用いて実行する場合に限られない。例えば、MFP51を設定するための通信、および、MFP51で各種の処理を実行するための通信を、同一のエンドポイントを用いて実行する場合にも適用可能である。例えば、1つ目のWebブラウザ23をPC9で実行して、MFP51での印刷設定を行うとともに、2つ目のWebブラウザ23をPC9で実行して、インターネットを用いたFAX送信やインターネットを用いたメール送受信を行う場合においても、本明細書に記載の技術を適用することができる。
【0068】
上記実施形態では、マルチセッションが可能でない通信回線の一例としてUSB18を説明したが、この形態に限られない。マルチセッションできない通信回線として、例えば、シリアル通信を行うRS‐232Cを用いてもよい。
【0069】
図7図9の動作例において、印刷要求の送信を再開するタイミング(U60)と、Webブラウザ23の間の2つ目のセッションを確立するタイミング(U62)との順番は、何れが先であってもよい。
【0070】
Webサーバ62が備えられる通信装置の一例として、MFP51を説明したが、この形態に限られない。通信装置は、USB接続できる装置であれば何れの種類の装置であってもよく、例えばPCや携帯電話であってもよい。
【0071】
上記実施形態では、マルチセッションによって通信するクライアントアプリケーションとして、Webブラウザ23およびIPPクライアント24を例に説明したが、これらのアプリケーションに限られない。マルチセッションによって通信するものであれば、他の種類のアプリケーションであってもよい。
【0072】
S24において、HTTP要求のHTTPヘッダを書き換える形態を説明したが、この形態に限られない。HTTPヘッダを書き換えずに、HTTP要求を転送する形態であってもよい。
【0073】
S30およびS31の少なくとも一方を省略してもよい。S30およびS31の両方を省略する場合には、HTTP応答をWebサーバ62から受信すると(S28:YES)、HTTPヘッダの「Connection」が必ず「close」に書き換えられる(S40)ように制御することができる。
【0074】
なお、Webブラウザ23およびIPPクライアント24は、クライアントアプリケーションの一例である。PC9は、データ処理装置の一例である。USB18は、通信回線の一例である。MFP51は、通信装置の一例である。S14を実行するCPUは、受信手段の一例である。S34、S42を実行するCPUは、送信手段の一例である。HTTPヘッダの「Connection:close」は、第1切断指示情報の一例である。FINに相当するデータは、第2切断指示情報の一例である。
【符号の説明】
【0075】
9:PC、18:USB、23:Webブラウザ、24:IPPクライアント、26および66:プロキシ、51:MFP、62:Webサーバ、64:印刷ドライバ
図1
図2
図3
図4
図5
図6
図7
図8
図9