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

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

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

特許6011167通信中継プログラム、及び、通信中継装置
<>
  • 特許6011167-通信中継プログラム、及び、通信中継装置 図000002
  • 特許6011167-通信中継プログラム、及び、通信中継装置 図000003
  • 特許6011167-通信中継プログラム、及び、通信中継装置 図000004
  • 特許6011167-通信中継プログラム、及び、通信中継装置 図000005
  • 特許6011167-通信中継プログラム、及び、通信中継装置 図000006
  • 特許6011167-通信中継プログラム、及び、通信中継装置 図000007
  • 特許6011167-通信中継プログラム、及び、通信中継装置 図000008
  • 特許6011167-通信中継プログラム、及び、通信中継装置 図000009
  • 特許6011167-通信中継プログラム、及び、通信中継装置 図000010
  • 特許6011167-通信中継プログラム、及び、通信中継装置 図000011
  • 特許6011167-通信中継プログラム、及び、通信中継装置 図000012
  • 特許6011167-通信中継プログラム、及び、通信中継装置 図000013
  • 特許6011167-通信中継プログラム、及び、通信中継装置 図000014
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6011167
(24)【登録日】2016年9月30日
(45)【発行日】2016年10月19日
(54)【発明の名称】通信中継プログラム、及び、通信中継装置
(51)【国際特許分類】
   G06F 13/00 20060101AFI20161006BHJP
【FI】
   G06F13/00 353C
【請求項の数】10
【全頁数】25
(21)【出願番号】特願2012-193177(P2012-193177)
(22)【出願日】2012年9月3日
(65)【公開番号】特開2014-49022(P2014-49022A)
(43)【公開日】2014年3月17日
【審査請求日】2015年6月17日
(73)【特許権者】
【識別番号】000005267
【氏名又は名称】ブラザー工業株式会社
(72)【発明者】
【氏名】門田 政敏
【審査官】 新田 亮
(56)【参考文献】
【文献】 特開2006−268714(JP,A)
【文献】 特開2010−113606(JP,A)
【文献】 特開2003−084931(JP,A)
【文献】 特開2007−219956(JP,A)
【文献】 特開2010−122933(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/00
(57)【特許請求の範囲】
【請求項1】
画像処理装置と通信回線を介して通信可能に接続されている情報処理装置で実行される通信中継プログラムであって、
マルチセッションによって通信するクライアントアプリケーションからセッションの確立を要求されると、その要求に応じて前記クライアントアプリケーションとの間に新たなセッションを確立する確立処理と、
前記確立処理によって前記新たなセッションが確立されると、前記クライアントアプリケーションとの間に確立されている他のセッション以外のセッションによる通信が禁止されているか否かを判断する判断処理と、
前記判断処理によって通信が禁止されていると判断された場合に、通信が解禁されるまで前記新たなセッションによる通信を待機する待機処理と、
前記判断処理によって通信が禁止されていないと判断された場合、又は、前記待機処理による待機が解除された場合に、前記新たなセッション以外のセッションによる通信を禁止する排他処理と、
前記排他処理によって前記新たなセッション以外のセッションによる通信を禁止した状態で、前記新たなセッションを介して前記クライアントアプリケーションと前記画像処理装置との間で通信を中継する中継処理と、
前記中継処理による中継が完了すると、前記新たなセッション以外のセッションによる通信を解禁する解禁処理と、
当該通信中継プログラムは前記クライアントアプリケーションから要求を受信するとその要求を前記画像処理装置に送信し、前記画像処理装置からその要求に対する応答を受信するとその応答を前記クライアントアプリケーションに送信するものであり、
前記要求は複数の通信データからなり、
前記中継処理において、
前記クライアントアプリケーションから前記通信データを受信した後に次の前記通信データを第1の規定時間以上受信しない場合に前記要求の受信が完了したと仮判断し、
前記画像処理装置に前記要求を送信したときから第2の規定時間以内に前記画像処理装置から前記応答を受信しない場合に、前記クライアントアプリケーションからの前記要求の受信が完了していないと判断して前記クライアントアプリケーションから残りの通信データを受信すること、
を前記情報処理装置に実行させる通信中継プログラム。
【請求項2】
請求項1に記載の通信中継プログラムであって、
前記通信は一の要求とその要求に対する応答からなり、
前記中継処理において、一対の前記要求及び前記応答の中継が完了すると、中継が完了したと判断する、通信中継プログラム。
【請求項3】
請求項1又は請求項2に記載の通信中継プログラムであって、
前記通信回線はユニバーサルシルアルバスである、通信中継プログラム。
【請求項4】
請求項1乃至請求項3のいずれか一項に記載の通信中継プログラムであって、
前記画像処理装置はWebサーバ機能を有し、
前記クライアントアプリケーションはWebブラウザであり、
当該通信中継プログラムは、前記Webブラウザと前記Webサーバ機能との間で送受信される通信データを中継する、通信中継プログラム。
【請求項5】
請求項1乃至請求項4に記載の通信中継プログラムであって、
前記通信は、前記クライアントアプリケーションから前記画像処理装置を設定するための通信である、通信中継プログラム。
【請求項6】
請求項1乃至請求項5のいずれか一項に記載の通信中継プログラムであって、
当該通信中継プログラムは前記クライアントアプリケーションから要求を受信するとその要求を前記画像処理装置に送信し、前記画像処理装置からその要求に対する応答を受信するとその応答を前記クライアントアプリケーションに送信するものであり、
前記要求及び前記応答はそれぞれ複数の通信データからなり、
当該通信中継プログラムは、
前記クライアントアプリケーションから受信した通信データを解析し、当該通信データが前記要求の終了を示す通信データであるか否かを判断する第1の解析処理と、
前記画像処理装置から受信した通信データを解析し、当該通信データが前記応答の終了を示す通信データであるか否かを判断する第2の解析処理と、
を前記情報処理装置に実行させ、
前記中継処理において、前記第1の解析処理により前記要求の終了を示す通信データであると判断された場合に前記要求の受信が完了したと判断し、前記第2の解析処理により前記応答の終了を示す通信データであると判断された場合に前記応答の受信が完了したと判断する、通信中継プログラム。
【請求項7】
請求項に記載の通信中継プログラムであって、
前記中継処理において、前記応答の送信が完了したか否かを前記画像処理装置に問い合せ、前記画像処理装置から完了したとの問い合せ結果を受信した場合に、前記応答の受信が完了したと判断する、通信中継プログラム。
【請求項8】
請求項1乃至請求項のいずれか一項に記載の通信中継プログラムであって、
前記クライアントアプリケーション及び前記情報処理装置は単一の前記セッションにおいて複数の要求及び応答の対を送受信可能に構成されるものであり、
当該通信中継プログラムは、
前記中継処理による一対の前記要求及び前記応答の中継が完了すると、前記解禁処理において前記新たなセッション以外のセッションによる通信を解禁し、
前記解禁処理によって前記新たなセッション以外のセッションによる通信を解禁した後、第3の規定時間以内に前記新たなセッションを維持する維持信号を受信した場合は前記判断処理に戻って処理を繰り返す一方、前記維持信号を受信しなかった場合は前記新たなセッションを切断する、通信中継プログラム。
【請求項9】
請求項1乃至請求項のいずれか一項に記載の通信中継プログラムであって、
前記情報処理装置は複数の物理的又は論理的な前記通信回線によって前記画像処理装置と通信可能に接続されており、
当該通信中継プログラムは、
前記クライアントアプリケーションからセッションの確立を要求される毎に、いずれかの前記通信回線を選択する選択処理を前記情報処理装置に実行させ、
前記排他処理において、同一の前記通信回線を用いて通信する他のセッションの通信を禁止する、通信中継プログラム。
【請求項10】
画像処理装置と通信回線を介して通信可能に接続されている通信中継装置であって、
処理部を備え、
前記処理部は、
マルチセッションによって通信するクライアントアプリケーションからセッションの確立を要求されると、その要求に応じて前記クライアントアプリケーションとの間に新たなセッションを確立する確立処理と、
前記確立処理によって前記新たなセッションが確立されると、前記クライアントアプリケーションとの間に確立されている他のセッション以外のセッションによる通信が禁止されているか否かを判断する判断処理と、
前記判断処理によって通信が禁止されていると判断された場合に、通信が解禁されるまで前記新たなセッションによる通信を待機する待機処理と、
前記判断処理によって通信が禁止されていないと判断された場合、又は、前記待機処理による待機が解除された場合に、前記新たなセッション以外のセッションによる通信を禁止する排他処理と、
前記排他処理によって前記新たなセッション以外のセッションによる通信を禁止した状態で、前記新たなセッションを介して前記クライアントアプリケーションと前記画像処理装置との間で通信を中継する中継処理と、
前記中継処理による中継が完了すると、前記新たなセッション以外のセッションによる通信を解禁する解禁処理と、
当該通信中継プログラムは前記クライアントアプリケーションから要求を受信するとその要求を前記画像処理装置に送信し、前記画像処理装置からその要求に対する応答を受信するとその応答を前記クライアントアプリケーションに送信するものであり、
前記要求は複数の通信データからなり、
前記中継処理において、
前記クライアントアプリケーションから前記通信データを受信した後に次の前記通信データを第1の規定時間以上受信しない場合に前記要求の受信が完了したと仮判断し、
前記画像処理装置に前記要求を送信したときから第2の規定時間以内に前記画像処理装置から前記応答を受信しない場合に、前記クライアントアプリケーションからの前記要求の受信が完了していないと判断して前記クライアントアプリケーションから残りの通信データを受信すること、
を実行する、通信中継装置。
【発明の詳細な説明】
【技術分野】
【0001】
通信を中継する技術に関する。
【背景技術】
【0002】
従来、画像処理装置にWebサーバ機能を備え、端末装置で実行されるWebブラウザに画像処理装置の設定画面などを表示する技術が開示されている(例えば特許文献1参照)。
また、画像処理装置と端末装置とをインターネットで接続し、インターネットを介して画像処理装置に画像を処理させるIPP(Internet Printing Protocol)と呼ばれる規格が知られている。
そして、画像処理装置と端末装置とがUSB(Universal Serial Bus)によって接続されている環境において上述したIPPによる通信を行うためのIPP over USBという規格のドラフトが知られている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2011−257945号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、一般にWebブラウザとWebサーバ機能とはマルチセッションによって通信を行っている。従って、Webブラウザが画像処理装置の設定画面などを表示する場合には、WebブラウザはマルチセッションによってWebサーバ機能と通信しようとする。
しかしながら、USBにはマルチセッションの概念がない。このため、端末装置と画像処理装置とがUSBによって接続されている環境でWebブラウザがWebサーバ機能とマルチセッションによって通信しようとすると、あるセッションへの応答が別のセッションに送信されてしまうなどのように応答が混乱してしまう可能性がある。
【0005】
本明細書では、マルチセッションの概念がない通信回線を介してクライアントアプリケーションが画像処理装置とマルチセッションによって混乱なく通信する技術を開示する。
【課題を解決するための手段】
【0006】
本明細書によって開示される通信中継プログラムは、画像処理装置と通信回線を介して通信可能に接続されている情報処理装置で実行される通信中継プログラムであって、マルチセッションによって通信するクライアントアプリケーションからセッションの確立を要求されると、その要求に応じて前記クライアントアプリケーションとの間に新たなセッションを確立する確立処理と、前記確立処理によって前記新たなセッションが確立されると、前記クライアントアプリケーションとの間に確立されている他のセッション以外のセッションによる通信が禁止されているか否かを判断する判断処理と、前記判断処理によって通信が禁止されていると判断された場合に、通信が解禁されるまで前記新たなセッションによる通信を待機する待機処理と、前記判断処理によって通信が禁止されていないと判断された場合、又は、前記待機処理による待機が解除された場合に、前記新たなセッション以外のセッションによる通信を禁止する排他処理と、前記排他処理によって前記新たなセッション以外のセッションによる通信を禁止した状態で、前記新たなセッションを介して前記クライアントアプリケーションと前記画像処理装置との間で通信を中継する中継処理と、前記中継処理による中継が完了すると、前記新たなセッション以外のセッションによる通信を解禁する解禁処理と、を前記情報処理装置に実行させる。
【0007】
上記通信中継プログラムによると、いずれかのセッションを介して通信を中継している間は他のセッションによる通信を禁止するので、あるセッションへの応答が別のセッションに送信されてしまうなどのように応答が混乱してしまうことを抑制できる。
よって上記通信中継プログラムによると、マルチセッションの概念がない通信回線を介してクライアントアプリケーションが画像処理装置とマルチセッションによって混乱なく通信することができる。
【0008】
また、前記通信は一の要求とその要求に対する応答からなり、前記中継処理において、一対の前記要求及び前記応答の中継が完了すると、中継が完了したと判断してもよい。
【0009】
上記通信中継プログラムによると、一対の前記要求及び前記応答の中継が完了すると他のセッションによる通信を解禁するので、他のセッションの待機時間を短くすることができる。
【0010】
また、前記通信回線はユニバーサルシルアルバスであってもよい。
【0011】
上記通信中継プログラムによると、ユニバーサルシルアルバスを介してクライアントアプリケーションが画像処理装置とマルチセッションによって混乱なく通信することができる。
【0012】
また、前記画像処理装置はWebサーバ機能を有し、前記クライアントアプリケーションはWebブラウザであり、当該通信中継プログラムは、前記Webブラウザと前記Webサーバ機能との間で送受信される通信データを中継してもよい。
【0013】
上記通信中継プログラムによると、マルチセッションの概念がない通信回線を介してWebブラウザがWebサーバ機能とマルチセッションによって混乱なく通信することができる。
【0014】
また、前記通信は、前記クライアントアプリケーションから前記画像処理装置を設定するための通信であってもよい。
【0015】
上記通信中継プログラムによると、クライアントアプリケーションから画像処理装置を設定する場合にマルチセッションによって混乱なく通信することができる。
【0016】
また、当該通信中継プログラムは前記クライアントアプリケーションから要求を受信するとその要求を前記画像処理装置に送信し、前記画像処理装置からその要求に対する応答を受信するとその応答を前記クライアントアプリケーションに送信するものであり、前記要求及び前記応答はそれぞれ複数の通信データからなり、当該通信中継プログラムは、前記クライアントアプリケーションから受信した通信データを解析し、当該通信データが前記要求の終了を示す通信データであるか否かを判断する第1の解析処理と、前記画像処理装置から受信した通信データを解析し、当該通信データが前記応答の終了を示す通信データであるか否かを判断する第2の解析処理と、を前記情報処理装置に実行させ、前記中継処理において、前記第1の解析処理により前記要求の終了を示す通信データであると判断された場合に前記要求の受信が完了したと判断し、前記第2の解析処理により前記応答の終了を示す通信データであると判断された場合に前記応答の受信が完了したと判断してもよい。
【0017】
上記通信中継プログラムによると、要求及び応答の受信が完了したことを確実に判断することができる。
【0018】
また、当該通信中継プログラムは前記クライアントアプリケーションから要求を受信するとその要求を前記画像処理装置に送信し、前記画像処理装置からその要求に対する応答を受信するとその応答を前記クライアントアプリケーションに送信するものであり、前記要求は複数の通信データからなり、当該通信中継プログラムは、前記中継処理において、前記クライアントアプリケーションから前記通信データを受信した後に次の前記通信データを第1の規定時間以上受信しない場合に前記要求の受信が完了したと仮判断し、前記画像処理装置に前記要求を送信したときから第2の規定時間以内に前記画像処理装置から前記応答を受信しない場合に、前記クライアントアプリケーションからの前記要求の受信が完了していないと判断して前記クライアントアプリケーションから残りの通信データを受信してもよい。
【0019】
上記通信中継プログラムによると、クライアントアプリケーションから通信データを第1の規定時間以上受信しない場合に要求の受信が完了したと仮判断するので、要求の受信が完了したか否かを、通信データの内容を解析することなく判断することができる。
ただし、実際には要求の受信は完了しておらず、なんらかの理由で送信が遅れているだけの場合もある。要求の受信が完了していない場合は、画像処理装置は応答を送信しないので、画像処理装置から第2の規定時間以内に応答を受信しない場合は、要求の受信が完了したという仮判断は誤りであったことが判る。
通信中継プログラムによると、仮判断が誤りであった場合はクライアントプログラムから残りの通信データを受信するので、全ての通信データを受信することができる。
【0020】
また、前記中継処理において、前記応答の送信が完了したか否かを前記画像処理装置に問い合せ、前記画像処理装置から完了したとの問い合せ結果を受信した場合に、前記応答の受信が完了したと判断してもよい。
【0021】
上記通信中継プログラムによると、通信の中継が完了したか否かを通信データの内容を解析することなく判断することができる。
【0022】
また、前記クライアントアプリケーション及び前記情報処理装置は単一の前記セッションにおいて複数の要求及び応答の対を送受信可能に構成されるものであり、当該通信中継プログラムは、前記中継処理による一対の前記要求及び前記応答の中継が完了すると、前記解禁処理において前記新たなセッション以外のセッションによる通信を解禁し、前記解禁処理によって前記新たなセッション以外のセッションによる通信を解禁した後、第3の規定時間以内に前記新たなセッションを維持する維持信号を受信した場合は前記判断処理に戻って処理を繰り返す一方、前記維持信号を受信しなかった場合は前記新たなセッションを切断してもよい。
【0023】
上記通信中継プログラムによると、要求毎にセッションを切断しないことにより、効率よく通信することができる。
【0024】
また、前記情報処理装置は複数の物理的又は論理的な前記通信回線によって前記画像処理装置と通信可能に接続されており、当該通信中継プログラムは、前記クライアントアプリケーションからセッションの確立を要求される毎に、いずれかの前記通信回線を選択する選択処理を前記情報処理装置に実行させ、前記排他処理において、同一の前記通信回線を用いて通信する他のセッションの通信を禁止してもよい。
【0025】
上記通信中継プログラムによると、マルチセッションの概念がない複数の通信回線を介してクライアントアプリケーションが画像処理装置とマルチセッションによって混乱なく通信することができる。
【0026】
なお、本明細書によって開示される技術は、通信中継装置、通信中継方法、通信中継プログラムを記録した記録媒体等の種々の態様で実現することができる。
【図面の簡単な説明】
【0027】
図1】実施形態1に係るPCの電気的構成を簡略化して示すブロック図。
図2】PCのプログラム構成、及び、プリンタの機能を示すブロック図。
図3】プリンタの設定画面の一例を示す模式図。
図4】通信中継処理の全体的な流れを示すシーケンスチャート。
図5】通信中継処理のフローチャート。
図6】スレッドによって実行される処理のフローチャート。
図7】スレッド単位の中継処理のフローチャート。
図8】実施形態2に係るスレッド単位の中継処理のフローチャート。
図9】実施形態3に係るスレッドによって実行される処理のフローチャート。
図10】通信中継処理のフローチャート。
図11】実施形態4に係るスレッドによって実行される処理のフローチャート。
図12】IPP機能による通信処理のフローチャート。
図13】実施形態5に係るPCのプログラム構成、及び、プリンタの機能を示すブロック図。
【発明を実施するための形態】
【0028】
<実施形態1>
実施形態1を図1ないし図7によって説明する。
(1)PCの電気的構成
先ず、図1を参照して、実施形態1に係る情報処理装置としてのパーソナルコンピュータ(PCと記す)1の電気的構成について説明する。
PC1は、CPU10、ROM11、RAM12、表示部13、操作部14、記憶部15、USBホストインタフェース部(図1ではUSBホストIF部と記す)16、及び、ネットワークインタフェース部(図1ではネットワークIF部と記す)17、を備えている。
【0029】
CPU10は、ROM11や記憶部15に記憶されているプログラムを実行することによってPC1の各部を制御する。ROM11にはCPU10によって実行されるプログラムやデータなどが記憶されている。RAM12はCPU10が各種の処理を実行するための主記憶装置として用いられる。CPU10は処理部の一例である。
【0030】
表示部13は、液晶ディスプレイなどの表示装置、表示装置を駆動するディスプレイ駆動回路などを備えて構成されている。
操作部14は、キーボードやマウス、それらが接続されるインタフェースなどで構成されている。
【0031】
記憶部15は、ハードディスクやフラッシュメモリなどの不揮発性のメモリを用いて各種のプログラムやデータを記憶する装置である。記憶部15には、オペレーティングシステム(OSと記す)21、IPP/USB変換プログラム22、Webブラウザ23などが記憶されている。
IPP/USB変換プログラム22は通信中継プログラムの一例である。また、Webブラウザ23はマルチセッションによって通信するクライアントアプリケーションの一例である。
【0032】
USBホストインタフェース部16は、USB(Universal Serial Bus、ユニバーサルシリアルバス)ホストコントローラ、USBケーブルが接続されるジャックなどを備えて構成されており、USBケーブルを介してプリンタ2と通信可能に接続されている。USBは通信回線の一例である。
【0033】
ネットワークインタフェース部17は、LAN(Local Area Network)やインターネットなどの通信ネットワーク5を介してPC、携帯電話、携帯通信端末などの外部の通信端末3と通信するためのインタフェースである。なお、ネットワークインタフェース部17は有線によって通信ネットワーク5と接続されるものであってもよいし、無線によって接続されるものであってもよい。
【0034】
(2)プリンタ
図1に示すプリンタ2は、印刷用紙などのシートに電子写真方式やインクジェット方式などで画像を印刷する装置である。プリンタ2はUSBプリンタクラスデバイスとして構成されている。プリンタ2は画像処理装置の一例である。
プリンタ2は複数のプリンタ言語を解釈可能であり、ユーザはいずれのプリンタ言語を用いるかを予めプリンタ2に設定しておくものとする。また、プリンタ2は画像が印刷されるシートを収容するシートトレイとして第1のトレイ及び第2のトレイを備えている。ユーザは各トレイに収容されているシートのサイズを予めプリンタ2に設定しておくものとする。詳しくは後述するが、これらの設定はPC1からUSBを介して行うことができる。
【0035】
(3)PCとプリンタとの通信
PC1はプリンタ2との間でUSBを介して少なくとも以下の通信を行う。
・プリンタ2を設定するための通信
・プリンタ2に印刷データを送信するための通信
これらの通信はIPP over USB規格に従って行われる。IPP(Internet Printing Protocol)とは、HTTP(HyperText Transfer Protocol)をベースにした規格であって、インターネットやLANなどのTCP/IPネットワークを介してプリンタ2と通信するための規格である。
【0036】
IPP over USBはUSBによって接続されている環境において上述したIPPによる通信を実現するための規格である。IPP over USBではIPPの通信データがUSBのパケットに格納されて送受信される。
【0037】
(4)PCのプログラム構成、及び、プリンタの機能
次に、図2を参照して、IPP over USBによって通信を行うためのPC1のプログラム構成、及び、プリンタ2の機能について説明する。
【0038】
先ず、PC1のプログラム構成について説明する。PC1は、Webブラウザ23、スプーラ24、及び、IPP/USB変換プログラム22を実行する。
Webブラウザ23はユーザがプリンタ2の設定を行うためのユーザインタフェースとして用いられるプログラムである。Webブラウザ23としては一般に利用されているものを用いることができる。
【0039】
PC1とプリンタ2とがUSBによって接続されている環境では、Webブラウザ23はIPP/USB変換プログラム22とHTTPによって通信する。IPP/USB変換プログラムはlocalhost(IP=127.0.0.1)の特定ポート(以後はポート80を使用するものとして記述する)に対するサーバとして働く。WEBブラウザ23はlocalhostのポート80(例:http://127.0.0.1:80)に対してアクセスすることにより、プリンタ2の設定画面41(図3参照)を表示するための画面データの送信をIPP/USB変換プログラム22に要求する。
ここで、画面データはHTML(HyperText Markup Language)やXML(Extensible Markup Language)によって記述されている。
IPP/USB変換プログラム22に送信した要求は、IPP/USB変換プログラム22により、USBを介してプリンタ2のIPP機能31に送信される。このIPP機能31は、IPP印刷、設定画面CGIを行うものであり、データの入出力をUSBを介して行うことを除けば、ネットワークを介して行う従来のものと同じである。したがってその詳細はここでは省略する。
なお、Webブラウザ23はPC1で実行されてもよいし、PC1と通信可能に接続されている外部の通信端末3で実行されてもよい。
【0040】
スプーラ24は印刷データをスプールするプログラムである。スプーラ24はOS21の一部として提供される。PC1とプリンタ2とがUSBによって接続されている環境では、スプーラ24はIPP/USB変換プログラム22とIPPによって通信することにより、IPP/USB変換プログラム22に印刷データを送信する。
IPP/USB変換プログラム22に送信した印刷データは、IPP/USB変換プログラム22により、USBを介してプリンタ2のIPP機能31に送信される。
【0041】
IPP/USB変換プログラム22は、Webブラウザ23とIPP機能31との間、及び、スプーラ24とIPP機能31との間で通信を中継するプログラムである。IPP/USB変換プログラム22はIPP機能31とUSBを介して通信する。IPP/USB変換プログラム22の詳細については後述する。
【0042】
次に、プリンタ2の機能について説明する。プリンタ2は、IPP機能31、及び、印刷機能32を備えている。
IPP機能31は、Webブラウザ23からプリンタ2を設定するためのWebサーバ機能、及び、PC1から受信した印刷データを印刷機能32に出力する機能を備えている。IPP機能31はWebサーバ機能の一例である。
印刷機能32は、IPP機能31から出力された印刷データを印刷する機能である。
【0043】
(5)USBにおけるインタフェース
次に、USBにおけるインタフェースについて説明する。USBでは物理的に一本のUSBケーブルにインタフェースと呼ばれる1以上の論理的な通信回線が構成される。
USBではコントロール転送を行うためのエンドポイント0と呼ばれる特殊なエンドポイントが必ず構成される。エンドポイント0は双方向通信が可能なエンドポイントである。インタフェースはエンドポイント0を介してプリンタ2から取得されるインタフェースディスクリプタに基づいて構成される。各インタフェースは通常1ないし複数のエンドポイントを有する。
【0044】
本実施形態のプリンタではインタフェース1及びインタフェース2が構成されるものとする。さらに、それらインタフェースは、リード用エンドポイントおよびライト用エンドポイントを有し、それらを使用することにより双方向通信を実現している。
そして、プリンタ2を設定するための通信はインタフェース1を用いて行われ、プリンタ2に印刷データを送信するための通信はインタフェース2を用いて行われるものとする。
【0045】
なお、インタフェース2を構成せず、プリンタ2を設定するための通信、及び、プリンタ2に印刷データを送信するための通信をどちらもインタフェース1を用いて行ってもよい。
【0046】
(6)USBを介してマルチセッションによる通信を行う場合の課題
次に、USBを介してマルチセッションによる通信を行う場合の課題について説明する。ここではPC1からプリンタ2を設定するための通信を例に説明する。
ここでは先ず、図3を参照して、プリンタ2の設定画面41について説明する。図3に示す例の設定画面41では、プリンタ言語41a、第1のトレイにセットされている用紙サイズ41b、第2のトレイにセットされている用紙サイズ41cを設定することができる。
また、図3に示すように、設定画面41には画像42、画像43、画像44が表示される。ここでは画像42〜44をそれぞれGIF1、GIF2、GIF3というものとする。これらの画像は画面データには含まれていないので、Webブラウザ23は画面データを受信した後にIPP/USB変換プログラム22にこれらの画像の送信を要求する。
すなわち、この設定画面41はIPP機能31による設定画面CGIにより作成されるHTML又はXMLデータで構成される。
Webブラウザ23によりlocalhostの特定ポート80(例:http://127.0.0.1:80)がアクセスされると、Webブラウザ23はそのメインページのファイルを取得するためのGETコマンドを発行するためのセッションをIPP/USB変換プログラムとの間に構築する。このGETコマンドはIPP/USB変換プログラム22によりUSBを介してプリンタ2に送られIPP機能31のCGIにより処理される。この応答として、設定画面41を表示するためのHTML/XMLデータのメインページがUSBを介して返される。このデータは再びIPP/USB変換プログラム22によりGETコマンドの応答としてブラウザ23に返される。
ブラウザ23はこのメインページを解析し、ページを表示するに足りない部品(GIF1、GIF2、GIF3など)を同様に要求する。
【0047】
この場合に、Webブラウザ23はマルチセッションによる通信が可能であるので、足りない部品(GIF1,GIF2、GIF3)毎にセッションを確立して画像の送信を要求する。つまり、まずGIF1に対するGETコマンドが送信され、その応答を待たずに続けてGIF2,GIF3に対するGETコマンドが送られる。しかしながら、USBのインタフェースにはマルチセッションの概念がない。またIPP機能31は、かならずGETコマンドの順にその要求された部品を返すわけではなく、その返す順位は不定である。このため、複数のセッションの要求がインタフェース1を介して通信しようとすると、あるセッションに対する応答が別のセッションに送信されてしまうなどのような混乱が起こり得る。
【0048】
具体的には、IPP機能31からIPP/USB変換プログラム22に送信される応答にはセッションを識別するための情報は付加されない。このため、各セッションがインタフェース1を介して通信すると、IPP機能31から応答を受信したとき、IPP/USB変換プログラム22はその応答がいずれのセッションに対する応答であるかを判断できない。このため、あるセッションに対する応答が別のセッションに送信されてしまうなどのような混乱が起こり得る。
【0049】
そこで、実施形態1に係るIPP/USB変換プログラム22は、排他処理を実行することにより、同時に一のセッションのみを介して通信を中継する。
【0050】
(7)IPP/USB変換プログラムによる通信中継処理の全体的な流れ
図4を参照して、IPP/USB変換プログラム22による通信中継処理の全体的な流れについて説明する。ここではPC1からプリンタ2を設定するための通信を例に説明する。前述したようにプリンタ2を設定するための通信はインタフェース1を用いて行われる。
以降の説明においてWebブラウザ23というときはWebブラウザ23を実行するCPU10のことをいう。IPP/USB変換プログラム22についても同様である。
【0051】
IPP/USB変換プログラム22はhttp://127.0.0.1:80に対するTCPサーバープログラムとして常駐している。
Webブラウザ23はユーザから設定画面41の表示を指示するためのアドレス(http://127.0.0.1:80)が入力されるとIPP/USB変換プログラム22との間にネットワークのセッションを確立する(S101)。そして、Webブラウザ23はそのセッションを介して、画面データのメインページの送信を要求するGET要求をIPP/USB変換プログラム22に送信する(S102)。なおここで説明するネットワークは、単一のPC1内で行われる擬似的なネットワークを想定している。
【0052】
IPP/USB変換プログラム22は、メインページに対するGET要求を受信すると、そのGET要求をUSBを介してプリンタ2のIPP機能31に転送する(S103)。
IPP機能31はGET要求を受信すると、画面データをIPP/USB変換プログラム22に送信する(S104)。
【0053】
IPP/USB変換プログラム22は、IPP機能31からメインページのデータを受信すると、その画面データをネットワーク経由でWebブラウザ23に転送する(S105)。
Webブラウザ23はメインページのデータを受信すると、そのデータを解釈する(S106)。このメインページには、設定画面41を表示するために必要なGIF1,GIF2,GIF3の情報が記述されている。そこで、Webブラウザ23は、それらGIF1、GIF2,GIF3を取得するために、IPP/USB変換プログラム22との間に新たなセッションを確立して画像の送信を要求する。
【0054】
その場合に、Webブラウザ23はマルチセッションによってGIF1、GIF2、GIF3のそれぞれにセッションを確立して画像の送信を要求する。従って、図3に示す設定画面41の場合は図4に示すようにGIF1の送信を要求するためのセッション2(S107)、GIF2の送信を要求するためのセッション3(S108)、及び、GIF3の送信を要求するためのセッション4(S109)の三つのセッションが確立される。ここではセッション2、セッション3、及び、セッション4の順で確立されたものとする。
【0055】
この場合、IPP/USB変換プログラム22は、最初のセッションであるセッション2を確立すると、セッション2以外のセッションによる通信を禁止する。そして、IPP/USB変換プログラム22はセッション2を介してWebブラウザ23とIPP機能31との間で通信を中継する(S110〜S113)。
そして、IPP/USB変換プログラム22は、セッション2を介した通信の中継が完了すると、セッション3による通信を解禁する。従ってセッション4は通信が禁止されたままの状態である。
【0056】
そして、IPP/USB変換プログラム22はセッション3を介してWebブラウザ23とIPP機能31との間で通信を中継し(S114〜S117)、その中継が完了するとセッション4による通信を解禁する。
そして、IPP/USB変換プログラム22はセッション4を介してWebブラウザ23とIPP機能31との間で通信を中継する(S118〜S121)。
【0057】
これら一連の処理により、設定画面41のメインページならびにそのメインページにて使用されているGIF1、GIF2、及び、GIF3がWebブラウザ23に読み込まれ、Webブラウザ23は設定画面41を表示する。その設定画面41に対する操作は、HTTPプロトコルのGET命令、POST命令などに変更されて同様にIPP/USB変換プログラムを介してIPP機能3に送られる。この処理により、従来のネットワークを介してIPPのCGIにアクセスするのと同様の手順でUSBを介してプリンタ2の設定を行える。
【0058】
(8)IPP/USB変換プログラムによる通信中継処理の詳細
次に、図5を参照して、上述した通信中継処理についてより具体的に説明する。IPP/USB変換プログラム22は常駐プログラムとして実行されるものであり、本処理はPC1に電源が投入されると常駐プログラムとして開始される。
ここで、本処理はWebブラウザ23とIPP機能31との間で通信を中継する処理であり、スプーラ24とIPP機能31との間で通信を中継する処理は本処理とは別の処理として実行されるものとする。当該別の処理についての説明は省略する。
【0059】
S201では、IPP/USB変換プログラム22は排他処理を実行するためのミューテックスを作成する。ミューテックスは排他処理を行うための仕組みであって、プログラム言語によって提供される仕組みである。ミューテックスの詳細については後述する。
なお、ここではミューテックスを用いて排他処理を行う場合を例に説明するが、排他処理を行う方法はこれに限られない。例えばセマフォを用いて行ってもよいし、ミューテックスやセマフォを用いず独自の方法で行ってもよい。
【0060】
S202では、IPP/USB変換プログラム22はセッションを確立する要求(アクセプト要求という)を監視するソケットの作成及び設定を行う。ソケットとはTCP/IPによって通信を行うための抽象化されたインタフェースのことをいう。また、ソケットの設定とは、ソケットにPC1のIPアドレスやポート番号などを設定し、そのソケットの動作モードをアクセプト要求の監視モードにすることをいう。本実施形態ではIPアドレスとして127.0.0.1、ポートとして80を監視する。
【0061】
ユーザがWebブラウザ23を立ち上げ、IPアドレスとして127.0.0.1、ポートとしてポート80を設定すると、Webブラウザ23は当該アドレスおよびポートに対して通信を行うべく、接続を試みる。この処理がアクセプト要求となる。
S203では、IPP/USB変換プログラム22はWebブラウザ23からアクセプト要求を受信するまで待機し、アクセプト要求を受信するとS204に進む。
S204では、IPP/USB変換プログラム22はスレッドを作成する。
S205では、IPP/USB変換プログラム22はOS21から終了要求があったか否かを判断する。IPP/USB変換プログラム22は、終了要求があった場合は本処理を終了し、なかった場合はS203に戻って処理を繰り返す。
【0062】
(9)スレッドによって実行される処理
次に、図6を参照して、S204で作成されたスレッドによって実行される処理について説明する。前述したようにスレッドはアクセプト要求を受信する毎に作成される。いずれのスレッドも実行する処理は同じであるのでここでは最初に作成されたスレッドである第1のスレッドを例に説明する。
【0063】
S301では、第1のスレッドはアクセプト処理を実行する。アクセプト処理とは、アクセプト要求を送信してきた相手、すなわちセッションを確立する要求を送信してきた相手との間に新たなセッションを確立する処理である。セッションを確立するとそのセッションを介して通信を行う新たなソケットが作成される。なお、ソケットのオープン/クローズ、アクセプトなどのタイミングで、USBのエンドポイント0を用いたコントロール転送を用いてプリンタ2に情報を送り、上記オープン・クローズ・アクセプト・などのタイミングでプリンタ2と同期をとってもよい。S301はWebブラウザ23との間に新たなセッションを確立する確立処理の一例である。
【0064】
S302では、第1のスレッドはS301で確立した新たなセッション以外のセッションによる通信を禁止する排他処理を実行する。
具体的には、第1のスレッドはS201で作成されたミューテックスの取得を試みる。ミューテックスが他のスレッドによって取得されていない場合は第1のスレッドによってミューテックスが取得され、その後にミューテックスの取得を試みた他のスレッドは第1のスレッドによってミューテックスが解放されるまで待機状態となる。これにより他のスレッドは通信が禁止された状態となる。
【0065】
一方、ミューテックスが他のスレッドによって取得されている場合は、第1のスレッドはミューテックスを取得できるまで待機状態となる。これにより第1のスレッドは通信が禁止された状態となる。そして、他のスレッドがミューテックスを解放すると、第1のスレッドより先に待機状態になっているスレッドがある場合は当該先に待機状態になっているスレッドによってそのミューテックスが取得され、第1のスレッドは引き続き待機状態となる。第1のスレッドより先に待機状態になっているスレッドがない場合は、第1のスレッドによってミューテックスが取得される。
第1のスレッドは、ミューテックスを取得するとS303に進む。
ここで、S302は判断処理、待機処理、及び、排他処理の一例である。つまり、第1のスレッドはミューテックスの仕組みを用いることによって判断処理、待機処理、及び、排他処理を実行する。
【0066】
S303では、第1のスレッドはスレッド単位の中継処理を実行する。スレッド単位の中継処理は、S301で確立した新たなセッションを介してWebブラウザ23とIPP機能31との間で通信を中継する処理である。スレッド単位の中継処理の詳細については後述する。
【0067】
S304では、第1のスレッドは排他終了処理を実行する。具体的には、第1のスレッドはミューテックスを解放する。S304は解禁処理の一例である。
S305では、第1のスレッドはS301で作成したセッションをクローズして処理を終了する。
【0068】
(10)スレッド単位の中継処理
次に、S303で実行されるスレッド単位の中継処理について説明する。
ここでは先ず、Webブラウザ23からIPP/USB変換プログラム22に送信される要求、及び、IPP機能31からIPP/USB変換プログラム22に送信される応答について説明する。
Webブラウザ23からIPP/USB変換プログラム22に送信される要求は1以上の通信データからなる。以下に要求の一例を示す。ここでは各通信データの前に行番号を[]で括って示す。
【0069】
[1行目]POST /ipp/[function] HTTP/1.1<CRLF>
[2行目]Host: localhost<CRLF>
[3行目]Content−Type: application/ipp<CRLF>
[4行目]Transfer−Encoding: chunked<CRLF>
[5行目]<CRLF>
【0070】
上述した例において各行はそれぞれ一つの通信データを表している。また、上述した例から明らかなように各通信データは最後が<CRLF>で終わっている。<CRLF>は復帰改行コードである。
また、5行目に示すように要求の最後の通信データは<CRLF>のみである。従って、受信した通信データが<CRLF>のみである場合は一つの要求の受信が完了したと判断することができる。
なお、PUTコマンドやPOSTコマンドでは通常この一連の要求のほかに、バイナリデータあるいはテキストデータを送る。その場合は上記一連の要求のなかにContent-Length: 4554といった行を挿入し、指定されたバイト数(この場合は4554)の付加データが続くことを示す。
また全ての付加データのバイト数が予めわからない場合はTransfer−Encoding: chunkedなどの形で、細切れのデータ塊が続くことを示す場合もある。この場合、データ塊ごとのサイズが示される。
【0071】
同様にIPP機能31からIPP/USB変換プログラム22に送信される一つの応答も1以上の通信データからなり、最後の通信データは<CRLF>のみである。またGETコマンドに対する応答にあっては、上記同様にバイナリデータが続く。いずれの場合も広く使用されている技術であるので、ここではその詳細を省く。
【0072】
S401では、第1のスレッドはS301で確立したネットワークのセッションを介してWebブラウザ23から通信データを受信する。
S402では、第1のスレッドはS401でWebブラウザ23から受信した通信データをUSBを介してIPP機能31に送信する。
【0073】
S403では、第1のスレッドは一つの要求の受信が完了したか否かを判断する。
具体的には、HTTPのプロトコルに従って、<CRLF>、Content-Length、Transfer−Encoding: chunkedなどの出現状況を解析し、そのデータエンドを判断する。具体的には<CRLF>の有無、Content-LengthやTransfer−Encoding: chunkedで示される付加データのサイズを確認することにより、データエンドを判断することができる。
【0074】
その結果Webブラウザ23からそのセッションにて送られるすべての要求データ及び付随するデータのIPP機能31への転送が終了したと判断された場合は、S404に進む。一方、Webブラウザ23から受信した通信データがまだ終了していないと判断される場合には、第1のスレッドは一つの要求の受信が完了していないと判断し、S401に戻って処理を繰り返す。S403は第1の解析処理の一例である。この転送された要求データ及び付随するデータは、IPP機能31の設定画面CGIにより解釈され、IPP機能31はそれに対応する応答データを作成する。たとえばメインページ要求のGETコマンドに対する応答は、そのメインページを含む一連の情報となる。このデータはUSBを介してIPP/USB変換プログラム22に返される。
【0075】
S404では、第1のスレッドはIPP機能31に送信した要求に対する応答として、IPP機能31からUSBを介して通信データを受信する。
S405では、第1のスレッドはS404でプリンタ2から受信した通信データを、S301で確立したセッションを介してWebブラウザ23に送信する。
【0076】
S406では、第1のスレッドは一つの応答の受信が完了したか否かを判断する。
この判断方法はS403と同様の手順により行われる。そして、応答の受信が完了したと判断された場合は本処理を終了する。一方、応答の受信が完了していないと判断された場合は、S404に戻って処理を繰り返す。S406は第2の解析処理の一例である。
【0077】
一方、第2スレッドでも上記と同様に通信が行われるが、その場合はS302における排他処理において、第一スレッドの排他終了処理S304が行われるまで待機状態となる。
同様に第3スレッドでも第2スレッド及び第1スレッドの排他終了処理S304が行われるまで待機状態となる。
このため、中継処理S303は、すべてのスレッドにて同時に行われないことが保証される。
【0078】
(11)実施形態の効果
以上説明したIPP/USB変換プログラム22によると、マルチセッションの概念がない通信回線であるUSB(より具体的にはインタフェース)を介してWebブラウザ23がプリンタ2とマルチセッションによって通信する場合に、いずれかのセッションを介して通信を中継している間は他のセッションによる通信を禁止するので、あるセッションへの応答が別のセッションに送信されてしまうなどのように応答が混乱してしまうことを抑制できる。
よってIPP/USB変換プログラム22によると、USBを介してWebブラウザ23がプリンタ2とマルチセッションによって混乱なく通信することができる。
【0079】
更に、IPP/USB変換プログラム22によると、一対の要求及び応答の中継が完了すると他のセッションによる通信を解禁するので、他のセッションの待機時間を短くすることができる。
【0080】
更に、IPP/USB変換プログラム22によると、Webブラウザ23とIPP機能31との間で送受信される通信データを中継するので、USBを介してWebブラウザ23がIPP機能31とマルチセッションによって混乱なく通信することができる。
【0081】
更に、IPP/USB変換プログラム22によると、Webブラウザ23からプリンタ2を設定するための通信を中継するので、Webブラウザ23からプリンタ2を設定する場合にマルチセッションによって混乱なく通信することができる。
【0082】
更に、IPP/USB変換プログラム22によると、Webブラウザ23から受信した通信データを解析し、受信が完了したと判断するので、要求の受信が完了したことを判断することができる。IPP機能31から受信した応答についても同様である。
【0083】
<実施形態2>
次に、実施形態2を図8によって説明する。
実施形態2は実施形態1のスレッド単位の中継処理の変形例である。実施形態1に係るスレッド単位の中継処理では通信データを解析することによって要求の受信が完了したか否か、及び、応答の受信が完了したか否かを判断した。これに対し、実施形態2に係る中継処理では、要求の受信が完了したか否か、及び、応答の受信が完了したか否かを、通信データを解析することなく判断する。
【0084】
図8を参照して、実施形態2に係るスレッド単位の中継処理について説明する。
S501では、第1のスレッドはWebブラウザ23から通信データを受信する。
具体的には、第1のスレッドはS301で作成したソケットに通信データの有無を問い合せる。第1のスレッドはWebブラウザ23から受信した通信データがある場合はその通信データを受信してS502に進む。一方、Webブラウザ23から受信した通信データがない場合は、第1のスレッドは第1の規定時間経過後にタイムアウトしてS502に進む。
【0085】
S502では、第1のスレッドはS501でタイムアウトしたか否かを判断し、タイムアウトではない場合はS503に進み、タイムアウトである場合は要求の受信が終了したと判断してS504に進む。
S503では、第1のスレッドはS501でWebブラウザ23から受信した通信データをUSBを介してIPP機能31に転送する。IPP機能31の設定画面CGIはこの通信データを処理し、対応するコマンドに対する応答を返す。
【0086】
S504では、第1のスレッドはIPP機能31からUSBを介して通信データを受信する。この通信データはS501〜S503によってIPP機能31に送信した要求に対する応答として受信されるものである。
ここで、第1のスレッドがIPP機能31に最後の通信データを送信したときから第2の規定時間以内に第1のスレッドがIPP機能31から通信データを受信しない場合は、IPP機能31からの通信データの受信がタイムアウトする。
【0087】
S505では、第1のスレッドはS504でのIPP機能31からの通信データの受信がタイムアウトしたか否かを判断する。この判断を行う理由について以下に説明する。
【0088】
前述したように第1のスレッドはS502においてタイムアウトと判断した場合はWebブラウザ23からの要求の受信が完了したと判断する。しかしながら、実際には要求の受信は完了しておらず、CPU10の負荷が高いなどのなんらかの理由で通信データの送信が遅れているだけの場合もある。
第1のスレッドがWebブラウザ23からの要求の受信を完了していない場合は、第1のスレッドからIPP機能31への要求の送信も完了していないので、IPP機能31は要求の受信が完了するのを待っている状態となる。このため、IPP機能31は第1のスレッドに応答を送信しない。
【0089】
このため、Webブラウザ23からの要求の受信が完了していないにもかかわらずS502においてタイムアウトと判断された場合は、S504においてIPP機能31からの通信データの受信がタイムアウトする。
従って、IPP機能31からの通信データの受信がタイムアウトしたか否かを判断することにより、S502でのタイムアウトが、Webブラウザ23からの要求の受信が完了したことによる正常なタイムアウトであるか、又は、Webブラウザ23からの要求の受信が完了していない異常なタイムアウトであるかを高い精度で判断することができる。
【0090】
第1のスレッドは、IPP機能31からの通信データの受信がタイムアウトしていない場合はS506に進む。一方、IPP機能31からの通信データの受信がタイムアウトした場合は、第1のスレッドはS502でのタイムアウトが異常なタイムアウトであると判断し、Webブラウザ23から残りの通信データを受信するためにS501に戻る。
【0091】
S506では、第1のスレッドはプリンタ2から受信した通信データをWebブラウザ23に送信する。
S507では、第1のスレッドはIPP機能31に応答の送信が完了したか否かを問い合せる。この問い合せはエンドポイント0を用いたコントロール転送によって行われる。
【0092】
S508では、第1のスレッドはS507での問い合わせに対するプリンタ2からの問い合せ結果を判断する。第1のスレッドは、完了したとの問い合せ結果(データエンド)である場合は通信の中継が完了したと判断し、本処理を終了してスレッドによる処理に戻る。一方、完了していないとの問い合せ結果である場合は、第1のスレッドは通信の中継が完了していないと判断してS509に進む。
【0093】
S509では、第1のスレッドはIPP機能31からUSBを介して通信データを受信する。その後再びS506に戻り、その通信データはWEBブラウザ23に送信される。以後データエンドとなるまで、すなわちIPP機能31からの応答をすべてWebブラウザ23に転送するまでこのループが続けられる。
【0094】
以上説明した実施形態2に係るIPP/USB変換プログラム22によると、Webブラウザ23から通信データを第1の規定時間以上受信しない場合にWebブラウザ23からの要求の受信が完了したと仮判断するので、要求の受信が完了したか否かを、通信データの内容を解析することなく判断することができる。
【0095】
また、IPP/USB変換プログラム22によると、IPP機能31から第2の規定時間以内に通信データを受信しない場合は、要求の受信が完了したという仮判断は誤りであったとしてWebブラウザ23から残りの通信データを受信するので、Webブラウザ23から要求をより確実に受信することができる。
【0096】
更に、IPP/USB変換プログラム22によると、応答の送信が完了したか否かをIPP機能31に問い合せ、完了したとの問い合せ結果を受信した場合に通信の中継が完了したと判断するので、通信の中継が完了したか否かを、通信データの内容を解析することなく判断することができる。
【0097】
<実施形態3>
次に、実施形態3を図9によって説明する。
前述した実施形態1に係るIPP/USB変換プログラム22は一つのセッションにおいて一対の要求及び応答の送受信が完了するとセッションを切断する。これに対し、実施形態3に係るIPP/USB変換プログラム22は一つのセッションにおいて複数の要求及び応答の対を送受信する。
【0098】
図9は、実施形態3に係る第1のスレッドの処理の流れを示すフローチャートである。
S301〜S304までは実施形態1と同じであるので説明は省略する。
S601では、第1のスレッドはS304で排他処理を終了したときから第3の規定時間以内にkeep−alive信号を受信したか否かを判断し、keep−alive信号を受信した場合はS302に戻り、受信していない場合はS305に進んでセッションをクローズする。
ここで、keep−alive信号とは、セッションを維持するために送信される信号である。keep−alive信号はWebブラウザ23が送信する。keep−alive信号は維持信号の一例である。
【0099】
以上説明した実施形態3に係るIPP/USB変換プログラム22によると、一対の要求及び応答の送受信が完了する毎にセッションを切断しないことにより、効率よく通信することができる。
【0100】
<実施形態4>
次に、実施形態4を図10ないし図12によって説明する。
実施形態4は実施形態1の変形例である。前述した実施形態1に係るIPP/USB変換プログラム22は、プリンタ2を設定するための通信を、一つのインタフェース(具体的にはインタフェース1)を用いて行う。
これに対し、実施形態4に係るIPP/USB変換プログラム22は、プリンタ2とPC1との間にインタフェース1、インタフェース2、及び、インタフェース3を構成する。インタフェース2も双方向通信可能なインタフェースであるとする。
そして、IPP/USB変換プログラム22は、上述したプリンタ2を設定するための通信を、インタフェース1及びインタフェース2を用いて行う。プリンタ2に印刷データを送信するための通信はインタフェース3を用いるものとする。
【0101】
(1)IPP/USB変換プログラムによる通信中継処理の詳細
先ず、図10を参照して、実施形態4に係る通信中継処理について説明する。なお、図10ではインタフェースをIFと記している。
S701では、IPP/USB変換プログラム22はインタフェース1及びインタフェース2毎にミューテックスを作成する。
S202〜S205の処理は実施形態1と実質的に同一であるので説明は省略する。
【0102】
次に、図11を参照して、実施形態4に係る第1のスレッドの処理の流れについて説明する。ここでは実施形態1と実質的に同一の処理には同一の符号を付して説明を省略する。
【0103】
S801では、第1のスレッドはインタフェース1及びインタフェース2のうち使用されていないインタフェース、又は、待ちの少ないインタフェースを選択する。S801は選択処理の一例である。
ここで、いずれのインタフェースも使用されていない場合は、第1のスレッドはインタフェース1を選択するものとする。また、いずれのインタフェースも使用されている場合は、第1のスレッドはインタフェースが解放されるのを待っているスレッドの数が最も少ないインタフェースを選択するものとする。また、いずれのインタフェースも解放されるのを待っているスレッドの数が同じである場合は、第1のスレッドはインタフェース1を選択するものとする。
第1のスレッドが作成された時点ではいずれのインタフェースも使用されていないので、第1のスレッドはインタフェース1を選択する。
【0104】
S802では、第1のスレッドはS801で選択したインタフェース1の排他処理を実行する。この排他処理はインタフェース1のミューテックスを取得することによって行われる。
インタフェース1の排他処理が実行されると、インタフェース1は使用されている状態となる。その状態で第2のスレッドによってS801が実行されると、第1のスレッドによってインタフェース1が使用されているので、第2のスレッドは使用されていないインタフェースであるインタフェース2を選択することになる。
その状態で第3のスレッドによってS801が実行されると、インタフェース1もインタフェース2も使用されているので、第3のスレッドはインタフェース1を選択する。この場合、第3のスレッドはインタフェース1が開放されるまで待機状態となる。
【0105】
S803では、第1のスレッドはインタフェース1を用いた中継処理を実行する。
S804では、第1のスレッドはインタフェース1の排他終了処理を実行する。インタフェース1の排他終了処理を実行するとインタフェース1のミューテックスが解放され、第3のスレッドによってそのミューテックスが取得される。
【0106】
(2)IPP機能による通信処理
次に、図12を参照して、実施形態4に係るIPP機能31による通信処理について説明する。
S901では、IPP機能31はインタフェース1に通信データがあるか否かを判断し、ある場合はS902に進み、ない場合はS904に進む。
S902では、IPP機能31はインタフェース1を介して要求を受信する。
【0107】
S903では、IPP機能31はS902で受信した要求に対する応答を、インタフェース1を介してIPP/USB変換プログラム22に送信する。
S904では、IPP機能31はIインタフェース2に通信データがあるか否かを判断し、ある場合はS905に進み、ない場合はS901に戻る。
【0108】
S905では、IPP機能31はインタフェース2を介して要求を受信する。
S906では、IPP機能31はS905で受信した要求に対する応答を、インタフェース2を介してIPP/USB変換プログラム22に送信する。応答の送信が完了した後、IPP機能31はS901に戻る。
【0109】
(3)実施形態の効果
以上説明した実施形態4に係るIPP/USB変換プログラム22によると、マルチセッションの概念がない複数のインタフェースを介してWebブラウザ23がプリンタ2とマルチセッションによって混乱なく通信することができる。
【0110】
<実施形態5>
次に、実施形態5を図13によって説明する。
図13に示すように、実施形態5に係るプリンタ2はIPP機能31を備えていない。その替わりとして、実施形態5に係るプリンタ2はWebサーバ機能33を備えている。
【0111】
この場合もWebブラウザ23はマルチセッションによる通信を行うので、応答が混乱する可能性がある。そのため、実施形態5では、IPP/USB変換プログラム22を介してWebサーバ機能33と通信する。ただし、プリンタ2はIPP機能31を備えていないので、IPP/USB変換プログラム22はWebサーバ機能33とUSBを介してHTTPによって通信する。
IPP/USB変換プログラム22は要求をUSBのパケットに格納してWebサーバ機能33に送信し、Webサーバ機能33はそれに対する応答をUSBのパケットに格納してIPP/USB変換プログラム22に送信する。ここで、図13に示すように、実施形態5ではプリンタ2を設定するための通信はエンドポイント0を用いて行われる。
【0112】
また、実施形態5ではプリンタ2がIPP機能31を備えていないので、スプーラ24はIPP/USB変換プログラム22を介さずにプリンタ2に印刷データを送信する。スプーラ24とプリンタ2との通信はインタフェース1を用いて行われる。
【0113】
以上説明したIPP/USB変換プログラム22によると、プリンタ2がIPP機能31を備えていない場合でも、USBを介してWebブラウザ23がプリンタ2とマルチセッションによって混乱なく通信することができる。
【0114】
<他の実施形態>
上記記述及び図面によって説明した実施形態に限定されるものではなく、例えば次のような実施形態も技術的範囲に含まれる。
【0115】
(1)上記実施形態ではマルチセッションによって通信するクライアントアプリケーションとしてWebブラウザ23を例に説明した。しかしながら、クライアントアプリケーションはマルチセッションによって通信するものであれば他のアプリケーションであってもよい。
【0116】
(2)上記実施形態では通信回線としてUSBを例に説明した。しかしながら、通信回線はUSBに限られない。例えばPC1とプリンタ2とはプリンタの通信規格であるIEEE1284によって通信するものであってもよい。
【0117】
(3)上記実施形態ではセッションの確立が要求される毎に新たなスレッドを作成する場合を例に説明した。これに対し、スレッドを作成せず、通信中継処理において各セッションに対する処理をシーケンシャルに実行してもよい。または、スレッドに替えてプロセスを作成し、スレッドによって行っていた処理をプロセスによって行ってもよい。
【0118】
(4)実施形態4ではPC1とプリンタ2とを論理的な複数の通信回線で接続する場合を例に説明した。これに対し、PC1とプリンタ2とは物理的な複数の通信回線で接続されてもよい。
【0119】
(5)上記実施形態ではプリンタ2を設定するための通信をマルチセッションによって行う場合にセッションの排他制御を行う場合を例に説明した。これに加えて、プリンタ2に印刷データを送信するための通信をマルチセッションで行う場合にセッションの排他制御を行ってもよい。
【0120】
(6)上記実施形態では画像処理装置としてプリンタ2を例に説明した。これに対し、画像処理装置は、印刷機能、スキャナ機能、コピー機能、ファクシミリ機能などを備える所謂複合機であってもよい。
【0121】
(7)上記実施形態では、排他処理開始の後にWebブラウザ23からの受信を行っている。すなわち排他処理により実行が許可されるまではWebブラウザ23からの要求の受信をしない。しかし排他の開始はWebブラウザ23からのデータをプリンタ(IPP機能31又はWebサーバ機能33)に送信する前であればよく、Webブラウザ23からの要求を受信した後であってもかまわない。
【符号の説明】
【0122】
1・・・PC、2・・・プリンタ、5・・・通信ネットワーク、10・・・CPU、15・・・記憶部、16・・・USBホストインタフェース部、17・・・ネットワークインタフェース部、22・・・IPP/USB変換プログラム、23・・・Webブラウザ、24・・・スプーラ、31・・・IPP機能、32・・・印刷機能、41・・・設定画面
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13