(57)【要約】【課題】マルチセッションの概念がない通信回線を介してクライアントアプリケーションが画像処理装置とマルチセッションによって混乱なく通信すること。【解決手段】新たなセッションが確立されると、他のセッション以外のセッションによる通信が禁止されている場合は通信を待機し、通信が禁止されていない場合、又は、待機が解除された場合に、当該新たなセッション以外のセッションによる通信を禁止した状態で、当該新たなセッションを介してクライアントアプリケーションと画像処理装置との間で通信を中継し、中継が完了すると当該新たなセッション以外のセッションによる通信を解禁する、通信中継プログラム。【選択図】図６
2014049022.tif 000002
【特許請求の範囲】
【請求項１】
画像処理装置と通信回線を介して通信可能に接続されている情報処理装置で実行される通信中継プログラムであって、
マルチセッションによって通信するクライアントアプリケーションからセッションの確立を要求されると、その要求に応じて前記クライアントアプリケーションとの間に新たなセッションを確立する確立処理と、
前記確立処理によって前記新たなセッションが確立されると、前記クライアントアプリケーションとの間に確立されている他のセッション以外のセッションによる通信が禁止されているか否かを判断する判断処理と、
前記判断処理によって通信が禁止されていると判断された場合に、通信が解禁されるまで前記新たなセッションによる通信を待機する待機処理と、
前記判断処理によって通信が禁止されていないと判断された場合、又は、前記待機処理による待機が解除された場合に、前記新たなセッション以外のセッションによる通信を禁止する排他処理と、
前記排他処理によって前記新たなセッション以外のセッションによる通信を禁止した状態で、前記新たなセッションを介して前記クライアントアプリケーションと前記画像処理装置との間で通信を中継する中継処理と、
前記中継処理による中継が完了すると、前記新たなセッション以外のセッションによる通信を解禁する解禁処理と、
を前記情報処理装置に実行させる通信中継プログラム。
【請求項２】
請求項１に記載の通信中継プログラムであって、
前記通信は一の要求とその要求に対する応答からなり、
前記中継処理において、一対の前記要求及び前記応答の中継が完了すると、中継が完了したと判断する、通信中継プログラム。
【請求項３】
請求項１又は請求項２に記載の通信中継プログラムであって、
前記通信回線はユニバーサルシルアルバスである、通信中継プログラム。
【請求項４】
請求項１乃至請求項３のいずれか一項に記載の通信中継プログラムであって、
前記画像処理装置はＷｅｂサーバ機能を有し、
前記クライアントアプリケーションはＷｅｂブラウザであり、
当該通信中継プログラムは、前記Ｗｅｂブラウザと前記Ｗｅｂサーバ機能との間で送受信される通信データを中継する、通信中継プログラム。
【請求項５】
請求項１乃至請求項４に記載の通信中継プログラムであって、
前記通信は、前記クライアントアプリケーションから前記画像処理装置を設定するための通信である、通信中継プログラム。
【請求項６】
請求項１乃至請求項５のいずれか一項に記載の通信中継プログラムであって、
当該通信中継プログラムは前記クライアントアプリケーションから要求を受信するとその要求を前記画像処理装置に送信し、前記画像処理装置からその要求に対する応答を受信するとその応答を前記クライアントアプリケーションに送信するものであり、
前記要求及び前記応答はそれぞれ複数の通信データからなり、
当該通信中継プログラムは、
前記クライアントアプリケーションから受信した通信データを解析し、当該通信データが前記要求の終了を示す通信データであるか否かを判断する第１の解析処理と、
前記画像処理装置から受信した通信データを解析し、当該通信データが前記応答の終了を示す通信データであるか否かを判断する第２の解析処理と、
を前記情報処理装置に実行させ、
前記中継処理において、前記第１の解析処理により前記要求の終了を示す通信データであると判断された場合に前記要求の受信が完了したと判断し、前記第２の解析処理により前記応答の終了を示す通信データであると判断された場合に前記応答の受信が完了したと判断する、通信中継プログラム。
【請求項７】
請求項１乃至請求項５のいずれか一項に記載の通信中継プログラムであって、
当該通信中継プログラムは前記クライアントアプリケーションから要求を受信するとその要求を前記画像処理装置に送信し、前記画像処理装置からその要求に対する応答を受信するとその応答を前記クライアントアプリケーションに送信するものであり、
前記要求は複数の通信データからなり、
当該通信中継プログラムは、前記中継処理において、
前記クライアントアプリケーションから前記通信データを受信した後に次の前記通信データを第１の規定時間以上受信しない場合に前記要求の受信が完了したと仮判断し、
前記画像処理装置に前記要求を送信したときから第２の規定時間以内に前記画像処理装置から前記応答を受信しない場合に、前記クライアントアプリケーションからの前記要求の受信が完了していないと判断して前記クライアントアプリケーションから残りの通信データを受信する、通信中継プログラム。
【請求項８】
請求項７に記載の通信中継プログラムであって、
前記中継処理において、前記応答の送信が完了したか否かを前記画像処理装置に問い合せ、前記画像処理装置から完了したとの問い合せ結果を受信した場合に、前記応答の受信が完了したと判断する、通信中継プログラム。
【請求項９】
請求項１乃至請求項８のいずれか一項に記載の通信中継プログラムであって、
前記クライアントアプリケーション及び前記情報処理装置は単一の前記セッションにおいて複数の要求及び応答の対を送受信可能に構成されるものであり、
当該通信中継プログラムは、
前記中継処理による一対の前記要求及び前記応答の中継が完了すると、前記解禁処理において前記新たなセッション以外のセッションによる通信を解禁し、
前記解禁処理によって前記新たなセッション以外のセッションによる通信を解禁した後、第３の規定時間以内に前記新たなセッションを維持する維持信号を受信した場合は前記判断処理に戻って処理を繰り返す一方、前記維持信号を受信しなかった場合は前記新たなセッションを切断する、通信中継プログラム。
【請求項１０】
請求項１乃至請求項９のいずれか一項に記載の通信中継プログラムであって、
前記情報処理装置は複数の物理的又は論理的な前記通信回線によって前記画像処理装置と通信可能に接続されており、
当該通信中継プログラムは、
前記クライアントアプリケーションからセッションの確立を要求される毎に、いずれかの前記通信回線を選択する選択処理を前記情報処理装置に実行させ、
前記排他処理において、同一の前記通信回線を用いて通信する他のセッションの通信を禁止する、通信中継プログラム。
【請求項１１】
画像処理装置と通信回線を介して通信可能に接続されている通信中継装置であって、
処理部を備え、
前記処理部は、
マルチセッションによって通信するクライアントアプリケーションからセッションの確立を要求されると、その要求に応じて前記クライアントアプリケーションとの間に新たなセッションを確立する確立処理と、
前記確立処理によって前記新たなセッションが確立されると、前記クライアントアプリケーションとの間に確立されている他のセッション以外のセッションによる通信が禁止されているか否かを判断する判断処理と、
前記判断処理によって通信が禁止されていると判断された場合に、通信が解禁されるまで前記新たなセッションによる通信を待機する待機処理と、
前記判断処理によって通信が禁止されていないと判断された場合、又は、前記待機処理による待機が解除された場合に、前記新たなセッション以外のセッションによる通信を禁止する排他処理と、
前記排他処理によって前記新たなセッション以外のセッションによる通信を禁止した状態で、前記新たなセッションを介して前記クライアントアプリケーションと前記画像処理装置との間で通信を中継する中継処理と、
前記中継処理による中継が完了すると、前記新たなセッション以外のセッションによる通信を解禁する解禁処理と、
を実行する、通信中継装置。
【発明の詳細な説明】
【技術分野】
【０００１】
通信を中継する技術に関する。
【背景技術】
【０００２】
従来、画像処理装置にＷｅｂサーバ機能を備え、端末装置で実行されるＷｅｂブラウザに画像処理装置の設定画面などを表示する技術が開示されている（例えば特許文献１参照）。
また、画像処理装置と端末装置とをインターネットで接続し、インターネットを介して画像処理装置に画像を処理させるＩＰＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｉｎｔｉｎｇ  Ｐｒｏｔｏｃｏｌ）と呼ばれる規格が知られている。
そして、画像処理装置と端末装置とがＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）によって接続されている環境において上述したＩＰＰによる通信を行うためのＩＰＰ  ｏｖｅｒ  ＵＳＢという規格のドラフトが知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−２５７９４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、一般にＷｅｂブラウザとＷｅｂサーバ機能とはマルチセッションによって通信を行っている。従って、Ｗｅｂブラウザが画像処理装置の設定画面などを表示する場合には、ＷｅｂブラウザはマルチセッションによってＷｅｂサーバ機能と通信しようとする。
しかしながら、ＵＳＢにはマルチセッションの概念がない。このため、端末装置と画像処理装置とがＵＳＢによって接続されている環境でＷｅｂブラウザがＷｅｂサーバ機能とマルチセッションによって通信しようとすると、あるセッションへの応答が別のセッションに送信されてしまうなどのように応答が混乱してしまう可能性がある。
【０００５】
本明細書では、マルチセッションの概念がない通信回線を介してクライアントアプリケーションが画像処理装置とマルチセッションによって混乱なく通信する技術を開示する。
【課題を解決するための手段】
【０００６】
本明細書によって開示される通信中継プログラムは、画像処理装置と通信回線を介して通信可能に接続されている情報処理装置で実行される通信中継プログラムであって、マルチセッションによって通信するクライアントアプリケーションからセッションの確立を要求されると、その要求に応じて前記クライアントアプリケーションとの間に新たなセッションを確立する確立処理と、前記確立処理によって前記新たなセッションが確立されると、前記クライアントアプリケーションとの間に確立されている他のセッション以外のセッションによる通信が禁止されているか否かを判断する判断処理と、前記判断処理によって通信が禁止されていると判断された場合に、通信が解禁されるまで前記新たなセッションによる通信を待機する待機処理と、前記判断処理によって通信が禁止されていないと判断された場合、又は、前記待機処理による待機が解除された場合に、前記新たなセッション以外のセッションによる通信を禁止する排他処理と、前記排他処理によって前記新たなセッション以外のセッションによる通信を禁止した状態で、前記新たなセッションを介して前記クライアントアプリケーションと前記画像処理装置との間で通信を中継する中継処理と、前記中継処理による中継が完了すると、前記新たなセッション以外のセッションによる通信を解禁する解禁処理と、を前記情報処理装置に実行させる。
【０００７】
上記通信中継プログラムによると、いずれかのセッションを介して通信を中継している間は他のセッションによる通信を禁止するので、あるセッションへの応答が別のセッションに送信されてしまうなどのように応答が混乱してしまうことを抑制できる。
よって上記通信中継プログラムによると、マルチセッションの概念がない通信回線を介してクライアントアプリケーションが画像処理装置とマルチセッションによって混乱なく通信することができる。
【０００８】
また、前記通信は一の要求とその要求に対する応答からなり、前記中継処理において、一対の前記要求及び前記応答の中継が完了すると、中継が完了したと判断してもよい。
【０００９】
上記通信中継プログラムによると、一対の前記要求及び前記応答の中継が完了すると他のセッションによる通信を解禁するので、他のセッションの待機時間を短くすることができる。
【００１０】
また、前記通信回線はユニバーサルシルアルバスであってもよい。
【００１１】
上記通信中継プログラムによると、ユニバーサルシルアルバスを介してクライアントアプリケーションが画像処理装置とマルチセッションによって混乱なく通信することができる。
【００１２】
また、前記画像処理装置はＷｅｂサーバ機能を有し、前記クライアントアプリケーションはＷｅｂブラウザであり、当該通信中継プログラムは、前記Ｗｅｂブラウザと前記Ｗｅｂサーバ機能との間で送受信される通信データを中継してもよい。
【００１３】
上記通信中継プログラムによると、マルチセッションの概念がない通信回線を介してＷｅｂブラウザがＷｅｂサーバ機能とマルチセッションによって混乱なく通信することができる。
【００１４】
また、前記通信は、前記クライアントアプリケーションから前記画像処理装置を設定するための通信であってもよい。
【００１５】
上記通信中継プログラムによると、クライアントアプリケーションから画像処理装置を設定する場合にマルチセッションによって混乱なく通信することができる。
【００１６】
また、当該通信中継プログラムは前記クライアントアプリケーションから要求を受信するとその要求を前記画像処理装置に送信し、前記画像処理装置からその要求に対する応答を受信するとその応答を前記クライアントアプリケーションに送信するものであり、前記要求及び前記応答はそれぞれ複数の通信データからなり、当該通信中継プログラムは、前記クライアントアプリケーションから受信した通信データを解析し、当該通信データが前記要求の終了を示す通信データであるか否かを判断する第１の解析処理と、前記画像処理装置から受信した通信データを解析し、当該通信データが前記応答の終了を示す通信データであるか否かを判断する第２の解析処理と、を前記情報処理装置に実行させ、前記中継処理において、前記第１の解析処理により前記要求の終了を示す通信データであると判断された場合に前記要求の受信が完了したと判断し、前記第２の解析処理により前記応答の終了を示す通信データであると判断された場合に前記応答の受信が完了したと判断してもよい。
【００１７】
上記通信中継プログラムによると、要求及び応答の受信が完了したことを確実に判断することができる。
【００１８】
また、当該通信中継プログラムは前記クライアントアプリケーションから要求を受信するとその要求を前記画像処理装置に送信し、前記画像処理装置からその要求に対する応答を受信するとその応答を前記クライアントアプリケーションに送信するものであり、前記要求は複数の通信データからなり、当該通信中継プログラムは、前記中継処理において、前記クライアントアプリケーションから前記通信データを受信した後に次の前記通信データを第１の規定時間以上受信しない場合に前記要求の受信が完了したと仮判断し、前記画像処理装置に前記要求を送信したときから第２の規定時間以内に前記画像処理装置から前記応答を受信しない場合に、前記クライアントアプリケーションからの前記要求の受信が完了していないと判断して前記クライアントアプリケーションから残りの通信データを受信してもよい。
【００１９】
上記通信中継プログラムによると、クライアントアプリケーションから通信データを第１の規定時間以上受信しない場合に要求の受信が完了したと仮判断するので、要求の受信が完了したか否かを、通信データの内容を解析することなく判断することができる。
ただし、実際には要求の受信は完了しておらず、なんらかの理由で送信が遅れているだけの場合もある。要求の受信が完了していない場合は、画像処理装置は応答を送信しないので、画像処理装置から第２の規定時間以内に応答を受信しない場合は、要求の受信が完了したという仮判断は誤りであったことが判る。
通信中継プログラムによると、仮判断が誤りであった場合はクライアントプログラムから残りの通信データを受信するので、全ての通信データを受信することができる。
【００２０】
また、前記中継処理において、前記応答の送信が完了したか否かを前記画像処理装置に問い合せ、前記画像処理装置から完了したとの問い合せ結果を受信した場合に、前記応答の受信が完了したと判断してもよい。
【００２１】
上記通信中継プログラムによると、通信の中継が完了したか否かを通信データの内容を解析することなく判断することができる。
【００２２】
また、前記クライアントアプリケーション及び前記情報処理装置は単一の前記セッションにおいて複数の要求及び応答の対を送受信可能に構成されるものであり、当該通信中継プログラムは、前記中継処理による一対の前記要求及び前記応答の中継が完了すると、前記解禁処理において前記新たなセッション以外のセッションによる通信を解禁し、前記解禁処理によって前記新たなセッション以外のセッションによる通信を解禁した後、第３の規定時間以内に前記新たなセッションを維持する維持信号を受信した場合は前記判断処理に戻って処理を繰り返す一方、前記維持信号を受信しなかった場合は前記新たなセッションを切断してもよい。
【００２３】
上記通信中継プログラムによると、要求毎にセッションを切断しないことにより、効率よく通信することができる。
【００２４】
また、前記情報処理装置は複数の物理的又は論理的な前記通信回線によって前記画像処理装置と通信可能に接続されており、当該通信中継プログラムは、前記クライアントアプリケーションからセッションの確立を要求される毎に、いずれかの前記通信回線を選択する選択処理を前記情報処理装置に実行させ、前記排他処理において、同一の前記通信回線を用いて通信する他のセッションの通信を禁止してもよい。
【００２５】
上記通信中継プログラムによると、マルチセッションの概念がない複数の通信回線を介してクライアントアプリケーションが画像処理装置とマルチセッションによって混乱なく通信することができる。
【００２６】
なお、本明細書によって開示される技術は、通信中継装置、通信中継方法、通信中継プログラムを記録した記録媒体等の種々の態様で実現することができる。
【図面の簡単な説明】
【００２７】
【図１】実施形態１に係るＰＣの電気的構成を簡略化して示すブロック図。
【図２】ＰＣのプログラム構成、及び、プリンタの機能を示すブロック図。
【図３】プリンタの設定画面の一例を示す模式図。
【図４】通信中継処理の全体的な流れを示すシーケンスチャート。
【図５】通信中継処理のフローチャート。
【図６】スレッドによって実行される処理のフローチャート。
【図７】スレッド単位の中継処理のフローチャート。
【図８】実施形態２に係るスレッド単位の中継処理のフローチャート。
【図９】実施形態３に係るスレッドによって実行される処理のフローチャート。
【図１０】通信中継処理のフローチャート。
【図１１】実施形態４に係るスレッドによって実行される処理のフローチャート。
【図１２】ＩＰＰ機能による通信処理のフローチャート。
【図１３】実施形態５に係るＰＣのプログラム構成、及び、プリンタの機能を示すブロック図。
【発明を実施するための形態】
【００２８】
＜実施形態１＞
実施形態１を図１ないし図７によって説明する。
（１）ＰＣの電気的構成
先ず、図１を参照して、実施形態１に係る情報処理装置としてのパーソナルコンピュータ（ＰＣと記す）１の電気的構成について説明する。
ＰＣ１は、ＣＰＵ１０、ＲＯＭ１１、ＲＡＭ１２、表示部１３、操作部１４、記憶部１５、ＵＳＢホストインタフェース部（図１ではＵＳＢホストＩＦ部と記す）１６、及び、ネットワークインタフェース部（図１ではネットワークＩＦ部と記す）１７、を備えている。
【００２９】
ＣＰＵ１０は、ＲＯＭ１１や記憶部１５に記憶されているプログラムを実行することによってＰＣ１の各部を制御する。ＲＯＭ１１にはＣＰＵ１０によって実行されるプログラムやデータなどが記憶されている。ＲＡＭ１２はＣＰＵ１０が各種の処理を実行するための主記憶装置として用いられる。ＣＰＵ１０は処理部の一例である。
【００３０】
表示部１３は、液晶ディスプレイなどの表示装置、表示装置を駆動するディスプレイ駆動回路などを備えて構成されている。
操作部１４は、キーボードやマウス、それらが接続されるインタフェースなどで構成されている。
【００３１】
記憶部１５は、ハードディスクやフラッシュメモリなどの不揮発性のメモリを用いて各種のプログラムやデータを記憶する装置である。記憶部１５には、オペレーティングシステム（ＯＳと記す）２１、ＩＰＰ／ＵＳＢ変換プログラム２２、Ｗｅｂブラウザ２３などが記憶されている。
ＩＰＰ／ＵＳＢ変換プログラム２２は通信中継プログラムの一例である。また、Ｗｅｂブラウザ２３はマルチセッションによって通信するクライアントアプリケーションの一例である。
【００３２】
ＵＳＢホストインタフェース部１６は、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ、ユニバーサルシリアルバス）ホストコントローラ、ＵＳＢケーブルが接続されるジャックなどを備えて構成されており、ＵＳＢケーブルを介してプリンタ２と通信可能に接続されている。ＵＳＢは通信回線の一例である。
【００３３】
ネットワークインタフェース部１７は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）やインターネットなどの通信ネットワーク５を介してＰＣ、携帯電話、携帯通信端末などの外部の通信端末３と通信するためのインタフェースである。なお、ネットワークインタフェース部１７は有線によって通信ネットワーク５と接続されるものであってもよいし、無線によって接続されるものであってもよい。
【００３４】
（２）プリンタ
図１に示すプリンタ２は、印刷用紙などのシートに電子写真方式やインクジェット方式などで画像を印刷する装置である。プリンタ２はＵＳＢプリンタクラスデバイスとして構成されている。プリンタ２は画像処理装置の一例である。
プリンタ２は複数のプリンタ言語を解釈可能であり、ユーザはいずれのプリンタ言語を用いるかを予めプリンタ２に設定しておくものとする。また、プリンタ２は画像が印刷されるシートを収容するシートトレイとして第１のトレイ及び第２のトレイを備えている。ユーザは各トレイに収容されているシートのサイズを予めプリンタ２に設定しておくものとする。詳しくは後述するが、これらの設定はＰＣ１からＵＳＢを介して行うことができる。
【００３５】
（３）ＰＣとプリンタとの通信
ＰＣ１はプリンタ２との間でＵＳＢを介して少なくとも以下の通信を行う。
・プリンタ２を設定するための通信
・プリンタ２に印刷データを送信するための通信
これらの通信はＩＰＰ  ｏｖｅｒ  ＵＳＢ規格に従って行われる。ＩＰＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｉｎｔｉｎｇ  Ｐｒｏｔｏｃｏｌ）とは、ＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）をベースにした規格であって、インターネットやＬＡＮなどのＴＣＰ／ＩＰネットワークを介してプリンタ２と通信するための規格である。
【００３６】
ＩＰＰ  ｏｖｅｒ  ＵＳＢはＵＳＢによって接続されている環境において上述したＩＰＰによる通信を実現するための規格である。ＩＰＰ  ｏｖｅｒ  ＵＳＢではＩＰＰの通信データがＵＳＢのパケットに格納されて送受信される。
【００３７】
（４）ＰＣのプログラム構成、及び、プリンタの機能
次に、図２を参照して、ＩＰＰ  ｏｖｅｒ  ＵＳＢによって通信を行うためのＰＣ１のプログラム構成、及び、プリンタ２の機能について説明する。
【００３８】
先ず、ＰＣ１のプログラム構成について説明する。ＰＣ１は、Ｗｅｂブラウザ２３、スプーラ２４、及び、ＩＰＰ／ＵＳＢ変換プログラム２２を実行する。
Ｗｅｂブラウザ２３はユーザがプリンタ２の設定を行うためのユーザインタフェースとして用いられるプログラムである。Ｗｅｂブラウザ２３としては一般に利用されているものを用いることができる。
【００３９】
ＰＣ１とプリンタ２とがＵＳＢによって接続されている環境では、Ｗｅｂブラウザ２３はＩＰＰ／ＵＳＢ変換プログラム２２とＨＴＴＰによって通信する。ＩＰＰ／ＵＳＢ変換プログラムはｌｏｃａｌｈｏｓｔ(ＩＰ=１２７．０.０．１)の特定ポート（以後はポート８０を使用するものとして記述する）に対するサーバとして働く。ＷＥＢブラウザ２３はｌｏｃａｌｈｏｓｔのポート８０（例：ｈｔｔｐ://１２７．０.０．１:８０）に対してアクセスすることにより、プリンタ２の設定画面４１（図３参照）を表示するための画面データの送信をＩＰＰ／ＵＳＢ変換プログラム２２に要求する。
ここで、画面データはＨＴＭＬ（ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）やＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）によって記述されている。
ＩＰＰ／ＵＳＢ変換プログラム２２に送信した要求は、ＩＰＰ／ＵＳＢ変換プログラム２２により、ＵＳＢを介してプリンタ２のＩＰＰ機能３１に送信される。このＩＰＰ機能３１は、ＩＰＰ印刷、設定画面ＣＧＩを行うものであり、データの入出力をＵＳＢを介して行うことを除けば、ネットワークを介して行う従来のものと同じである。したがってその詳細はここでは省略する。
なお、Ｗｅｂブラウザ２３はＰＣ１で実行されてもよいし、ＰＣ１と通信可能に接続されている外部の通信端末３で実行されてもよい。
【００４０】
スプーラ２４は印刷データをスプールするプログラムである。スプーラ２４はＯＳ２１の一部として提供される。ＰＣ１とプリンタ２とがＵＳＢによって接続されている環境では、スプーラ２４はＩＰＰ／ＵＳＢ変換プログラム２２とＩＰＰによって通信することにより、ＩＰＰ／ＵＳＢ変換プログラム２２に印刷データを送信する。
ＩＰＰ／ＵＳＢ変換プログラム２２に送信した印刷データは、ＩＰＰ／ＵＳＢ変換プログラム２２により、ＵＳＢを介してプリンタ２のＩＰＰ機能３１に送信される。
【００４１】
ＩＰＰ／ＵＳＢ変換プログラム２２は、Ｗｅｂブラウザ２３とＩＰＰ機能３１との間、及び、スプーラ２４とＩＰＰ機能３１との間で通信を中継するプログラムである。ＩＰＰ／ＵＳＢ変換プログラム２２はＩＰＰ機能３１とＵＳＢを介して通信する。ＩＰＰ／ＵＳＢ変換プログラム２２の詳細については後述する。
【００４２】
次に、プリンタ２の機能について説明する。プリンタ２は、ＩＰＰ機能３１、及び、印刷機能３２を備えている。
ＩＰＰ機能３１は、Ｗｅｂブラウザ２３からプリンタ２を設定するためのＷｅｂサーバ機能、及び、ＰＣ１から受信した印刷データを印刷機能３２に出力する機能を備えている。ＩＰＰ機能３１はＷｅｂサーバ機能の一例である。
印刷機能３２は、ＩＰＰ機能３１から出力された印刷データを印刷する機能である。
【００４３】
（５）ＵＳＢにおけるインタフェース
次に、ＵＳＢにおけるインタフェースについて説明する。ＵＳＢでは物理的に一本のＵＳＢケーブルにインタフェースと呼ばれる１以上の論理的な通信回線が構成される。
ＵＳＢではコントロール転送を行うためのエンドポイント０と呼ばれる特殊なエンドポイントが必ず構成される。エンドポイント０は双方向通信が可能なエンドポイントである。インタフェースはエンドポイント０を介してプリンタ２から取得されるインタフェースディスクリプタに基づいて構成される。各インタフェースは通常１ないし複数のエンドポイントを有する。
【００４４】
本実施形態のプリンタではインタフェース１及びインタフェース２が構成されるものとする。さらに、それらインタフェースは、リード用エンドポイントおよびライト用エンドポイントを有し、それらを使用することにより双方向通信を実現している。
そして、プリンタ２を設定するための通信はインタフェース１を用いて行われ、プリンタ２に印刷データを送信するための通信はインタフェース２を用いて行われるものとする。
【００４５】
なお、インタフェース２を構成せず、プリンタ２を設定するための通信、及び、プリンタ２に印刷データを送信するための通信をどちらもインタフェース１を用いて行ってもよい。
【００４６】
（６）ＵＳＢを介してマルチセッションによる通信を行う場合の課題
次に、ＵＳＢを介してマルチセッションによる通信を行う場合の課題について説明する。ここではＰＣ１からプリンタ２を設定するための通信を例に説明する。
ここでは先ず、図３を参照して、プリンタ２の設定画面４１について説明する。図３に示す例の設定画面４１では、プリンタ言語４１ａ、第１のトレイにセットされている用紙サイズ４１ｂ、第２のトレイにセットされている用紙サイズ４１ｃを設定することができる。
また、図３に示すように、設定画面４１には画像４２、画像４３、画像４４が表示される。ここでは画像４２〜４４をそれぞれＧＩＦ１、ＧＩＦ２、ＧＩＦ３というものとする。これらの画像は画面データには含まれていないので、Ｗｅｂブラウザ２３は画面データを受信した後にＩＰＰ／ＵＳＢ変換プログラム２２にこれらの画像の送信を要求する。
すなわち、この設定画面４１はＩＰＰ機能３１による設定画面ＣＧＩにより作成されるＨＴＭＬ又はＸＭＬデータで構成される。
Ｗｅｂブラウザ２３によりｌｏｃａｌｈｏｓｔの特定ポート８０（例：ｈｔｔｐ://１２７．０.０．１:８０）がアクセスされると、Ｗｅｂブラウザ２３はそのメインページのファイルを取得するためのＧＥＴコマンドを発行するためのセッションをＩＰＰ／ＵＳＢ変換プログラムとの間に構築する。このＧＥＴコマンドはＩＰＰ／ＵＳＢ変換プログラム２２によりＵＳＢを介してプリンタ２に送られＩＰＰ機能３１のＣＧＩにより処理される。この応答として、設定画面４１を表示するためのＨＴＭＬ／ＸＭＬデータのメインページがＵＳＢを介して返される。このデータは再びＩＰＰ／ＵＳＢ変換プログラム２２によりＧＥＴコマンドの応答としてブラウザ２３に返される。
ブラウザ２３はこのメインページを解析し、ページを表示するに足りない部品（ＧＩＦ１、ＧＩＦ２、ＧＩＦ３など）を同様に要求する。
【００４７】
この場合に、Ｗｅｂブラウザ２３はマルチセッションによる通信が可能であるので、足りない部品（ＧＩＦ１，ＧＩＦ２、ＧＩＦ３）毎にセッションを確立して画像の送信を要求する。つまり、まずＧＩＦ１に対するＧＥＴコマンドが送信され、その応答を待たずに続けてＧＩＦ２，ＧＩＦ３に対するＧＥＴコマンドが送られる。しかしながら、ＵＳＢのインタフェースにはマルチセッションの概念がない。またＩＰＰ機能３１は、かならずＧＥＴコマンドの順にその要求された部品を返すわけではなく、その返す順位は不定である。このため、複数のセッションの要求がインタフェース１を介して通信しようとすると、あるセッションに対する応答が別のセッションに送信されてしまうなどのような混乱が起こり得る。
【００４８】
具体的には、ＩＰＰ機能３１からＩＰＰ／ＵＳＢ変換プログラム２２に送信される応答にはセッションを識別するための情報は付加されない。このため、各セッションがインタフェース１を介して通信すると、ＩＰＰ機能３１から応答を受信したとき、ＩＰＰ／ＵＳＢ変換プログラム２２はその応答がいずれのセッションに対する応答であるかを判断できない。このため、あるセッションに対する応答が別のセッションに送信されてしまうなどのような混乱が起こり得る。
【００４９】
そこで、実施形態１に係るＩＰＰ／ＵＳＢ変換プログラム２２は、排他処理を実行することにより、同時に一のセッションのみを介して通信を中継する。
【００５０】
（７）ＩＰＰ／ＵＳＢ変換プログラムによる通信中継処理の全体的な流れ
図４を参照して、ＩＰＰ／ＵＳＢ変換プログラム２２による通信中継処理の全体的な流れについて説明する。ここではＰＣ１からプリンタ２を設定するための通信を例に説明する。前述したようにプリンタ２を設定するための通信はインタフェース１を用いて行われる。
以降の説明においてＷｅｂブラウザ２３というときはＷｅｂブラウザ２３を実行するＣＰＵ１０のことをいう。ＩＰＰ／ＵＳＢ変換プログラム２２についても同様である。
【００５１】
ＩＰＰ／ＵＳＢ変換プログラム２２はｈｔｔｐ://１２７．０.０．１:８０に対するＴＣＰサーバープログラムとして常駐している。
Ｗｅｂブラウザ２３はユーザから設定画面４１の表示を指示するためのアドレス（ｈｔｔｐ://１２７．０.０．１:８０）が入力されるとＩＰＰ／ＵＳＢ変換プログラム２２との間にネットワークのセッションを確立する（Ｓ１０１）。そして、Ｗｅｂブラウザ２３はそのセッションを介して、画面データのメインページの送信を要求するＧＥＴ要求をＩＰＰ／ＵＳＢ変換プログラム２２に送信する（Ｓ１０２）。なおここで説明するネットワークは、単一のＰＣ１内で行われる擬似的なネットワークを想定している。
【００５２】
ＩＰＰ／ＵＳＢ変換プログラム２２は、メインページに対するＧＥＴ要求を受信すると、そのＧＥＴ要求をＵＳＢを介してプリンタ２のＩＰＰ機能３１に転送する（Ｓ１０３）。
ＩＰＰ機能３１はＧＥＴ要求を受信すると、画面データをＩＰＰ／ＵＳＢ変換プログラム２２に送信する（Ｓ１０４）。
【００５３】
ＩＰＰ／ＵＳＢ変換プログラム２２は、ＩＰＰ機能３１からメインページのデータを受信すると、その画面データをネットワーク経由でＷｅｂブラウザ２３に転送する（Ｓ１０５）。
Ｗｅｂブラウザ２３はメインページのデータを受信すると、そのデータを解釈する（Ｓ１０６）。このメインページには、設定画面４１を表示するために必要なＧＩＦ１，ＧＩＦ２，ＧＩＦ３の情報が記述されている。そこで、Ｗｅｂブラウザ２３は、それらＧＩＦ１、ＧＩＦ２，ＧＩＦ３を取得するために、ＩＰＰ／ＵＳＢ変換プログラム２２との間に新たなセッションを確立して画像の送信を要求する。
【００５４】
その場合に、Ｗｅｂブラウザ２３はマルチセッションによってＧＩＦ１、ＧＩＦ２、ＧＩＦ３のそれぞれにセッションを確立して画像の送信を要求する。従って、図３に示す設定画面４１の場合は図４に示すようにＧＩＦ１の送信を要求するためのセッション２（Ｓ１０７）、ＧＩＦ２の送信を要求するためのセッション３（Ｓ１０８）、及び、ＧＩＦ３の送信を要求するためのセッション４（Ｓ１０９）の三つのセッションが確立される。ここではセッション２、セッション３、及び、セッション４の順で確立されたものとする。
【００５５】
この場合、ＩＰＰ／ＵＳＢ変換プログラム２２は、最初のセッションであるセッション２を確立すると、セッション２以外のセッションによる通信を禁止する。そして、ＩＰＰ／ＵＳＢ変換プログラム２２はセッション２を介してＷｅｂブラウザ２３とＩＰＰ機能３１との間で通信を中継する（Ｓ１１０〜Ｓ１１３）。
そして、ＩＰＰ／ＵＳＢ変換プログラム２２は、セッション２を介した通信の中継が完了すると、セッション３による通信を解禁する。従ってセッション４は通信が禁止されたままの状態である。
【００５６】
そして、ＩＰＰ／ＵＳＢ変換プログラム２２はセッション３を介してＷｅｂブラウザ２３とＩＰＰ機能３１との間で通信を中継し（Ｓ１１４〜Ｓ１１７）、その中継が完了するとセッション４による通信を解禁する。
そして、ＩＰＰ／ＵＳＢ変換プログラム２２はセッション４を介してＷｅｂブラウザ２３とＩＰＰ機能３１との間で通信を中継する（Ｓ１１８〜Ｓ１２１）。
【００５７】
これら一連の処理により、設定画面４１のメインページならびにそのメインページにて使用されているＧＩＦ１、ＧＩＦ２、及び、ＧＩＦ３がＷｅｂブラウザ２３に読み込まれ、Ｗｅｂブラウザ２３は設定画面４１を表示する。その設定画面４１に対する操作は、ＨＴＴＰプロトコルのＧＥＴ命令、ＰＯＳＴ命令などに変更されて同様にＩＰＰ／ＵＳＢ変換プログラムを介してＩＰＰ機能３に送られる。この処理により、従来のネットワークを介してＩＰＰのＣＧＩにアクセスするのと同様の手順でＵＳＢを介してプリンタ２の設定を行える。
【００５８】
（８）ＩＰＰ／ＵＳＢ変換プログラムによる通信中継処理の詳細
次に、図５を参照して、上述した通信中継処理についてより具体的に説明する。ＩＰＰ／ＵＳＢ変換プログラム２２は常駐プログラムとして実行されるものであり、本処理はＰＣ１に電源が投入されると常駐プログラムとして開始される。
ここで、本処理はＷｅｂブラウザ２３とＩＰＰ機能３１との間で通信を中継する処理であり、スプーラ２４とＩＰＰ機能３１との間で通信を中継する処理は本処理とは別の処理として実行されるものとする。当該別の処理についての説明は省略する。
【００５９】
Ｓ２０１では、ＩＰＰ／ＵＳＢ変換プログラム２２は排他処理を実行するためのミューテックスを作成する。ミューテックスは排他処理を行うための仕組みであって、プログラム言語によって提供される仕組みである。ミューテックスの詳細については後述する。
なお、ここではミューテックスを用いて排他処理を行う場合を例に説明するが、排他処理を行う方法はこれに限られない。例えばセマフォを用いて行ってもよいし、ミューテックスやセマフォを用いず独自の方法で行ってもよい。
【００６０】
Ｓ２０２では、ＩＰＰ／ＵＳＢ変換プログラム２２はセッションを確立する要求（アクセプト要求という）を監視するソケットの作成及び設定を行う。ソケットとはＴＣＰ／ＩＰによって通信を行うための抽象化されたインタフェースのことをいう。また、ソケットの設定とは、ソケットにＰＣ１のＩＰアドレスやポート番号などを設定し、そのソケットの動作モードをアクセプト要求の監視モードにすることをいう。本実施形態ではＩＰアドレスとして１２７．０．０．１、ポートとして８０を監視する。
【００６１】
ユーザがＷｅｂブラウザ２３を立ち上げ、ＩＰアドレスとして１２７．０．０．１、ポートとしてポート８０を設定すると、Ｗｅｂブラウザ２３は当該アドレスおよびポートに対して通信を行うべく、接続を試みる。この処理がアクセプト要求となる。
Ｓ２０３では、ＩＰＰ／ＵＳＢ変換プログラム２２はＷｅｂブラウザ２３からアクセプト要求を受信するまで待機し、アクセプト要求を受信するとＳ２０４に進む。
Ｓ２０４では、ＩＰＰ／ＵＳＢ変換プログラム２２はスレッドを作成する。
Ｓ２０５では、ＩＰＰ／ＵＳＢ変換プログラム２２はＯＳ２１から終了要求があったか否かを判断する。ＩＰＰ／ＵＳＢ変換プログラム２２は、終了要求があった場合は本処理を終了し、なかった場合はＳ２０３に戻って処理を繰り返す。
【００６２】
（９）スレッドによって実行される処理
次に、図６を参照して、Ｓ２０４で作成されたスレッドによって実行される処理について説明する。前述したようにスレッドはアクセプト要求を受信する毎に作成される。いずれのスレッドも実行する処理は同じであるのでここでは最初に作成されたスレッドである第１のスレッドを例に説明する。
【００６３】
Ｓ３０１では、第１のスレッドはアクセプト処理を実行する。アクセプト処理とは、アクセプト要求を送信してきた相手、すなわちセッションを確立する要求を送信してきた相手との間に新たなセッションを確立する処理である。セッションを確立するとそのセッションを介して通信を行う新たなソケットが作成される。なお、ソケットのオープン／クローズ、アクセプトなどのタイミングで、ＵＳＢのエンドポイント０を用いたコントロール転送を用いてプリンタ２に情報を送り、上記オープン・クローズ・アクセプト・などのタイミングでプリンタ２と同期をとってもよい。Ｓ３０１はＷｅｂブラウザ２３との間に新たなセッションを確立する確立処理の一例である。
【００６４】
Ｓ３０２では、第１のスレッドはＳ３０１で確立した新たなセッション以外のセッションによる通信を禁止する排他処理を実行する。
具体的には、第１のスレッドはＳ２０１で作成されたミューテックスの取得を試みる。ミューテックスが他のスレッドによって取得されていない場合は第１のスレッドによってミューテックスが取得され、その後にミューテックスの取得を試みた他のスレッドは第１のスレッドによってミューテックスが解放されるまで待機状態となる。これにより他のスレッドは通信が禁止された状態となる。
【００６５】
一方、ミューテックスが他のスレッドによって取得されている場合は、第１のスレッドはミューテックスを取得できるまで待機状態となる。これにより第１のスレッドは通信が禁止された状態となる。そして、他のスレッドがミューテックスを解放すると、第１のスレッドより先に待機状態になっているスレッドがある場合は当該先に待機状態になっているスレッドによってそのミューテックスが取得され、第１のスレッドは引き続き待機状態となる。第１のスレッドより先に待機状態になっているスレッドがない場合は、第１のスレッドによってミューテックスが取得される。
第１のスレッドは、ミューテックスを取得するとＳ３０３に進む。
ここで、Ｓ３０２は判断処理、待機処理、及び、排他処理の一例である。つまり、第１のスレッドはミューテックスの仕組みを用いることによって判断処理、待機処理、及び、排他処理を実行する。
【００６６】
Ｓ３０３では、第１のスレッドはスレッド単位の中継処理を実行する。スレッド単位の中継処理は、Ｓ３０１で確立した新たなセッションを介してＷｅｂブラウザ２３とＩＰＰ機能３１との間で通信を中継する処理である。スレッド単位の中継処理の詳細については後述する。
【００６７】
Ｓ３０４では、第１のスレッドは排他終了処理を実行する。具体的には、第１のスレッドはミューテックスを解放する。Ｓ３０４は解禁処理の一例である。
Ｓ３０５では、第１のスレッドはＳ３０１で作成したセッションをクローズして処理を終了する。
【００６８】
（１０）スレッド単位の中継処理
次に、Ｓ３０３で実行されるスレッド単位の中継処理について説明する。
ここでは先ず、Ｗｅｂブラウザ２３からＩＰＰ／ＵＳＢ変換プログラム２２に送信される要求、及び、ＩＰＰ機能３１からＩＰＰ／ＵＳＢ変換プログラム２２に送信される応答について説明する。
Ｗｅｂブラウザ２３からＩＰＰ／ＵＳＢ変換プログラム２２に送信される要求は１以上の通信データからなる。以下に要求の一例を示す。ここでは各通信データの前に行番号を［］で括って示す。
【００６９】
［１行目］ＰＯＳＴ  ／ｉｐｐ／［ｆｕｎｃｔｉｏｎ］  ＨＴＴＰ／１．１＜ＣＲＬＦ＞
［２行目］Ｈｏｓｔ：  ｌｏｃａｌｈｏｓｔ＜ＣＲＬＦ＞
［３行目］Ｃｏｎｔｅｎｔ−Ｔｙｐｅ：  ａｐｐｌｉｃａｔｉｏｎ／ｉｐｐ＜ＣＲＬＦ＞
［４行目］Ｔｒａｎｓｆｅｒ−Ｅｎｃｏｄｉｎｇ：  ｃｈｕｎｋｅｄ＜ＣＲＬＦ＞
［５行目］＜ＣＲＬＦ＞
【００７０】
上述した例において各行はそれぞれ一つの通信データを表している。また、上述した例から明らかなように各通信データは最後が＜ＣＲＬＦ＞で終わっている。＜ＣＲＬＦ＞は復帰改行コードである。
また、５行目に示すように要求の最後の通信データは＜ＣＲＬＦ＞のみである。従って、受信した通信データが＜ＣＲＬＦ＞のみである場合は一つの要求の受信が完了したと判断することができる。
なお、ＰＵＴコマンドやＰＯＳＴコマンドでは通常この一連の要求のほかに、バイナリデータあるいはテキストデータを送る。その場合は上記一連の要求のなかにＣｏｎｔｅｎｔ-Ｌｅｎｇｔｈ: ４５５４といった行を挿入し、指定されたバイト数（この場合は４５５４）の付加データが続くことを示す。
また全ての付加データのバイト数が予めわからない場合はＴｒａｎｓｆｅｒ−Ｅｎｃｏｄｉｎｇ：  ｃｈｕｎｋｅｄなどの形で、細切れのデータ塊が続くことを示す場合もある。この場合、データ塊ごとのサイズが示される。
【００７１】
同様にＩＰＰ機能３１からＩＰＰ／ＵＳＢ変換プログラム２２に送信される一つの応答も１以上の通信データからなり、最後の通信データは＜ＣＲＬＦ＞のみである。またＧＥＴコマンドに対する応答にあっては、上記同様にバイナリデータが続く。いずれの場合も広く使用されている技術であるので、ここではその詳細を省く。
【００７２】
Ｓ４０１では、第１のスレッドはＳ３０１で確立したネットワークのセッションを介してＷｅｂブラウザ２３から通信データを受信する。
Ｓ４０２では、第１のスレッドはＳ４０１でＷｅｂブラウザ２３から受信した通信データをＵＳＢを介してＩＰＰ機能３１に送信する。
【００７３】
Ｓ４０３では、第１のスレッドは一つの要求の受信が完了したか否かを判断する。
具体的には、ＨＴＴＰのプロトコルに従って、＜ＣＲＬＦ＞、Ｃｏｎｔｅｎｔ-Ｌｅｎｇｔｈ、Ｔｒａｎｓｆｅｒ−Ｅｎｃｏｄｉｎｇ：  ｃｈｕｎｋｅｄなどの出現状況を解析し、そのデータエンドを判断する。具体的には＜ＣＲＬＦ＞の有無、Ｃｏｎｔｅｎｔ-ＬｅｎｇｔｈやＴｒａｎｓｆｅｒ−Ｅｎｃｏｄｉｎｇ：  ｃｈｕｎｋｅｄで示される付加データのサイズを確認することにより、データエンドを判断することができる。
【００７４】
その結果Ｗｅｂブラウザ２３からそのセッションにて送られるすべての要求データ及び付随するデータのＩＰＰ機能３１への転送が終了したと判断された場合は、Ｓ４０４に進む。一方、Ｗｅｂブラウザ２３から受信した通信データがまだ終了していないと判断される場合には、第１のスレッドは一つの要求の受信が完了していないと判断し、Ｓ４０１に戻って処理を繰り返す。Ｓ４０３は第１の解析処理の一例である。この転送された要求データ及び付随するデータは、ＩＰＰ機能３１の設定画面ＣＧＩにより解釈され、ＩＰＰ機能３１はそれに対応する応答データを作成する。たとえばメインページ要求のＧＥＴコマンドに対する応答は、そのメインページを含む一連の情報となる。このデータはＵＳＢを介してＩＰＰ／ＵＳＢ変換プログラム２２に返される。
【００７５】
Ｓ４０４では、第１のスレッドはＩＰＰ機能３１に送信した要求に対する応答として、ＩＰＰ機能３１からＵＳＢを介して通信データを受信する。
Ｓ４０５では、第１のスレッドはＳ４０４でプリンタ２から受信した通信データを、Ｓ３０１で確立したセッションを介してＷｅｂブラウザ２３に送信する。
【００７６】
Ｓ４０６では、第１のスレッドは一つの応答の受信が完了したか否かを判断する。
この判断方法はＳ４０３と同様の手順により行われる。そして、応答の受信が完了したと判断された場合は本処理を終了する。一方、応答の受信が完了していないと判断された場合は、Ｓ４０４に戻って処理を繰り返す。Ｓ４０６は第２の解析処理の一例である。
【００７７】
一方、第２スレッドでも上記と同様に通信が行われるが、その場合はＳ３０２における排他処理において、第一スレッドの排他終了処理Ｓ３０４が行われるまで待機状態となる。
同様に第３スレッドでも第２スレッド及び第１スレッドの排他終了処理Ｓ３０４が行われるまで待機状態となる。
このため、中継処理Ｓ３０３は、すべてのスレッドにて同時に行われないことが保証される。
【００７８】
（１１）実施形態の効果
以上説明したＩＰＰ／ＵＳＢ変換プログラム２２によると、マルチセッションの概念がない通信回線であるＵＳＢ（より具体的にはインタフェース）を介してＷｅｂブラウザ２３がプリンタ２とマルチセッションによって通信する場合に、いずれかのセッションを介して通信を中継している間は他のセッションによる通信を禁止するので、あるセッションへの応答が別のセッションに送信されてしまうなどのように応答が混乱してしまうことを抑制できる。
よってＩＰＰ／ＵＳＢ変換プログラム２２によると、ＵＳＢを介してＷｅｂブラウザ２３がプリンタ２とマルチセッションによって混乱なく通信することができる。
【００７９】
更に、ＩＰＰ／ＵＳＢ変換プログラム２２によると、一対の要求及び応答の中継が完了すると他のセッションによる通信を解禁するので、他のセッションの待機時間を短くすることができる。
【００８０】
更に、ＩＰＰ／ＵＳＢ変換プログラム２２によると、Ｗｅｂブラウザ２３とＩＰＰ機能３１との間で送受信される通信データを中継するので、ＵＳＢを介してＷｅｂブラウザ２３がＩＰＰ機能３１とマルチセッションによって混乱なく通信することができる。
【００８１】
更に、ＩＰＰ／ＵＳＢ変換プログラム２２によると、Ｗｅｂブラウザ２３からプリンタ２を設定するための通信を中継するので、Ｗｅｂブラウザ２３からプリンタ２を設定する場合にマルチセッションによって混乱なく通信することができる。
【００８２】
更に、ＩＰＰ／ＵＳＢ変換プログラム２２によると、Ｗｅｂブラウザ２３から受信した通信データを解析し、受信が完了したと判断するので、要求の受信が完了したことを判断することができる。ＩＰＰ機能３１から受信した応答についても同様である。
【００８３】
＜実施形態２＞
次に、実施形態２を図８によって説明する。
実施形態２は実施形態１のスレッド単位の中継処理の変形例である。実施形態１に係るスレッド単位の中継処理では通信データを解析することによって要求の受信が完了したか否か、及び、応答の受信が完了したか否かを判断した。これに対し、実施形態２に係る中継処理では、要求の受信が完了したか否か、及び、応答の受信が完了したか否かを、通信データを解析することなく判断する。
【００８４】
図８を参照して、実施形態２に係るスレッド単位の中継処理について説明する。
Ｓ５０１では、第１のスレッドはＷｅｂブラウザ２３から通信データを受信する。
具体的には、第１のスレッドはＳ３０１で作成したソケットに通信データの有無を問い合せる。第１のスレッドはＷｅｂブラウザ２３から受信した通信データがある場合はその通信データを受信してＳ５０２に進む。一方、Ｗｅｂブラウザ２３から受信した通信データがない場合は、第１のスレッドは第１の規定時間経過後にタイムアウトしてＳ５０２に進む。
【００８５】
Ｓ５０２では、第１のスレッドはＳ５０１でタイムアウトしたか否かを判断し、タイムアウトではない場合はＳ５０３に進み、タイムアウトである場合は要求の受信が終了したと判断してＳ５０４に進む。
Ｓ５０３では、第１のスレッドはＳ５０１でＷｅｂブラウザ２３から受信した通信データをＵＳＢを介してＩＰＰ機能３１に転送する。ＩＰＰ機能３１の設定画面ＣＧＩはこの通信データを処理し、対応するコマンドに対する応答を返す。
【００８６】
Ｓ５０４では、第１のスレッドはＩＰＰ機能３１からＵＳＢを介して通信データを受信する。この通信データはＳ５０１〜Ｓ５０３によってＩＰＰ機能３１に送信した要求に対する応答として受信されるものである。
ここで、第１のスレッドがＩＰＰ機能３１に最後の通信データを送信したときから第２の規定時間以内に第１のスレッドがＩＰＰ機能３１から通信データを受信しない場合は、ＩＰＰ機能３１からの通信データの受信がタイムアウトする。
【００８７】
Ｓ５０５では、第１のスレッドはＳ５０４でのＩＰＰ機能３１からの通信データの受信がタイムアウトしたか否かを判断する。この判断を行う理由について以下に説明する。
【００８８】
前述したように第１のスレッドはＳ５０２においてタイムアウトと判断した場合はＷｅｂブラウザ２３からの要求の受信が完了したと判断する。しかしながら、実際には要求の受信は完了しておらず、ＣＰＵ１０の負荷が高いなどのなんらかの理由で通信データの送信が遅れているだけの場合もある。
第１のスレッドがＷｅｂブラウザ２３からの要求の受信を完了していない場合は、第１のスレッドからＩＰＰ機能３１への要求の送信も完了していないので、ＩＰＰ機能３１は要求の受信が完了するのを待っている状態となる。このため、ＩＰＰ機能３１は第１のスレッドに応答を送信しない。
【００８９】
このため、Ｗｅｂブラウザ２３からの要求の受信が完了していないにもかかわらずＳ５０２においてタイムアウトと判断された場合は、Ｓ５０４においてＩＰＰ機能３１からの通信データの受信がタイムアウトする。
従って、ＩＰＰ機能３１からの通信データの受信がタイムアウトしたか否かを判断することにより、Ｓ５０２でのタイムアウトが、Ｗｅｂブラウザ２３からの要求の受信が完了したことによる正常なタイムアウトであるか、又は、Ｗｅｂブラウザ２３からの要求の受信が完了していない異常なタイムアウトであるかを高い精度で判断することができる。
【００９０】
第１のスレッドは、ＩＰＰ機能３１からの通信データの受信がタイムアウトしていない場合はＳ５０６に進む。一方、ＩＰＰ機能３１からの通信データの受信がタイムアウトした場合は、第１のスレッドはＳ５０２でのタイムアウトが異常なタイムアウトであると判断し、Ｗｅｂブラウザ２３から残りの通信データを受信するためにＳ５０１に戻る。
【００９１】
Ｓ５０６では、第１のスレッドはプリンタ２から受信した通信データをＷｅｂブラウザ２３に送信する。
Ｓ５０７では、第１のスレッドはＩＰＰ機能３１に応答の送信が完了したか否かを問い合せる。この問い合せはエンドポイント０を用いたコントロール転送によって行われる。
【００９２】
Ｓ５０８では、第１のスレッドはＳ５０７での問い合わせに対するプリンタ２からの問い合せ結果を判断する。第１のスレッドは、完了したとの問い合せ結果（データエンド）である場合は通信の中継が完了したと判断し、本処理を終了してスレッドによる処理に戻る。一方、完了していないとの問い合せ結果である場合は、第１のスレッドは通信の中継が完了していないと判断してＳ５０９に進む。
【００９３】
Ｓ５０９では、第１のスレッドはＩＰＰ機能３１からＵＳＢを介して通信データを受信する。その後再びＳ５０６に戻り、その通信データはＷＥＢブラウザ２３に送信される。以後データエンドとなるまで、すなわちＩＰＰ機能３１からの応答をすべてＷｅｂブラウザ２３に転送するまでこのループが続けられる。
【００９４】
以上説明した実施形態２に係るＩＰＰ／ＵＳＢ変換プログラム２２によると、Ｗｅｂブラウザ２３から通信データを第１の規定時間以上受信しない場合にＷｅｂブラウザ２３からの要求の受信が完了したと仮判断するので、要求の受信が完了したか否かを、通信データの内容を解析することなく判断することができる。
【００９５】
また、ＩＰＰ／ＵＳＢ変換プログラム２２によると、ＩＰＰ機能３１から第２の規定時間以内に通信データを受信しない場合は、要求の受信が完了したという仮判断は誤りであったとしてＷｅｂブラウザ２３から残りの通信データを受信するので、Ｗｅｂブラウザ２３から要求をより確実に受信することができる。
【００９６】
更に、ＩＰＰ／ＵＳＢ変換プログラム２２によると、応答の送信が完了したか否かをＩＰＰ機能３１に問い合せ、完了したとの問い合せ結果を受信した場合に通信の中継が完了したと判断するので、通信の中継が完了したか否かを、通信データの内容を解析することなく判断することができる。
【００９７】
＜実施形態３＞
次に、実施形態３を図９によって説明する。
前述した実施形態１に係るＩＰＰ／ＵＳＢ変換プログラム２２は一つのセッションにおいて一対の要求及び応答の送受信が完了するとセッションを切断する。これに対し、実施形態３に係るＩＰＰ／ＵＳＢ変換プログラム２２は一つのセッションにおいて複数の要求及び応答の対を送受信する。
【００９８】
図９は、実施形態３に係る第１のスレッドの処理の流れを示すフローチャートである。
Ｓ３０１〜Ｓ３０４までは実施形態１と同じであるので説明は省略する。
Ｓ６０１では、第１のスレッドはＳ３０４で排他処理を終了したときから第３の規定時間以内にｋｅｅｐ−ａｌｉｖｅ信号を受信したか否かを判断し、ｋｅｅｐ−ａｌｉｖｅ信号を受信した場合はＳ３０２に戻り、受信していない場合はＳ３０５に進んでセッションをクローズする。
ここで、ｋｅｅｐ−ａｌｉｖｅ信号とは、セッションを維持するために送信される信号である。ｋｅｅｐ−ａｌｉｖｅ信号はＷｅｂブラウザ２３が送信する。ｋｅｅｐ−ａｌｉｖｅ信号は維持信号の一例である。
【００９９】
以上説明した実施形態３に係るＩＰＰ／ＵＳＢ変換プログラム２２によると、一対の要求及び応答の送受信が完了する毎にセッションを切断しないことにより、効率よく通信することができる。
【０１００】
＜実施形態４＞
次に、実施形態４を図１０ないし図１２によって説明する。
実施形態４は実施形態１の変形例である。前述した実施形態１に係るＩＰＰ／ＵＳＢ変換プログラム２２は、プリンタ２を設定するための通信を、一つのインタフェース（具体的にはインタフェース１）を用いて行う。
これに対し、実施形態４に係るＩＰＰ／ＵＳＢ変換プログラム２２は、プリンタ２とＰＣ１との間にインタフェース１、インタフェース２、及び、インタフェース３を構成する。インタフェース２も双方向通信可能なインタフェースであるとする。
そして、ＩＰＰ／ＵＳＢ変換プログラム２２は、上述したプリンタ２を設定するための通信を、インタフェース１及びインタフェース２を用いて行う。プリンタ２に印刷データを送信するための通信はインタフェース３を用いるものとする。
【０１０１】
（１）ＩＰＰ／ＵＳＢ変換プログラムによる通信中継処理の詳細
先ず、図１０を参照して、実施形態４に係る通信中継処理について説明する。なお、図１０ではインタフェースをＩＦと記している。
Ｓ７０１では、ＩＰＰ／ＵＳＢ変換プログラム２２はインタフェース１及びインタフェース２毎にミューテックスを作成する。
Ｓ２０２〜Ｓ２０５の処理は実施形態１と実質的に同一であるので説明は省略する。
【０１０２】
次に、図１１を参照して、実施形態４に係る第１のスレッドの処理の流れについて説明する。ここでは実施形態１と実質的に同一の処理には同一の符号を付して説明を省略する。
【０１０３】
Ｓ８０１では、第１のスレッドはインタフェース１及びインタフェース２のうち使用されていないインタフェース、又は、待ちの少ないインタフェースを選択する。Ｓ８０１は選択処理の一例である。
ここで、いずれのインタフェースも使用されていない場合は、第１のスレッドはインタフェース１を選択するものとする。また、いずれのインタフェースも使用されている場合は、第１のスレッドはインタフェースが解放されるのを待っているスレッドの数が最も少ないインタフェースを選択するものとする。また、いずれのインタフェースも解放されるのを待っているスレッドの数が同じである場合は、第１のスレッドはインタフェース１を選択するものとする。
第１のスレッドが作成された時点ではいずれのインタフェースも使用されていないので、第１のスレッドはインタフェース１を選択する。
【０１０４】
Ｓ８０２では、第１のスレッドはＳ８０１で選択したインタフェース１の排他処理を実行する。この排他処理はインタフェース１のミューテックスを取得することによって行われる。
インタフェース１の排他処理が実行されると、インタフェース１は使用されている状態となる。その状態で第２のスレッドによってＳ８０１が実行されると、第１のスレッドによってインタフェース１が使用されているので、第２のスレッドは使用されていないインタフェースであるインタフェース２を選択することになる。
その状態で第３のスレッドによってＳ８０１が実行されると、インタフェース１もインタフェース２も使用されているので、第３のスレッドはインタフェース１を選択する。この場合、第３のスレッドはインタフェース１が開放されるまで待機状態となる。
【０１０５】
Ｓ８０３では、第１のスレッドはインタフェース１を用いた中継処理を実行する。
Ｓ８０４では、第１のスレッドはインタフェース１の排他終了処理を実行する。インタフェース１の排他終了処理を実行するとインタフェース１のミューテックスが解放され、第３のスレッドによってそのミューテックスが取得される。
【０１０６】
（２）ＩＰＰ機能による通信処理
次に、図１２を参照して、実施形態４に係るＩＰＰ機能３１による通信処理について説明する。
Ｓ９０１では、ＩＰＰ機能３１はインタフェース１に通信データがあるか否かを判断し、ある場合はＳ９０２に進み、ない場合はＳ９０４に進む。
Ｓ９０２では、ＩＰＰ機能３１はインタフェース１を介して要求を受信する。
【０１０７】
Ｓ９０３では、ＩＰＰ機能３１はＳ９０２で受信した要求に対する応答を、インタフェース１を介してＩＰＰ／ＵＳＢ変換プログラム２２に送信する。
Ｓ９０４では、ＩＰＰ機能３１はＩインタフェース２に通信データがあるか否かを判断し、ある場合はＳ９０５に進み、ない場合はＳ９０１に戻る。
【０１０８】
Ｓ９０５では、ＩＰＰ機能３１はインタフェース２を介して要求を受信する。
Ｓ９０６では、ＩＰＰ機能３１はＳ９０５で受信した要求に対する応答を、インタフェース２を介してＩＰＰ／ＵＳＢ変換プログラム２２に送信する。応答の送信が完了した後、ＩＰＰ機能３１はＳ９０１に戻る。
【０１０９】
（３）実施形態の効果
以上説明した実施形態４に係るＩＰＰ／ＵＳＢ変換プログラム２２によると、マルチセッションの概念がない複数のインタフェースを介してＷｅｂブラウザ２３がプリンタ２とマルチセッションによって混乱なく通信することができる。
【０１１０】
＜実施形態５＞
次に、実施形態５を図１３によって説明する。
図１３に示すように、実施形態５に係るプリンタ２はＩＰＰ機能３１を備えていない。その替わりとして、実施形態５に係るプリンタ２はＷｅｂサーバ機能３３を備えている。
【０１１１】
この場合もＷｅｂブラウザ２３はマルチセッションによる通信を行うので、応答が混乱する可能性がある。そのため、実施形態５では、ＩＰＰ／ＵＳＢ変換プログラム２２を介してＷｅｂサーバ機能３３と通信する。ただし、プリンタ２はＩＰＰ機能３１を備えていないので、ＩＰＰ／ＵＳＢ変換プログラム２２はＷｅｂサーバ機能３３とＵＳＢを介してＨＴＴＰによって通信する。
ＩＰＰ／ＵＳＢ変換プログラム２２は要求をＵＳＢのパケットに格納してＷｅｂサーバ機能３３に送信し、Ｗｅｂサーバ機能３３はそれに対する応答をＵＳＢのパケットに格納してＩＰＰ／ＵＳＢ変換プログラム２２に送信する。ここで、図１３に示すように、実施形態５ではプリンタ２を設定するための通信はエンドポイント０を用いて行われる。
【０１１２】
また、実施形態５ではプリンタ２がＩＰＰ機能３１を備えていないので、スプーラ２４はＩＰＰ／ＵＳＢ変換プログラム２２を介さずにプリンタ２に印刷データを送信する。スプーラ２４とプリンタ２との通信はインタフェース１を用いて行われる。
【０１１３】
以上説明したＩＰＰ／ＵＳＢ変換プログラム２２によると、プリンタ２がＩＰＰ機能３１を備えていない場合でも、ＵＳＢを介してＷｅｂブラウザ２３がプリンタ２とマルチセッションによって混乱なく通信することができる。
【０１１４】
＜他の実施形態＞
上記記述及び図面によって説明した実施形態に限定されるものではなく、例えば次のような実施形態も技術的範囲に含まれる。
【０１１５】
（１）上記実施形態ではマルチセッションによって通信するクライアントアプリケーションとしてＷｅｂブラウザ２３を例に説明した。しかしながら、クライアントアプリケーションはマルチセッションによって通信するものであれば他のアプリケーションであってもよい。
【０１１６】
（２）上記実施形態では通信回線としてＵＳＢを例に説明した。しかしながら、通信回線はＵＳＢに限られない。例えばＰＣ１とプリンタ２とはプリンタの通信規格であるＩＥＥＥ１２８４によって通信するものであってもよい。
【０１１７】
（３）上記実施形態ではセッションの確立が要求される毎に新たなスレッドを作成する場合を例に説明した。これに対し、スレッドを作成せず、通信中継処理において各セッションに対する処理をシーケンシャルに実行してもよい。または、スレッドに替えてプロセスを作成し、スレッドによって行っていた処理をプロセスによって行ってもよい。
【０１１８】
（４）実施形態４ではＰＣ１とプリンタ２とを論理的な複数の通信回線で接続する場合を例に説明した。これに対し、ＰＣ１とプリンタ２とは物理的な複数の通信回線で接続されてもよい。
【０１１９】
（５）上記実施形態ではプリンタ２を設定するための通信をマルチセッションによって行う場合にセッションの排他制御を行う場合を例に説明した。これに加えて、プリンタ２に印刷データを送信するための通信をマルチセッションで行う場合にセッションの排他制御を行ってもよい。
【０１２０】
（６）上記実施形態では画像処理装置としてプリンタ２を例に説明した。これに対し、画像処理装置は、印刷機能、スキャナ機能、コピー機能、ファクシミリ機能などを備える所謂複合機であってもよい。
【０１２１】
（７）上記実施形態では、排他処理開始の後にＷｅｂブラウザ２３からの受信を行っている。すなわち排他処理により実行が許可されるまではＷｅｂブラウザ２３からの要求の受信をしない。しかし排他の開始はＷｅｂブラウザ２３からのデータをプリンタ（ＩＰＰ機能３１又はＷｅｂサーバ機能３３）に送信する前であればよく、Ｗｅｂブラウザ２３からの要求を受信した後であってもかまわない。
【符号の説明】
【０１２２】
１・・・ＰＣ、２・・・プリンタ、５・・・通信ネットワーク、１０・・・ＣＰＵ、１５・・・記憶部、１６・・・ＵＳＢホストインタフェース部、１７・・・ネットワークインタフェース部、２２・・・ＩＰＰ／ＵＳＢ変換プログラム、２３・・・Ｗｅｂブラウザ、２４・・・スプーラ、３１・・・ＩＰＰ機能、３２・・・印刷機能、４１・・・設定画面
【図１】
2014049022.tif 000003
【図２】
2014049022.tif 000004
【図３】
2014049022.tif 000005
【図４】
2014049022.tif 000006
【図５】
2014049022.tif 000007
【図６】
2014049022.tif 000008
【図７】
2014049022.tif 000009
【図８】
2014049022.tif 000010
【図９】
2014049022.tif 000011
【図１０】
2014049022.tif 000012
【図１１】
2014049022.tif 000013
【図１２】
2014049022.tif 000014
【図１３】
2014049022.tif 000015