(57)【要約】【課題】  中継サーバが、端末装置からの要求に応じて通信装置に条件情報を送信すべき場合に、適切な処理を実行し得る技術を提供すること。【解決手段】  端末側サーバ８０は、端末装置１００から要求コマンド２００を受信する場合に、ＳＵＢコマンド２０２をプリンタ側サーバ５０に送信し、さらに、応答コマンド２３０を端末装置１００に送信する。プリンタ側サーバ５０は、ＳＵＢコマンド２０２をプリンタ１０に送信する。その後、端末側サーバ８０は、端末装置１００からＧＥＴＳＵＢコマンドを受信する場合に、プリンタ１０へのＳＵＢコマンド２０２の送信が完了したのか否かを示す状況情報を含む応答コマンドを端末装置１００に送信する。【選択図】図２
2014178987.tif 000002
【特許請求の範囲】
【請求項１】
中継サーバであって、
端末装置から要求コマンドを受信する要求コマンド受信部であって、前記要求コマンドは、通信装置への条件情報の送信を前記中継サーバに要求するためのコマンドであり、前記条件情報は、前記通信装置から前記端末装置へのデータの送信のための条件を示す、前記要求コマンド受信部と、
前記要求コマンドが受信される場合に、第１の応答コマンドを前記端末装置に送信する第１の応答部と、
前記要求コマンドが受信される場合に、前記条件情報を前記通信装置に送信する情報送信部と、
前記要求コマンドが受信された後に、前記端末装置から問合せコマンドを受信する問合せコマンド受信部であって、前記問合せコマンドは、前記通信装置への前記条件情報の送信が完了したのか否かを前記中継サーバに問い合わせるためのコマンドである、前記問合せコマンド受信部と、
前記問合せコマンドが受信される場合に、前記通信装置への前記条件情報の送信が完了したのか否かを示す状況情報を含む第２の応答コマンドを前記端末装置に送信する第２の応答部と、
を備える中継サーバ。
【請求項２】
前記要求コマンド受信部は、前記端末装置から、前記条件情報を含む前記要求コマンドを受信する、請求項１に記載の中継サーバ。
【請求項３】
前記情報送信部は、
前記通信装置と前記中継サーバとの間にインターネットを介した特定の接続が確立されている状態で、前記端末装置から前記要求コマンドが受信される場合に、前記条件情報を前記通信装置に送信し、
前記特定の接続が確立されていない状態で、前記端末装置から前記要求コマンドが受信される場合に、前記条件情報を前記通信装置に送信せず、前記特定の接続が確立されていない状態から前記特定の接続が確立されている状態に変化した後に、前記条件情報を前記通信装置に送信する、請求項１又は２に記載の中継サーバ。
【請求項４】
前記中継サーバは、さらに、
前記特定の接続が確立されていない状態で、前記通信装置から第１の要求信号を受信する第１の信号受信部と、
前記第１の要求信号に対する応答信号を前記通信装置に送信する信号送信部であって、前記応答信号は、前記特定の接続で利用されるべきセッションＩＤを含む、前記信号送信部と、
前記応答信号が前記通信装置に送信された後に、前記通信装置から前記セッションＩＤを含む第２の要求信号を受信する第２の信号受信部と、
前記通信装置から前記第２の要求信号が受信される場合に、前記通信装置と前記中継サーバとの間に前記特定の接続を確立する確立部と、
を備える、請求項３に記載の中継サーバ。
【請求項５】
前記要求コマンドは、複数個の前記通信装置を識別するための複数個の識別情報を含み、
前記情報送信部は、前記要求コマンドが受信される場合に、前記条件情報を前記複数個の通信装置のそれぞれに順次送信し、
前記問合せコマンド受信部は、前記要求コマンドが受信された後に、前記端末装置から前記複数個の識別情報を含む前記問合せコマンドを受信し、
前記第２の応答部は、前記問合せコマンドが受信される場合に、前記複数個の識別情報によって識別される前記複数個の通信装置に対応する複数個の前記状況情報を含む前記第２の応答コマンドを前記端末装置に送信する、請求項１から４のいずれか一項に記載の中継サーバ。
【請求項６】
前記中継サーバは、第１のサーバと、前記第１のサーバとは別体である第２のサーバと、を備え、
前記第１のサーバは、前記要求コマンド受信部と、前記第１の応答部と、前記問合せコマンド受信部と、前記第２の応答部と、を備え、
前記第２のサーバは、前記情報送信部を備える、請求項５に記載の中継サーバ。
【請求項７】
前記第１のサーバは、さらに、
前記複数個の識別情報のうちの第１の識別情報と、前記条件情報と、を前記第２のサーバに供給して、前記第１の識別情報によって識別される第１の通信装置への前記条件情報の送信を、前記第２のサーバに実行させる供給部と、
前記第２のサーバから、前記第１の通信装置への前記条件情報の送信が完了したことを示す通知を取得する第１の取得部と、を備え、
前記供給部は、さらに、前記第２のサーバから前記通知が取得された後に、前記複数個の識別情報のうちの前記第１の識別情報とは異なる第２の識別情報と、前記条件情報と、を前記第２のサーバに供給して、前記第２の識別情報によって識別される第２の通信装置への前記条件情報の送信を、前記第２のサーバに実行させる、請求項６に記載の中継サーバ。
【請求項８】
前記第１のサーバは、さらに、
前記複数個の状況情報をデータベースに記憶させる記憶制御部を備え、
前記第２の応答部は、前記データベース内の前記複数個の状況情報を含む前記第２の応答コマンドを前記端末装置に送信する、請求項６又は７に記載の中継サーバ。
【請求項９】
前記第１のサーバは、さらに、
前記第２のサーバから、前記複数個の通信装置に対応する複数個のステータス情報を取得する第２の取得部であって、前記複数個のステータス情報のそれぞれは、当該ステータス情報に対応する前記通信装置への前記条件情報の送信が完了したのか否かを示す、前記第２の取得部を備え、
前記記憶制御部は、前記データベース内の前記複数個の状況情報と、前記複数個のステータス情報と、が異なる場合に、前記データベース内の前記複数個の状況情報を、前記複数個のステータス情報が示す内容に更新する、請求項８に記載の中継サーバ。
【請求項１０】
前記第２の取得部は、前記端末装置から前記問合せコマンドが受信される場合に、前記第２のサーバから前記複数個のステータス情報を取得する、請求項９に記載の中継サーバ。
【請求項１１】
前記データベースは、前記第１及び第２のサーバとは別体に構成されている、請求項８から１０のいずれか一項に記載の中継サーバ。
【請求項１２】
前記中継サーバは、第１のサーバと、前記第１のサーバとは別体である第２のサーバと、を備え、
前記第１のサーバは、前記要求コマンド受信部と、前記第１の応答部と、前記問合せコマンド受信部と、前記第２の応答部と、を備え、
前記第２のサーバは、前記情報送信部を備える、請求項１から４のいずれか一項に記載の中継サーバ。
【請求項１３】
中継サーバのためのコンピュータプログラムであって、
前記中継サーバに搭載される１個以上のプロセッサに、以下の各処理、即ち、
端末装置から要求コマンドを受信する要求コマンド受信処理であって、前記要求コマンドは、通信装置への条件情報の送信を前記中継サーバに要求するためのコマンドであり、前記条件情報は、前記通信装置から前記端末装置へのデータの送信のための条件を示す、前記要求コマンド受信処理と、
前記要求コマンドが受信される場合に、第１の応答コマンドを前記端末装置に送信する第１の応答処理と、
前記要求コマンドが受信される場合に、前記条件情報を前記通信装置に送信する情報送信処理と、
前記要求コマンドが受信された後に、前記端末装置から問合せコマンドを受信する問合せコマンド受信処理であって、前記問合せコマンドは、前記通信装置への前記条件情報の送信が完了したのか否かを前記中継サーバに問い合わせるためのコマンドである、前記問合せコマンド受信処理と、
前記問合せコマンドが受信される場合に、前記通信装置への前記条件情報の送信が完了したのか否かを示す状況情報を含む第２の応答コマンドを前記端末装置に送信する第２の応答処理と、
を実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書では、端末装置及び通信装置のそれぞれと通信を実行する中継サーバを開示する。
【背景技術】
【０００２】
特許文献１には、ホストコンピュータと、プリンタと、を備えるシステムが開示されている。プリンタは、ホストコンピュータからトラップ設定命令を受信すると、当該プリンタがトラップパケットを送信すべき条件を設定する。これにより、プリンタは、例えば、プリンタ自身のステータスが変化する場合にのみ、当該ステータスを示すトラップパケットをホストコンピュータに送信する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１０−２２２３１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本明細書では、中継サーバが、端末装置からの要求に応じて通信装置に条件情報を送信すべき場合に、適切な処理を実行し得る技術を提供する。
【課題を解決するための手段】
【０００５】
本明細書によって開示される中継サーバは、要求コマンド受信部と、第１の応答部と、情報送信部と、問合せコマンド受信部と、第２の応答部と、を備える。要求コマンド受信部は、端末装置から要求コマンドを受信する。要求コマンドは、通信装置への条件情報の送信を中継サーバに要求するためのコマンドである。条件情報は、通信装置から端末装置へのデータの送信のための条件を示す。第１の応答部は、要求コマンドが受信される場合に、第１の応答コマンドを端末装置に送信する。情報送信部は、要求コマンドが受信される場合に、条件情報を通信装置に送信する。問合せコマンド受信部は、要求コマンドが受信された後に、端末装置から問合せコマンドを受信する。問合せコマンドは、通信装置への条件情報の送信が完了したのか否かを中継サーバに問い合わせるためのコマンドである。第２の応答部は、問合せコマンドが受信される場合に、通信装置への条件情報の送信が完了したのか否かを示す状況情報を含む第２の応答コマンドを端末装置に送信する。
【０００６】
上記の構成によると、中継サーバは、端末装置から要求コマンドを受信する場合に、第１の応答コマンドを端末装置に送信し、さらに、端末装置から問合せコマンドを受信する場合に、状況情報を含む第２の応答コマンドを端末装置に送信する。このように、中継サーバは、第１及び第２の応答コマンドのそれぞれを端末装置に適切に送信することができるので、端末装置を適切に動作させ得る。
【０００７】
上記の中継サーバを実現するための制御方法、コンピュータプログラム、及び、当該コンピュータプログラムを格納するコンピュータ読取可能記録媒体も、新規で有用である。また、上記の中継サーバ、端末装置、及び、通信装置のうちの少なくとも２個のデバイスを備える通信システムも、新規で有用である。
【図面の簡単な説明】
【０００８】
【図１】通信システムの構成を示す。
【図２】各デバイスによって実行される各処理のシーケンス図を示す。
【図３】図２の続きのシーケンス図を示す。
【図４】図３の続きのシーケンス図を示す。
【図５】図４の続きのシーケンス図を示す。
【図６】図５の続きのシーケンス図を示す。
【発明を実施するための形態】
【０００９】
（通信システム２の構成）
図１に示されるように、通信システム２は、複数個のプリンタ１０，４０，４５と、プリンタ側サーバ５０と、ＤＢ（Data Baseの略）サーバ７０と、端末側サーバ８０と、端末装置１００と、を備える。各プリンタ１０，４０，４５は、ＬＡＮ（LocalArea Networkの略）に接続されており、各サーバ５０，７０，８０及び端末装置１００は、インターネットに接続されている。
【００１０】
詳しくは後述するが、通信システム２では、端末装置１００から、端末側サーバ８０及びプリンタ側サーバ５０を介して、各プリンタ１０，４０，４５に、ＨＴＴＰ（Hyper Text Transfer Protocol）のＳｕｂｃｒｉｂｅコマンドが送信される。そして、各プリンタ１０，４０，４５は、Ｓｕｂｃｒｉｂｅコマンドによって指示されるタイミングで、Ｓｕｂｃｒｉｂｅコマンドによって指示される対象データを、端末装置１００に送信する。Ｓｕｂｃｒｉｂｅコマンドの通信及び対象データの通信を実現するために、各デバイス１０等は、以下の構成を備える。なお、以下では、Ｓｕｂｃｒｉｂｅコマンドのことを「ＳＵＢコマンド」と呼ぶ。
【００１１】
（プリンタ１０，４０，４５の構成）
各プリンタ１０，４０，４５は、印刷機能を実行可能な周辺機器（即ちＰＣ（Personal Computerの略）等の周辺機器）である。プリンタ１０，４０，４５は、それぞれ、プリンタＩＤとして、「ＰＲ１０」、「ＰＲ４０」、「ＰＲ４５」を有する。プリンタＩＤは、プリンタ１０等のベンダによって割り当てられるユニークなＩＤである。各プリンタ１０，４０，４５が同様の構成を有するために、以下では、プリンタ１０の構成を詳しく説明し、プリンタ４０，４５の構成の説明を省略する。
【００１２】
プリンタ１０は、操作パネル１２と、表示機構１４と、印刷機構２０と、ＬＡＮインターフェース２２と、制御部３０と、を備える。各部１２〜３０は、バス線（符号省略）に接続されている。以下では、インターフェースのことを「Ｉ／Ｆ」と記載する。
【００１３】
操作パネル１２は、複数のキーを備える。ユーザは、操作パネル１２を操作することによって、様々な指示をプリンタ１０に与えることができる。表示機構１４は、様々な情報を表示するためのディスプレイである。印刷機構２０は、インクジェット方式、レーザ方式等の印刷機構である。ＬＡＮＩ／Ｆ２２は、ＬＡＮに接続するためのＩ／Ｆである。なお、ＬＡＮは、有線ＬＡＮであってもよいし、無線ＬＡＮであってもよい。
【００１４】
制御部３０は、ＣＰＵ３２と、メモリ３４と、を備える。ＣＰＵ３２は、メモリ３４に記憶されているプログラムに従って、様々な処理を実行する。
【００１５】
（各サーバ５０，７０，８０の構成）
各サーバ５０，７０，８０は、別体に構成されている。各サーバ５０，７０，８０は、プリンタ１０，４０，４５のベンダによってインターネット上に設置されるサーバである。端末側サーバ８０は、端末装置１００からＳＵＢコマンド（より具体的には後述の要求コマンド）を受信する場合に、ＳＵＢコマンドをプリンタ側サーバ５０に送信する。プリンタ側サーバ５０は、端末側サーバ８０からＳＵＢコマンドを受信する場合に、ＳＵＢコマンドをプリンタ１０等に送信する。
【００１６】
上述したように、端末側サーバ８０は、端末装置１００からプリンタ側サーバ５０へのＳＵＢコマンドの通信を中継し、プリンタ側サーバ５０は、端末側サーバ８０からプリンタ１０等へのＳＵＢコマンドの通信を中継する。従って、２個のサーバ５０，８０は、端末装置１００からプリンタ１０等へのＳＵＢコマンドの通信を中継するサーバである、と言うことができる。
【００１７】
なお、プリンタ側サーバ５０は、端末側サーバ８０からプリンタ１０等へのＳＵＢコマンドの通信を中継するのみならず、プリンタ１０等からの要求に応じて、様々なサービスをプリンタ１０等に提供することができる。上記のサービスは、例えば、（１）プリンタ１０等で利用（例えば、表示、印刷）されるべきデータをプリンタ１０等に送信するためのサービス、（２）クラウドサーバからデータを受信して、当該データをプリンタ１０等に転送するためのサービス、（３）プリンタ１０等からデータを受信して、当該データをクラウドサーバに転送するためのサービス等を含む。
【００１８】
このように、プリンタ側サーバ５０が様々な処理を実行しなければならないので、本実施例では、別体に構成されている２個のサーバ（即ち、プリンタ側サーバ５０、端末側サーバ８０）が設けられている。これにより、端末側サーバ８０が存在しない構成と比べると、プリンタ側サーバ５０の処理負荷を軽減させることができ、この結果、プリンタ側サーバ５０は、上記の様々なサービスを含む各処理を適切に実行することができる。
【００１９】
プリンタ側サーバ５０は、制御部６０を備える。制御部６０は、ＣＰＵ６２と、メモリ６４と、を備える。ＣＰＵ６２は、メモリ６４に記憶されているプログラムに従って、様々な処理を実行する。
【００２０】
端末側サーバ８０は、制御部９０を備える。制御部９０は、ＣＰＵ９２と、メモリ９４と、を備える。ＣＰＵ９２は、メモリ９４に記憶されているプログラムに従って、様々な処理を実行する。
【００２１】
ＤＢサーバ７０は、端末側サーバ８０によって利用されるデータベースを備える。ＤＢサーバ７０は、端末側サーバ８０からの指示に従って、複数個の状況情報を記憶することができる。状況情報は、プリンタＩＤと、当該プリンタＩＤに対応するプリンタへのＳＵＢコマンドの送信の状況を示すコードと、を含む。コードの一例として、「２００ＯＫ」、「２０１Ｏｆｆｌｉｎｅ」、「２０２Ａｃｃｅｐｔｅｄ」、「５ｘｘＥｒｒｏｒ」等を挙げることができる。
【００２２】
「２００ＯＫ」は、ＳＵＢコマンドの送信が完了したことを示すコードである。「２０１Ｏｆｆｌｉｎｅ」は、プリンタ１０等とプリンタ側サーバ５０との間に後述のＸＭＰＰ（eXtensible Messaging and Presence Protocolの略）接続が確立されていないことに起因して、ＳＵＢコマンドの送信が完了していないことを示すコードである。「２０２Ａｃｃｅｐｔｅｄ」は、ＳＵＢコマンドの送信に関する処理を実行中であることに起因して、ＳＵＢコマンドの送信が完了していないことを示すコードである。「５ｘｘＥｒｒｏｒ」は、プリンタ側サーバ５０にトラブルが発生したことに起因して、ＳＵＢコマンドの送信が完了していないことを示すコードである。
【００２３】
（端末装置１００の構成）
端末装置１００は、例えば、プリンタ１０等のベンダによって製造される様々な製品（プリンタ、スキャナ、コピー機、ＦＡＸ装置、多機能機等）を販売するための販売店に設置される。端末装置１００は、公知のＯＳを備えるコンピュータ（例えばＰＣ）であり、プリンタ１０等のベンダによって提供されるアプリケーション（以下では「管理アプリケーション」と呼ぶ）を備える。管理アプリケーションは、端末側サーバ８０と様々なコマンド等を通信するための処理を実行するためのプログラムである。
【００２４】
（各デバイス１０等が実行する処理；図２〜図６）
続いて、図２〜図６を参照して、各デバイスが実行する処理の内容を説明する。なお、プリンタ１０に関する処理は、プリンタ１０のＣＰＵ３２によって実行されるので、正確には、「ＣＰＵ３２が処理を実行する」と記載すべきである。しかしながら、以下では、理解のし易さを考慮して、「プリンタ１０が処理を実行する」と記載する。同様に、「ＣＰＵ６２が処理を実行する」と記載する代わりに、「プリンタ側サーバ５０が処理を実行する」と記載し、「ＣＰＵ９２が処理を実行する」と記載する代わりに、「端末側サーバ８０が処理を実行する」と記載する。
【００２５】
（図２のシーケンス図）
端末装置１００のユーザ（即ち販売店の従業員）は、複数個のプリンタ１０，４０，４５に関する対象データを取得することを望む場合に、端末装置１００の管理アプリケーションを起動して、ＳＵＢコマンドの送信を実行するための各情報を端末装置１００に入力する。なお、対象データの一例として、（１）プリンタ１０等で過去に印刷された印刷媒体のトータルの枚数（即ち印刷枚数）を示すデータ、（２）プリンタ１０等で印刷に利用される消耗品（例えばインク、トナー）の残量を示すデータ、（３）プリンタ１０等で実行された処理の履歴（即ちログ）を示すデータ等を挙げることができる。
【００２６】
具体的に言うと、ユーザは、複数個のプリンタ１０，４０，４５に対応する複数個のプリンタＩＤ（即ち、「ＰＲ１０」、「ＰＲ４０」、「ＰＲ４５」）と、対象データを識別するための識別情報であるデータＩＤと、対象データの値の変化の有無に関する判断処理を各プリンタ１０，４０，４５に実行させるためのインターバルの時間を示す時間情報と、を端末装置１００に入力する。
【００２７】
ユーザは、時間情報として、任意の時間を指定することができる。時間情報が示す時間が長い場合には、プリンタ１０等が対象データの値の変化の有無に関する判断処理を実行するインターバルが長くなり、時間情報が示す時間が短い場合には、プリンタ１０等が判断処理を実行するインターバルが短くなる。プリンタ１０等は、判断処理において対象データの値の変化が有る（例えば印刷枚数の変化が有る）と判断する場合に、対象データの現在値（例えば現在の印刷枚数）を端末装置１００に送信する。プリンタ１０等は、判断処理において対象データの値の変化が無い（例えば印刷枚数の変化が無い）と判断する場合に、対象データの現在値を送信しない。従って、時間情報が示す時間が長い場合には、プリンタ１０等から対象データが送信される頻度が低くなり、時間情報が示す時間が短い場合には、プリンタ１０等から対象データが送信される頻度が高くなる。
【００２８】
なお、時間情報として「ゼロ」が指定される場合には、プリンタ１０等が判断処理を常に実行することになる。即ち、プリンタ１０等は、対象データの値が変化する毎に（例えば印刷枚数が変化する毎に）、対象データの現在値を端末装置１００に送信する。
【００２９】
端末装置１００は、ユーザによって上記の各情報（即ち、プリンタＩＤ、データＩＤ、時間情報）が入力されると、データＩＤ及び時間情報等を含むＨＴＴＰのＳＵＢコマンド２０２を生成する。端末装置１００は、さらに、ＳＵＢコマンド２０２と、複数個のプリンタＩＤと、を含む要求コマンド２００を生成する。次いで、端末装置１００は、要求コマンド２００を端末側サーバ８０に送信する。
【００３０】
端末側サーバ８０は、端末装置１００から要求コマンド２００を受信すると、要求コマンド２００から複数個のプリンタＩＤを抽出して、抽出済みの複数個のプリンタＩＤを含むＲＥＡＤコマンド２１０を生成する。次いで、端末側サーバ８０は、ＲＥＡＤコマンド２１０をＤＢサーバ７０に送信する。ＲＥＡＤコマンドは、ＲＥＡＤコマンドに含まれるプリンタＩＤに対応する状況情報の送信を、ＤＢサーバ７０に要求するためのコマンドである。
【００３１】
ＤＢサーバ７０は、端末側サーバ８０からＲＥＡＤコマンド２１０を受信すると、ＲＥＡＤコマンド２１０に含まれる複数個のプリンタＩＤに対応する複数個の状況情報が記憶されているのか否かを判断する。現時点では、ＤＢサーバ７０は、状況情報が記憶されていないと判断して、状況情報が記憶されていないことを示す結果情報を端末側サーバ８０に送信する。
【００３２】
端末側サーバ８０は、ＤＢサーバ７０から結果情報を受信すると、状況情報が記憶されていないことを知ることができる。この場合、端末側サーバ８０は、抽出済の複数個のプリンタＩＤを含むＣＲＥＡＴＥコマンド２２０を生成する。次いで、端末側サーバ８０は、ＣＲＥＡＴＥコマンド２２０をＤＢサーバ７０に送信する。ＣＲＥＡＴＥコマンドは、ＣＲＥＡＴＥコマンドに含まれるプリンタＩＤに対応する状況情報の生成を、ＤＢサーバ７０に要求するためのコマンドである。
【００３３】
ＤＢサーバ７０は、端末側サーバ８０からＣＲＥＡＴＥコマンド２２０を受信すると、ＣＲＥＡＴＥコマンド２２０に含まれる複数個のプリンタＩＤに対応する複数個の状況情報を生成して、複数個の状況情報を記憶する。複数個の状況情報のそれぞれは、プリンタＩＤ（例えば「ＰＲ１０」）と、コード「２０２Ａｃｃｅｐｔｅｄ」と、を含む。
【００３４】
端末側サーバ８０は、ＣＲＥＡＴＥコマンド２２０をＤＢサーバ７０に送信すると、要求コマンド２００に対する応答である応答コマンド２３０を生成する。応答コマンド２３０は、ＤＢサーバ７０内の複数個の状況情報に一致する複数個の状況情報（即ち、プリンタＩＤ、及び、コード「２０２Ａｃｃｅｐｔｅｄ」）を含む。次いで、端末側サーバ８０は、応答コマンド２３０を端末装置１００に送信する。
【００３５】
端末装置１００は、端末側サーバ８０から応答コマンド２３０を受信すると、応答コマンド２３０内の複数個の状況情報を確認する。これにより、端末装置１００は、各プリンタ１０，４０，４５について、ＳＵＢコマンドの送信に関する処理が実行中であることを知ることができる。
【００３６】
次いで、端末側サーバ８０は、要求コマンド２００に含まれる複数個のプリンタＩＤの中から１個のプリンタＩＤ「ＰＲ１０」を選択する。そして、端末側サーバ８０は、要求コマンド２００に含まれるＳＵＢコマンド２０２と、選択済みのプリンタＩＤ「ＰＲ１０」と、をプリンタ側サーバ５０に送信する。これにより、端末側サーバ８０は、ＳＵＢコマンド２０２及びプリンタＩＤ「ＰＲ１０」をプリンタ側サーバ５０に供給することができる。
【００３７】
プリンタ側サーバ５０は、端末側サーバ８０からＳＵＢコマンド２０２及びプリンタＩＤ「ＰＲ１０」を受信することによって、それらの情報を取得する。この場合、プリンタ側サーバ５０は、ＳＵＢコマンド２０２をメモリ６４に記憶する。次いで、プリンタ側サーバ５０は、受信済みのプリンタＩＤ「ＰＲ１０」に対応するプリンタ１０と、プリンタ側サーバ５０と、の間に、ＸＭＰＰ接続が確立されているのか否かを判断する。より具体的に言うと、プリンタ側サーバ５０のメモリ６４（図１参照）は、複数個のプリンタＩＤのそれぞれについて、当該プリンタＩＤに対応するプリンタと、プリンタ側サーバ５０と、の間に、ＸＭＰＰ接続が確立されているのか否かを示す接続情報を記憶している。そして、プリンタ側サーバ５０は、受信済みのプリンタＩＤ「ＰＲ１０」に対応する接続情報をメモリ６４から読み出すことによって、プリンタ１０とプリンタ側サーバ５０との間にＸＭＰＰ接続が確立されているのか否かを判断する。図２のケースでは、プリンタ側サーバ５０は、ＸＭＰＰ接続が確立されていると判断する。
【００３８】
各プリンタ１０，４０，４５が接続されているＬＡＮは、インターネット通信を仲介するためのＮＡＴ（Network Address Translationの略）ルータを備える。そして、ＮＡＴルータは、プリンタ１０とプリンタ側サーバ５０との間にＸＭＰＰ接続（即ちいわゆる常時接続）が確立されている状態では、インターネット側（即ちプリンタ側サーバ５０）からＬＡＮ側（即ちプリンタ１０）へのデータ（例えばＳＵＢコマンド２０２）の送信を許容するが、ＸＭＰＰ接続が確立されていない状態には、当該データの送信を禁止する。
【００３９】
ここでは、プリンタ１０とプリンタ側サーバ５０との間にＸＭＰＰ接続を確立するための手順について説明する。プリンタ１０は、プリンタ１０の電源がＯＦＦ状態からＯＮ状態に変化する場合に、ＢＯＳＨ（Bidirectional-streams Over Synchronous HTTPの略）の要求信号（即ちＨＴＴＰリクエスト）１５０をプリンタ側サーバ５０に送信する。要求信号１５０は、ＸＭＰＰ接続で利用されるべきセッションＩＤの送信を、プリンタ側サーバ５０に要求するための信号である。
【００４０】
なお、プリンタ１０は、プリンタ１０の電源がＯＦＦ状態からＯＮ状態に変化する場合のみならず、以下の状況でも、要求信号１５０をプリンタ側サーバ５０に送信してもよい。例えば、プリンタ１０は、プリンタ１０の通信リンクの状態が、リンクダウン状態からリンクアップ状態に変化する場合に、要求信号１５０をプリンタ側サーバ５０に送信してもよい。リンクダウン状態の一例として、例えば、ケーブルがＬＡＮＩ／Ｆ２２に挿入されていない状態、ＬＡＮＩ／Ｆ２２の機能がユーザによってＯＦＦにされた状態等を挙げることができる。リンクアップ状態の一例として、例えば、ケーブルがＬＡＮＩ／Ｆ２２に挿入されている状態、ＬＡＮＩ／Ｆ２２の機能がユーザによってＯＮにされた状態等を挙げることができる。また、例えば、プリンタ１０は、プリンタ１０の通信設定が、インターネット通信を禁止する設定から、インターネット通信を許容する設定に変化する場合に、要求信号１５０をプリンタ側サーバ５０に送信してもよい。即ち、一般的に言うと、プリンタ１０は、ＸＭＰＰ接続が確立されている状態で、要求信号１５０をプリンタ側サーバ５０に送信すればよい。
【００４１】
プリンタ側サーバ５０は、プリンタ１０から要求信号１５０を受信する場合に、セッションＩＤを生成して、セッションＩＤを含む応答信号（即ちＨＴＴＰレスポンス）１５２をプリンタ１０に送信する。
【００４２】
プリンタ１０は、プリンタ側サーバ５０から応答信号１５２を受信する場合に、ＢＯＳＨの要求信号（即ちＨＴＴＰリクエスト）１５４をプリンタ側サーバ５０に送信する。要求信号１５４は、応答信号１５２に含まれるセッションＩＤに一致するセッションＩＤを含む。要求信号１５４は、ＸＭＰＰ接続の確立を、プリンタ側サーバ５０に要求するための信号である。
【００４３】
プリンタ側サーバ５０は、プリンタ１０からセッションＩＤを含む要求信号１５４を受信する場合に、ＯＫを示す応答信号（即ちＨＴＴＰレスポンス）１５６をプリンタ１０に送信する。これにより、プリンタ１０及びプリンタ側サーバ５０は、ＸＭＰＰ接続を確立するための認証信号、応答信号等の様々な信号１５８の通信を実行して、ＸＭＰＰ接続を確立する。
【００４４】
なお、プリンタ１０とプリンタ側サーバ５０との間にＸＭＰＰ接続が確立される手順を説明したが、他のプリンタ４０，４５についても同様である。以下では、他のプリンタ４０，４５に関するＸＭＰＰ接続については説明を省略する。
【００４５】
プリンタ１０は、ＸＭＰＰ接続が確立される場合に、ＢＯＳＨの要求信号（即ちＨＴＴＰリクエスト）１６０をプリンタ側サーバ５０に送信する。要求信号１６０は、上記のセッションＩＤを含む。要求信号１６０は、プリンタ側サーバ５０からプリンタ１０にデータ（例えば後述のＳＵＢコマンド２０２）を送信するための元になる信号である。
【００４６】
プリンタ側サーバ５０は、プリンタ１０から要求信号１６０を受信する際に、プリンタ１０に送信されるべきＳＵＢコマンドが存在すれば、要求信号１６０に対する応答信号（即ちＨＴＴＰレスポンス）として、当該ＳＵＢコマンドをプリンタ１０に送信する。ただし、図２のケースのように、プリンタ側サーバ５０は、プリンタ１０から要求信号１６０を受信する際に、プリンタ１０に送信されるべきＳＵＢコマンドが存在しなければ、端末側サーバ８０からＳＵＢコマンド２０２を受信するまで、ＳＵＢコマンド２０２をプリンタ１０に送信しない。
【００４７】
ＢＯＳＨの要求信号１６０は、ＢＯＳＨではない通常のＨＴＴＰの要求信号と比べて、長いタイムアウト時間を有する。従って、プリンタ側サーバ５０は、プリンタ１０から要求信号１６０を受信してから、ＳＵＢコマンド２０２を送信するまでの時間が長くても、タイムアウトと判断せずに、要求信号１６０に対する応答信号として、ＳＵＢコマンド２０２を適切に送信することができる。また、ＮＡＴルータは、プリンタ１０からプリンタ側サーバ５０へのＢＯＳＨの要求信号１６０の転送を実行する場合には、要求信号１６０の転送を実行してから、プリンタ側サーバ５０からＳＵＢコマンド２０２（即ち応答信号）を受信するまでの時間が長くても、タイムアウトと判断せずに、ＳＵＢコマンド２０２をプリンタ１０に適切に転送することができる（即ちＳＵＢコマンド２０２の送信を許容する）。
【００４８】
また、プリンタ１０は、要求信号１６０に対する応答信号（即ちＳＵＢコマンド２０２）を受信する場合には、要求信号１６０をプリンタ側サーバ５０に再び送信する。即ち、プリンタ１０は、要求信号１６０に対する応答信号を受信する毎に、要求信号１６０をプリンタ側サーバ５０に送信する。また、プリンタ１０は、要求信号１６０をプリンタ側サーバ５０に送信してから、プリンタ側サーバ５０から応答信号を受信せずに、所定期間が経過すると、要求信号１６０をプリンタ側サーバ５０に再び送信する。この構成によると、プリンタ側サーバ５０は、常に、プリンタ１０から要求信号１６０を受信した状態になる。このために、プリンタ側サーバ５０は、任意のタイミングで、要求信号１６０に対する応答信号として、所望のデータ（例えばＳＵＢコマンド）をプリンタ１０に送信することができる。即ち、プリンタ１０とプリンタ側サーバ５０との間には常時接続が確立されているといえる。なお、上記の所定期間は、上記のＢＯＳＨの要求信号１６０に対応するタイムアウト時間と比べて、短い期間である。
【００４９】
上述したように、プリンタ側サーバ５０は、プリンタ１０とプリンタ側サーバ５０との間にＸＭＰＰ接続が確立されていると判断する場合に、要求信号１６０に対する応答信号として、ＳＵＢコマンド２０２をプリンタ１０に送信する。なお、当該応答信号は、上記のセッションＩＤを含まない。ただし、当該応答信号（即ちＳＵＢコマンド２０２）は、上記のセッションＩＤを含む要求信号１６０（即ちＸＭＰＰ接続を利用して通信される要求信号１６０）に対する応答信号であるので、ＸＭＰＰ接続を利用して通信される信号である、と言える。
【００５０】
プリンタ１０は、プリンタ側サーバ５０からＳＵＢコマンド２０２を受信すると、ＳＵＢコマンド２０２に含まれる時間情報によって示される時間が経過する毎に、ＳＵＢコマンド２０２に含まれるデータＩＤによって識別される対象データ（例えば、印刷枚数、消耗品の残量等）の値の変化に関する判断処理を実行する。そして、プリンタ１０は、判断処理で対象データの値の変化が有ると判断する場合に、対象データの現在値を端末装置１００に送信する。これにより、端末装置１００のユーザ（即ち販売店の従業員）は、プリンタ１０の対象データの現在値を知ることができ、当該現在値に応じたサービス（例えば、印刷媒体の補充サービス、消耗品の交換サービス等）をプリンタ１０のユーザに提供することができる。
【００５１】
なお、プリンタ１０は、プリンタ側サーバ５０及び端末側サーバ８０を介して、対象データを端末装置１００に送信してもよいし、いずれのサーバも介さずに、対象データを端末装置１００に送信してもよい。即ち、一般的に言うと、プリンタ１０は、対象データが端末装置１００で受信されるように、対象データを外部に送信すればよい。この点は、プリンタ４０，４５でも同様である。
【００５２】
図示省略しているが、プリンタ１０は、プリンタ側サーバ５０からＳＵＢコマンド２０２を受信すると、ＳＵＢコマンド２０２を受信したことを示す特定の要求信号（即ちＨＴＴＰリクエスト）をプリンタ側サーバ５０に送信する。なお、上記の特定の要求信号は、ＢＯＳＨの要求信号ではなく、通常のＨＴＴＰの要求信号であり、上記のセッションＩＤを含まない。
【００５３】
プリンタ側サーバ５０は、プリンタ１０から、上記の特定の要求信号を受信すると、プリンタ１０のプリンタＩＤ「ＰＲ１０」と、コード「２００ＯＫ」と、が対応付けられているステータス情報を、メモリ６４に記憶させる。なお、本実施例では、プリンタ側サーバ５０は、プリンタ側サーバ５０の内部のメモリ６４にステータス情報を記憶させるが、変形例では、プリンタ側サーバ５０の外部のメモリ（即ちデータベース）にステータス情報を記憶させてもよい。次いで、プリンタ側サーバ５０は、プリンタ１０へのＳＵＢコマンドの送信が成功したことを示す成功通知２４０を、端末側サーバ８０に送信する。これにより、プリンタ側サーバ５０は、成功通知２４０を端末側サーバ８０に供給することができる。
【００５４】
端末側サーバ８０は、プリンタ側サーバ５０から成功通知２４０を受信することによって、成功通知２４０を取得する。この場合、端末側サーバ８０は、プリンタＩＤ「ＰＲ１０」と、コード「２００ＯＫ」と、を含むＵＰＤＡＴＥコマンド２５０を生成する。次いで、端末側サーバ８０は、ＵＰＤＡＴＥコマンド２５０をＤＢサーバ７０に送信する。ＵＰＤＡＴＥコマンドは、ＵＰＤＡＴＥコマンドに含まれるプリンタＩＤに対応する状況情報を、ＵＰＤＡＴＥコマンドに含まれるコードが示す内容に更新することを、ＤＢサーバ７０に要求するためのコマンドである。
【００５５】
ＤＢサーバ７０は、端末側サーバ８０からＵＰＤＡＴＥコマンド２５０を受信すると、ＵＰＤＡＴＥコマンド２５０に含まれるプリンタＩＤ「ＰＲ１０」に対応する状況情報を、ＵＰＤＡＴＥコマンド２５０に含まれるコード（即ち「２００ＯＫ」）に更新する。
【００５６】
（図３のシーケンス図）
図３に示されるように、プリンタ４０が電源ＯＦＦ状態であるので、プリンタ４０とプリンタ側サーバ５０との間にＸＭＰＰ接続が確立されていない。このために、プリンタ側サーバ５０のメモリ６４は、プリンタ４０のプリンタＩＤ「ＰＲ４０」に対応付けて、ＸＭＰＰ接続が確立されていないことを示す接続情報を記憶している。
【００５７】
端末側サーバ８０は、要求コマンド２００に含まれる複数個のプリンタＩＤの中から１個のプリンタＩＤ「ＰＲ４０」を選択する。そして、端末側サーバ８０は、要求コマンド２００に含まれるＳＵＢコマンド２０２と、選択済みのプリンタＩＤ「ＰＲ４０」と、をプリンタ側サーバ５０に送信する。
【００５８】
プリンタ側サーバ５０は、端末側サーバ８０からＳＵＢコマンド２０２及びプリンタＩＤ「ＰＲ４０」を受信すると、プリンタＩＤ「ＰＲ４０」に対応する接続情報をメモリ６４から読み出して、プリンタ４０とプリンタ側サーバ５０との間にＸＭＰＰ接続が確立されていないと判断する。この場合、プリンタ側サーバ５０は、ＳＵＢコマンド２０２をプリンタ４０に送信するための処理を実行しない。
【００５９】
次いで、プリンタ側サーバ５０は、プリンタ４０のプリンタＩＤ「ＰＲ４０」と、コード「２０１Ｏｆｆｌｉｎｅ」と、が対応付けられているステータス情報を、メモリ６４に記憶させる。次いで、プリンタ側サーバ５０は、プリンタ４０とプリンタ側サーバ５０との間にＸＭＰＰ接続が確立されていないことに起因して、ＳＵＢコマンドの送信を実行不可能であることを示すＯｆｆｌｉｎｅ通知２６０を、端末側サーバ８０に送信する。
【００６０】
端末側サーバ８０は、プリンタ側サーバ５０からＯｆｆｌｉｎｅ通知２６０を受信すると、プリンタＩＤ「ＰＲ４０」と、コード「２０１Ｏｆｆｌｉｎｅ」と、を含むＵＰＤＡＴＥコマンド２７０を生成する。次いで、端末側サーバ８０は、ＵＰＤＡＴＥコマンド２７０をＤＢサーバ７０に送信する。
【００６１】
ＤＢサーバ７０は、端末側サーバ８０からＵＰＤＡＴＥコマンド２７０を受信すると、ＵＰＤＡＴＥコマンド２７０に含まれるプリンタＩＤ「ＰＲ４０」に対応する状況情報を、ＵＰＤＡＴＥコマンド２７０に含まれるコード（即ち「２０１Ｏｆｆｌｉｎｅ」）に更新する。
【００６２】
上述したように、本実施例では、端末側サーバ８０は、まず、要求コマンド２００に含まれる複数個のプリンタＩＤのうちの１個のプリンタＩＤ「ＰＲ１０」及びＳＵＢコマンド２０２をプリンタ側サーバ５０に送信する（図２参照）。その後、端末側サーバ８０は、プリンタ側サーバ５０から成功通知２４０を受信する場合に、要求コマンド２００に含まれる複数個のプリンタＩＤのうちの他の１個のプリンタＩＤ「ＰＲ４０」及びＳＵＢコマンド２０２をプリンタ側サーバ５０に送信する。
【００６３】
これに代えて、端末側サーバ８０が、要求コマンド２００に含まれる複数個のプリンタＩＤの全てと、ＳＵＢコマンド２０２と、をプリンタ側サーバ５０に同時的に送信する構成（以下では「第１の比較例の構成」と呼ぶ）を採用することが考えられる。しかしながら、第１の比較例の構成では、プリンタ側サーバ５０は、メモリ６４内のワークメモリに複数個のプリンタＩＤの全てを記憶させた状態で、複数個のプリンタ１０，４０，４５のそれぞれにＳＵＢコマンド２０２を送信するための処理を順次実行しなければならない。このために、プリンタ側サーバ５０のリソース（即ちメモリ６４）の負荷が大きい。プリンタ側サーバ５０のリソースの負荷が大きくなると、プリンタ側サーバ５０が、上記の様々なサービスを含む処理を適切に実行することができなくなる可能性がある。
【００６４】
これに対し、本実施例では、プリンタ側サーバ５０は、１個のプリンタＩＤに対応する１個のプリンタにＳＵＢコマンドを送信するための処理を実行すれば足りる。このために、メモリ６４内のワークメモリに記憶されるべきデータ量が多くなるのを抑制することができ、プリンタ側サーバ５０のリソースの負荷が小さくて済む。この結果、プリンタ側サーバ５０は、上記の様々なサービスを含む処理を適切に実行することができる。
【００６５】
上述したように、端末装置１００は、端末側サーバ８０から応答コマンド２３０（図２参照）を受信するので、各プリンタ１０，４０，４５について、ＳＵＢコマンドの送信に関する処理が実行中であることを知ることができる。ただし、端末装置１００は、ＳＵＢコマンドの送信が完了したことをまだ確認していないので、当該確認のためのＨＴＴＰのコマンドであるＧＥＴＳｕｂｓｃｒｉｐｔｉｏｎコマンド２８０と、複数個のプリンタＩＤ（即ち、「ＰＲ１０」、「ＰＲ４０」、「ＰＲ４５」）と、を端末側サーバ８０に送信する。
【００６６】
以下では、ＧＥＴＳｕｂｓｃｒｉｐｔｉｏｎコマンドのことを「ＧＥＴＳＵＢコマンド」と記載する。本実施例では、端末装置１００は、所定時間毎に（即ち定期的に）、ＧＥＴＳＵＢコマンド２８０を送信する。ただし、変形例では、端末装置１００は、ユーザ（即ち販売店の従業員）によって所定の指示が端末装置１００に入力される場合に、ＧＥＴＳＵＢコマンド２８０を送信してもよい。
【００６７】
端末側サーバ８０は、端末装置１００からＧＥＴＳＵＢコマンド２８０及び複数個のプリンタＩＤを受信すると、当該複数個のプリンタＩＤを含むステータスコマンド２９０を生成する。次いで、端末側サーバ８０は、ステータスコマンド２９０をプリンタ側サーバ５０に送信する。ステータスコマンドは、ステータスコマンドに含まれるプリンタＩＤに対応するステータス情報の送信を、プリンタ側サーバ５０に要求するためのコマンドである。
【００６８】
プリンタ側サーバ５０は、端末側サーバ８０からステータスコマンド２９０を受信すると、ステータス情報３００をメモリ６４から読み出す。現時点では、メモリ６４は、プリンタＩＤ「ＰＲ１０」及びコード「２００ＯＫ」を含む第１のステータス情報（図２参照）と、プリンタＩＤ「ＰＲ４０」及びコード「２０１Ｏｆｆｌｉｎｅ」を含む第２のステータス情報（図３参照）と、を記憶している。従って、プリンタ側サーバ５０は、第１及び第２のステータス情報を含むステータス情報３００をメモリ６４から読み出す。次いで、プリンタ側サーバ５０は、ステータス情報３００を端末側サーバ８０に送信する。
【００６９】
端末側サーバ８０は、プリンタ側サーバ５０からステータス情報３００を受信すると、複数個のプリンタＩＤを含むＲＥＡＤコマンド３１０を生成する。次いで、端末側サーバ８０は、ＲＥＡＤコマンド３１０をＤＢサーバ７０に送信する。
【００７０】
ＤＢサーバ７０は、端末側サーバ８０からＲＥＡＤコマンド３１０を受信すると、ＲＥＡＤコマンド３１０に含まれる複数個のプリンタＩＤに対応する複数個の状況情報を読み出す。ここで読み出される複数個の状況情報は、プリンタＩＤ「ＰＲ１０」及びコード「２００ＯＫ」を含む第１の状況情報と、プリンタＩＤ「ＰＲ４０」及びコード「２０１Ｏｆｆｌｉｎｅ」を含む第２の状況情報と、プリンタＩＤ「ＰＲ４５」及びコード「２０２Ａｃｃｅｐｔｅｄ」を含む第３の状況情報と、を含む。ＤＢサーバ７０は、複数個の状況情報を含む結果情報を端末側サーバ８０に送信する。
【００７１】
端末側サーバ８０は、ＤＢサーバ７０から結果情報を受信すると、結果情報に含まれる複数個の状況情報と、ステータス情報３００と、を比較して、内容が一致するのか否かを判断する。現時点では、ステータス情報３００に含まれる第１のステータス情報（「ＰＲ１０」、「２００ＯＫ」）と、結果情報に含まれる第１の状況情報（「ＰＲ１０」、「２００ＯＫ」）と、が一致している。また、ステータス情報３００に含まれる第２のステータス情報（「ＰＲ４０」、「２０１Ｏｆｆｌｉｎｅ」）と、結果情報に含まれる第２の状況情報（「ＰＲ４０」、「２０１Ｏｆｆｌｉｎｅ」）と、が一致している。従って、端末側サーバ８０は、内容が一致すると判断する。
【００７２】
なお、ステータス情報３００は、プリンタＩＤ「ＰＲ４５」に対応するステータス情報を含んでいないので、結果情報に含まれる第３の状況情報（「ＰＲ４５」、「２０２Ａｃｃｅｐｔｅｄ」）と比較されるべき対象のステータス情報が存在しない。このような場合には、端末側サーバ８０は、内容が一致すると判断する。端末側サーバ８０は、内容が一致すると判断する場合には、ＤＢサーバ７０内の状況情報を更新しない。
【００７３】
次いで、端末側サーバ８０は、ＧＥＴＳＵＢコマンド２８０に対する応答である応答コマンド３２０を生成する。応答コマンド３２０は、ＤＢサーバ７０内の複数個の状況情報に一致する複数個の状況情報を含む。次いで、端末側サーバ８０は、応答コマンド３２０を端末装置１００に送信する。
【００７４】
端末装置１００は、端末側サーバ８０から応答コマンド３２０を受信すると、応答コマンド３２０内の複数個の状況情報を確認する。これにより、端末装置１００は、（１）プリンタ１０へのＳＵＢコマンドの送信が完了したこと、（２）ＸＭＰＰ接続が確立されていないことに起因して、プリンタ４０へのＳＵＢコマンドの送信が完了していないこと、及び、（３）ＳＵＢコマンドの送信に関する処理が実行中であることに起因して、プリンタ４５へのＳＵＢコマンドの送信が完了していないこと、を知ることができる。
【００７５】
（図４のシーケンス図）
図４に示されるように、プリンタ４５とプリンタ側サーバ５０との間にＸＭＰＰ接続が確立されているが、プリンタ側サーバ５０に何らかのトラブル（例えばサーバ５０のフリーズ）が発生する状況を想定する。
【００７６】
端末側サーバ８０は、要求コマンド２００に含まれる複数個のプリンタＩＤの中から１個のプリンタＩＤ「ＰＲ４５」を選択する。そして、端末側サーバ８０は、要求コマンド２００に含まれるＳＵＢコマンド２０２と、選択済みのプリンタＩＤ「ＰＲ４５」と、をプリンタ側サーバ５０に送信する。
【００７７】
プリンタ側サーバ５０でトラブルが発生しているので、プリンタ側サーバ５０は、端末側サーバ８０からＳＵＢコマンド２０２を受信しても、ＳＵＢコマンド２０２をプリンタ４５に送信するための処理を実行することができない。従って、プリンタ側サーバ５０は、処理を実行不可能であることを示すエラー通知３６０を、端末側サーバ８０に送信する。なお、プリンタ側サーバ５０でトラブルが発生しているので、プリンタ側サーバ５０は、ステータス情報をメモリ６４に記憶させることもできない。
【００７８】
端末側サーバ８０は、プリンタ側サーバ５０からエラー通知３６０を受信すると、プリンタＩＤ「ＰＲ４５」と、コード「５ｘｘＥｒｒｏｒ」と、を含むＵＰＤＡＴＥコマンド３７０を生成する。次いで、端末側サーバ８０は、ＵＰＤＡＴＥコマンド３７０をＤＢサーバ７０に送信する。
【００７９】
変形例では、プリンタ側サーバ５０は、エラー通知３６０を送信しなくてもよい。この場合、端末側サーバ８０は、プリンタ側サーバ５０から通知を受信せずに、所定のタイムアウト時間を経過すると、プリンタ側サーバ５０にトラブルが発生したと判断してもよい。端末側サーバ８０は、プリンタ側サーバ５０にトラブルが発生したと判断する場合に、プリンタＩＤ「ＰＲ４５」と、コード「５ｘｘＥｒｒｏｒ」と、を含むＵＰＤＡＴＥコマンド３７０を、ＤＢサーバ７０に送信してもよい。
【００８０】
ＤＢサーバ７０は、端末側サーバ８０からＵＰＤＡＴＥコマンド３７０を受信すると、ＵＰＤＡＴＥコマンド３７０に含まれるプリンタＩＤ「ＰＲ４５」に対応する状況情報を、ＵＰＤＡＴＥコマンド３７０に含まれるコード（即ち「５ｘｘＥｒｒｏｒ」）に更新する。
【００８１】
一方において、端末装置１００は、図３のＧＥＴＳＵＢコマンド２８０を送信して、応答コマンド３２０を受信した段階では、プリンタ４０，４５へのＳＵＢコマンドの送信が完了していないことを知ることができる。このために、端末装置１００は、ＧＥＴＳＵＢコマンド２８０の送信から所定時間経過後に、ＧＥＴＳＵＢコマンド３８０と、複数個のプリンタＩＤ（即ち、「ＰＲ１０」、「ＰＲ４０」、「ＰＲ４５」）と、を端末側サーバ８０に再び送信する。
【００８２】
端末側サーバ８０は、端末装置１００からＧＥＴＳＵＢコマンド３８０及び複数個のプリンタＩＤを受信すると、当該複数個のプリンタＩＤを含むステータスコマンド３９０を生成する。次いで、端末側サーバ８０は、ステータスコマンド３９０をプリンタ側サーバ５０に送信する。
【００８３】
プリンタ側サーバ５０は、端末側サーバ８０からステータスコマンド３９０を受信すると、ステータス情報４００をメモリ６４から読み出す。現時点では、ステータス情報４００は、第１のステータス情報（「ＰＲ１０」、「２００ＯＫ」）と、第２のステータス情報（「ＰＲ４０」、「２０１Ｏｆｆｌｉｎｅ」）と、を含む。次いで、プリンタ側サーバ５０は、ステータス情報４００を端末側サーバ８０に送信する。
【００８４】
この後の各処理、即ち、ＲＥＡＤコマンド４１０の通信、結果情報の通信、及び、結果情報とステータス情報４００との比較、については、図３の各処理と同様である。現時点でも、端末側サーバ８０は、内容が一致すると判断する。そして、端末側サーバ８０は、ＧＥＴＳＵＢコマンド３８０に対する応答である応答コマンド４２０を生成して、応答コマンド４２０を端末装置１００に送信する。図３の応答コマンド３２０では、第３の状況情報が「ＰＲ４５」及びコード「２０１Ａｃｃｅｐｔｅｄ」を含むが、図４の応答コマンド４２０では、第３の状況情報が「ＰＲ４５」及びコード「５ｘｘＥｒｒｏｒ」を含む。
【００８５】
端末装置１００は、端末側サーバ８０から応答コマンド４２０を受信すると、応答コマンド４２０内の複数個の状況情報を確認する。図３のケースとは異なり、端末装置１００は、プリンタ側サーバ５０でトラブルが発生していることに起因して、プリンタ４５へのＳＵＢコマンドの送信が完了していないこと、を知ることができる。
【００８６】
（図５のシーケンス図）
例えば、プリンタ１０へのＳＵＢコマンド２０２（図２参照）の送信が実行されたにも関わらず、端末装置１００のユーザが、プリンタ１０へのＳＵＢコマンド２０２の送信が実行されていないと誤解している状況を想定する。この場合、ユーザは、プリンタ１０へのＳＵＢコマンドの送信を実行するための各情報を端末装置１００に再び入力し得る。即ち、ユーザは、プリンタ１０に対応するプリンタＩＤ「ＰＲ１０」と、データＩＤ（例えばＳＵＢコマンド２０２に含まれるデータＩＤとは異なるデータＩＤ）と、時間情報と、を端末装置１００に入力し得る。
【００８７】
端末装置１００は、ユーザによって上記の各情報（即ち、プリンタＩＤ、データＩＤ、時間情報）が入力されると、ＳＵＢコマンド５０２を生成する。端末装置１００は、さらに、ＳＵＢコマンド５０２と、プリンタＩＤ「ＰＲ１０」と、を含む要求コマンド５００を生成する。次いで、端末装置１００は、要求コマンド５００を端末側サーバ８０に送信する。
【００８８】
端末側サーバ８０は、端末装置１００から要求コマンド５００を受信すると、要求コマンド５００からプリンタＩＤ「ＰＲ１０」を抽出して、プリンタＩＤ「ＲＰ１０」を含むＲＥＡＤコマンド５１０を生成する。次いで、端末側サーバ８０は、ＲＥＡＤコマンド５１０をＤＢサーバ７０に送信する。
【００８９】
ＤＢサーバ７０は、端末側サーバ８０からＲＥＡＤコマンド５１０を受信すると、ＲＥＡＤコマンド５１０に含まれるプリンタＩＤ「ＰＲ１０」に対応する第１の状況情報（即ち、プリンタＩＤ「ＰＲ１０」、コード「２００ＯＫ」）を読み出す。ＤＢサーバ７０は、第１の状況情報を含む結果情報を端末側サーバ８０に送信する。
【００９０】
端末側サーバ８０は、ＤＢサーバ７０から結果情報を受信すると、プリンタ１０へのＳＵＢコマンド２０２（図２参照）の送信が完了していることを知ることができる。この場合、端末側サーバ８０は、要求コマンド５００に含まれるＳＵＢコマンド５０２をプリンタ側サーバ５０に送信しない。この結果、ＳＵＢコマンド５０２がプリンタ１０に送信されない。
【００９１】
なお、端末側サーバ８０は、ＤＢサーバ７０から受信される結果情報が、コード「２００ＯＫ」を含む場合のみならず、コード「２０１Ｏｆｆｌｉｎｅ」又はコード「２０２Ａｃｃｅｐｔｅｄ」を含む場合でも、ＳＵＢコマンド５０２をプリンタ側サーバ５０に送信しない。
【００９２】
このように、本実施例では、仮に、ユーザが、プリンタ１０へのＳＵＢコマンド５０２の送信のための指示を端末装置１００に誤って入力しても、ＳＵＢコマンド５０２がプリンタ１０に送信されない。このために、プリンタ１０は、ＳＵＢコマンド２０２（図２参照）に従って、対象データを端末装置１００に適切に送信することができる。
【００９３】
変形例では、ユーザは、プリンタ１０に対応するプリンタＩＤ「ＰＲ１０」と、データＩＤと、時間情報と、に加えて、ＳＵＢコマンド５０２を強制的にプリンタ１０に送信することを指示する情報を、端末装置１００に入力してもよい。この場合、端末側サーバ５０は、ＤＢサーバ７０に記憶されている第１の状況情報に含まれるコードがどのような値であっても、ＳＵＢコマンド５０２をプリンタ側サーバ５０に送信してもよい。そして、端末側サーバ５０は、プリンタＩＤ「ＰＲ１０」と、コード「２０２Ａｃｃｅｐｔｅｄ」と、を含むＵＰＤＡＴＥコマンドをＤＢサーバ７０に送信して、ＤＢサーバ７０内の第１の状況情報に含まれるコードを、コード「２０２Ａｃｃｅｐｔｅｄ」に更新してもよい。
【００９４】
次いで、端末側サーバ８０は、要求コマンド５００に対する応答である応答コマンド５２０を生成する。応答コマンド５２０は、状況情報（即ち、プリンタＩＤ「ＰＲ１０」、コード「２００ＯＫ」）を含む。そして、端末側サーバ８０は、応答コマンド５２０を端末装置１００に送信する。
【００９５】
端末装置１００は、端末側サーバ８０から応答コマンド５２０を受信する。図２に示されるように、端末側サーバ８０でＳＵＢコマンド２０２が適切に処理される状況では、応答コマンド２３０内の状況情報は、コード「２０２Ａｃｃｅｐｔｅｄ」を含む。この場合、端末装置１００は、ＳＵＢコマンド２０２に関する処理が適切に実行されることを知ることができる。これに対し、図５のケースでは、応答コマンド５２０内の状況情報は、コード「２００ＯＫ」を含む。この場合、端末装置１００は、プリンタ１０へのＳＵＢコマンド２０２の送信が完了していることに起因して、プリンタ１０へのＳＵＢコマンド５０２の送信が実行されないことを知ることができる。このような状況では、端末装置１００は、例えば、プリンタ１０へのＳＵＢコマンド５０２の送信を実行不可能であることを示す画面を表示させてもよい。
【００９６】
なお、図示省略しているが、プリンタ１０に過去に送信されたＳＵＢコマンド２０２を無効化するためのコマンドとして、Ｕｎｓｕｂｓｃｒｉｂｅと呼ばれるコマンド（以下では「ＵＮＳＵＢコマンド」と呼ぶ）が存在する。ユーザは、ＳＵＢコマンド２０２を無効化するためのＵＮＳＵＢコマンドの送信のための指示を、端末装置１００に入力することができる。この場合、端末装置１００は、ＵＮＳＵＢコマンドを端末側サーバ８０に送信する。
【００９７】
端末側サーバ８０は、端末装置１００からＵＮＳＵＢコマンドを受信すると、ＤＥＬＥＴＥコマンドをＤＢサーバ７０に送信する。これにより、ＤＢサーバ７０内のプリンタＩＤ「ＰＲ１０」に対応する第１の状況情報が消去される。また、端末側サーバ８０は、ＵＮＳＵＢコマンドをプリンタ側サーバ５０に送信する。
【００９８】
プリンタ側サーバ５０は、端末側サーバ８０からＵＮＳＵＢコマンドを受信すると、メモリ６４に記憶されているＳＵＢコマンド２０２を消去する。そして、プリンタ側サーバ５０は、ＵＮＳＵＢコマンドをプリンタ１０に送信する。この結果、プリンタ１０は、ＳＵＢコマンド２０２を無効化するので、ＳＵＢコマンド２０２に従って対象データを端末装置１００に送信するための処理を実行しない。
【００９９】
ＳＵＢコマンド２０２が無効化された後であれば、プリンタ１０への新たなＳＵＢコマンドの送信が適切に実行される。即ち、ユーザが、プリンタ１０への新たなＳＵＢコマンドの送信のための指示を端末装置１００に入力すれば、ＳＵＢコマンドが、端末側サーバ８０及びプリンタ側サーバ５０を介して、プリンタ１０に送信される。これにより、プリンタ１０は、新たなＳＵＢコマンドに従って対象データを端末装置１００に送信するための処理を実行する。
【０１００】
図４に示されるように、プリンタ側サーバ５０でトラブルが発生していたが、その後、図５に示されるように、当該トラブルが解消する。プリンタ側サーバ５０は、トラブルが発生していた間に、端末側サーバ８０からＳＵＢコマンド２０２及びプリンタＩＤ「ＰＲ４５」を受信しているが、プリンタＩＤ「ＰＲ４５」に対応するステータス情報を記憶していない。このために、プリンタ側サーバ５０は、ＳＵＢコマンド２０２及びプリンタＩＤ「ＰＲ４５」を過去に受信したことを知ることができず、この結果、トラブルが解消しても、ＳＵＢコマンド２０２をプリンタ４５に送信しない。
【０１０１】
その後、ユーザは、プリンタ４５へのＳＵＢコマンドの送信を実行するための各情報（即ち、プリンタＩＤ「ＰＲ４５」、データＩＤ、時間情報）を端末装置１００に入力する。端末装置１００は、ユーザによって上記の各情報が入力されると、ＳＵＢコマンド６０２を生成する。端末装置１００は、さらに、ＳＵＢコマンド６０２と、プリンタＩＤ「ＰＲ４５」と、を含む要求コマンド６００を生成する。次いで、端末装置１００は、要求コマンド６００を端末側サーバ８０に送信する。
【０１０２】
端末側サーバ８０は、端末装置１００から要求コマンド６００を受信すると、要求コマンド６００からプリンタＩＤ「ＰＲ４５」を抽出して、プリンタＩＤ「ＲＰ４５」を含むＲＥＡＤコマンド６１０を生成する。次いで、端末側サーバ８０は、ＲＥＡＤコマンド６１０をＤＢサーバ７０に送信する。
【０１０３】
ＤＢサーバ７０は、端末側サーバ８０からＲＥＡＤコマンド６１０を受信すると、ＲＥＡＤコマンド６１０に含まれるプリンタＩＤ「ＰＲ４５」に対応する第３の状況情報（即ち、プリンタＩＤ「ＰＲ４５」、コード「５ｘｘＥｒｒｏｒ」）を読み出す。ＤＢサーバ７０は、第３の状況情報を含む結果情報を端末側サーバ８０に送信する。
【０１０４】
端末側サーバ８０は、ＤＢサーバ７０から結果情報を受信すると、プリンタ側サーバ５０のトラブルに起因して、プリンタ４５へのＳＵＢコマンドの送信が完了していないことを知ることができる。この場合、端末側サーバ８０は、プリンタＩＤ「ＰＲ４５」と、コード「２０２Ａｃｃｅｐｔｅｄ」と、を含むＵＰＤＡＴＥコマンド６２０を生成する。次いで、端末側サーバ８０は、ＵＰＤＡＴＥコマンド６２０をＤＢサーバ７０に送信する。
【０１０５】
ＤＢサーバ７０は、端末側サーバ８０からＵＰＤＡＴＥコマンド６２０を受信すると、ＵＰＤＡＴＥコマンド６２０に含まれるプリンタＩＤ「ＰＲ４５」に対応する第３の状況情報を、ＵＰＤＡＴＥコマンド６２０に含まれるコード（即ち「２０２Ａｃｃｅｐｔｅｄ」）に更新する。
【０１０６】
次いで、端末側サーバ８０は、要求コマンド６００に対する応答である応答コマンド６３０を生成する。応答コマンド６３０は、状況情報（即ち、プリンタＩＤ「ＰＲ４５」、コード「２０２Ａｃｃｅｐｔｅｄ」）を含む。次いで、端末側サーバ８０は、応答コマンド６３０を端末装置１００に送信する。
【０１０７】
端末装置１００は、端末側サーバ８０から応答コマンド６３０を受信すると、応答コマンド６３０内の状況情報を確認する。これにより、端末装置１００は、プリンタ４５へのＳＵＢコマンドの送信に関する処理を実行中であることに起因して、プリンタ４５へのＳＵＢコマンドの送信が完了していないことを知ることができる。
【０１０８】
次いで、端末側サーバ８０は、要求コマンド６００に含まれるＳＵＢコマンド６０２及びプリンタＩＤ「ＰＲ４５」をプリンタ側サーバ５０に送信する。
【０１０９】
プリンタ側サーバ５０は、端末側サーバ８０からＳＵＢコマンド６０２及びプリンタＩＤ「ＰＲ４５」を受信すると、プリンタ４５とプリンタ側サーバ５０との間にＸＭＰＰ接続が確立されていると判断して、ＳＵＢコマンド６０２をプリンタ４５に送信する。次いで、プリンタ側サーバ５０は、プリンタＩＤ「ＰＲ４５」と、コード「２００ＯＫ」と、が対応付けられているステータス情報を、メモリ６４に記憶させる。
【０１１０】
次いで、プリンタ側サーバ５０は、プリンタ４５へのＳＵＢコマンド６０２の送信が成功したことを示す成功通知６４０を、端末側サーバ８０に送信する。その後の各処理、即ち、ＵＰＤＡＴＥコマンド６５０の通信、及び、第３の状況情報の更新については、図２のケースと同様である。
【０１１１】
（図６のシーケンス図）
図６に示されるように、プリンタ４０の電源がＯＮされるので、プリンタ４０とプリンタ側サーバ５０との間にＸＭＰＰ接続が確立される。プリンタ側サーバ５０は、端末側サーバ８０からＳＵＢコマンド２０２及びプリンタＩＤ「ＰＲ４０」を受信した際に、プリンタＩＤ「ＰＲ４０」に対応するステータス情報（コード「２０１Ｏｆｆｌｉｎｅ」）を記憶している（図３参照）。このために、プリンタ側サーバ５０は、ＳＵＢコマンド２０２及びプリンタＩＤ「ＰＲ４０」を過去に受信したことを知ることができ、この結果、プリンタ４０とプリンタ側サーバ５０との間にＸＭＰＰ接続が確立される場合に、メモリ６４内のＳＵＢコマンド２０２をプリンタ４０に送信する。
【０１１２】
次いで、プリンタ側サーバ５０は、プリンタＩＤ「ＰＲ４０」と、コード「２００ＯＫ」と、が対応付けられているステータス情報を、メモリ６４に記憶させる。ただし、プリンタ側サーバ５０は、プリンタ４０へのＳＵＢコマンド２０２の送信が成功したことを示す成功通知を、端末側サーバ８０に送信しない。例えば、図２のケースでは、プリンタ側サーバ５０から端末側サーバ８０に成功通知２４０が送信されるが、当該成功通知２４０は、ＳＵＢコマンド２０２及びプリンタＩＤ「ＰＲ１０」に対する応答として送信される。これに対し、図６のケースでは、プリンタ側サーバ５０は、ＳＵＢコマンド２０２及びプリンタＩＤ「ＰＲ４０」をかなり前に受信しているので（図３参照）、それらの応答として成功通知を送信することができない。
【０１１３】
プリンタ側サーバ５０から端末側サーバ８０に成功通知が送信されないので、端末側サーバ８０は、プリンタ４０へのＳＵＢコマンド２０２の送信が完了したことを知ることができず、この結果、ＤＢサーバ７０内のプリンタＩＤ「ＰＲ４０」に対応する第２の状況情報を更新しない。
【０１１４】
端末装置１００は、図４のＧＥＴＳＵＢコマンド３８０を送信して、応答コマンド４２０を受信した段階では、プリンタ４０，４５へのＳＵＢコマンドの送信が完了していないことを知ることができる。このために、端末装置１００は、ＧＥＴＳＵＢコマンド６８０と、複数個のプリンタＩＤ（即ち、「ＰＲ１０」、「ＰＲ４０」、「ＰＲ４５」）と、を端末側サーバ８０に再び送信する。
【０１１５】
端末側サーバ８０は、端末装置１００からＧＥＴＳＵＢコマンド６８０及び複数個のプリンタＩＤを受信すると、当該複数個のプリンタＩＤを含むステータスコマンド６９０を生成する。次いで、端末側サーバ８０は、ステータスコマンド６９０をプリンタ側サーバ５０に送信する。
【０１１６】
プリンタ側サーバ５０は、端末側サーバ８０からステータスコマンド６９０を受信すると、ステータス情報７００をメモリ６４から読み出す。現時点では、メモリ６４は、プリンタＩＤ「ＰＲ１０」及びコード「２００ＯＫ」を含む第１のステータス情報（図２参照）と、プリンタＩＤ「ＰＲ４０」及びコード「２００ＯＫ」を含む第２のステータス情報（図６参照）と、プリンタＩＤ「ＰＲ４５」及びコード「２００ＯＫ」を含む第３のステータス情報（図５参照）と、を記憶している。従って、プリンタ側サーバ５０は、第１、第２、及び、第３のステータス情報を含むステータス情報７００をメモリ６４から読み出す。次いで、プリンタ側サーバ５０は、ステータス情報７００を端末側サーバ８０に送信する。
【０１１７】
端末側サーバ８０は、プリンタ側サーバ５０からステータス情報７００を受信すると、複数個のプリンタＩＤを含むＲＥＡＤコマンド７１０を生成する。次いで、端末側サーバ８０は、ＲＥＡＤコマンド７１０をＤＢサーバ７０に送信する。
【０１１８】
ＤＢサーバ７０は、端末側サーバ８０からＲＥＡＤコマンド７１０を受信すると、ＲＥＡＤコマンド７１０に含まれる複数個のプリンタＩＤに対応する複数個の状況情報を読み出す。ここで読み出される複数個の状況情報は、プリンタＩＤ「ＰＲ１０」及びコード「２００ＯＫ」を含む第１の状況情報と、プリンタＩＤ「ＰＲ４０」及びコード「２０１Ｏｆｆｌｉｎｅ」を含む第２の状況情報と、プリンタＩＤ「ＰＲ４５」及びコード「２００ＯＫ」を含む第３の状況情報と、を含む。ＤＢサーバ７０は、複数個の状況情報を含む結果情報を端末側サーバ８０に送信する。
【０１１９】
端末側サーバ８０は、ＤＢサーバ７０から結果情報を受信すると、結果情報に含まれる複数個の状況情報と、ステータス情報７００と、を比較する。現時点では、ステータス情報７００に含まれる第１及び第３のステータス情報と、結果情報に含まれる第１及び第３の状況情報と、がそれぞれ一致している。しかしながら、ステータス情報７００に含まれる第２のステータス情報（「ＰＲ４０」、「２００ＯＫ」）と、結果情報に含まれる第２の状況情報（「ＰＲ４０」、「２０１Ｏｆｆｌｉｎｅ」）と、が一致していない。従って、端末側サーバ８０は、内容が一致しないと判断する。
【０１２０】
端末側サーバ８０は、内容が一致しないと判断する場合に、ＤＢサーバ７０内の第２の状況情報が、ステータス情報７００に含まれる第２のステータス情報が示す内容に更新されるように、ＵＰＤＡＴＥコマンド７２０を生成する。具体的に言うと、端末側サーバ８０は、プリンタＩＤ「ＰＲ４０」と、コード「２００ＯＫ」と、を含むＵＰＤＡＴＥコマンド７２０を生成する。次いで、端末側サーバ８０は、ＵＰＤＡＴＥコマンド７２０をＤＢサーバ７０に送信する。
【０１２１】
ＤＢサーバ７０は、端末側サーバ８０からＵＰＤＡＴＥコマンド７２０を受信すると、ＵＰＤＡＴＥコマンド７２０に含まれるプリンタＩＤ「ＰＲ４０」に対応する第２の状況情報を、ＵＰＤＡＴＥコマンド７２０に含まれるコード（即ち「２００ＯＫ」）に更新する。これにより、プリンタ側サーバ５０に記憶されているステータス情報７００と、ＤＢサーバ７０に記憶されている状況情報と、を一致させることができる。
【０１２２】
次いで、端末側サーバ８０は、ＧＥＴＳＵＢコマンド６８０に対する応答である応答コマンド７３０を生成する。応答コマンド７３０は、ＤＢサーバ７０内の複数個の状況情報に一致する複数個の状況情報（即ち、ステータス情報７００に一致する複数個の状況情報）を含む。次いで、端末側サーバ８０は、応答コマンド７３０を端末装置１００に送信する。
【０１２３】
端末装置１００は、端末側サーバ８０から応答コマンド７３０を受信すると、プリンタ１０，４０，４５の全てについて、ＳＵＢコマンドの送信が完了したことを知ることができる。このような状況では、端末装置１００は、ＧＥＴＳＵＢコマンドを端末側サーバ８０に再び送信しない。
【０１２４】
（本実施例の効果）
上記の構成によると、端末側サーバ８０は、端末装置１００からＳＵＢコマンド２０２を含む要求コマンド２００を受信する場合に、応答コマンド２３０を端末装置１００に送信し（図２参照）、さらに、端末装置１００からＧＥＴＳＵＢコマンド２８０，３８０，６８０を受信する場合に、状況情報を含む応答コマンド３２０，４２０，７３０を端末装置１００に送信する（図３、図４、図６参照）。
【０１２５】
例えば、端末側サーバ８０が、要求コマンド２００を受信した後に、プリンタ１０，４０，４５の全てについてＳＵＢコマンド２０２の送信が完了した場合に、要求コマンド２００に対する応答コマンドを端末装置１００に送信する構成（以下では「第２の比較例の構成」と呼ぶ）を採用することが考えられる。しかしながら、第２の比較例の構成を採用すると、端末装置１００において、要求コマンド２００の送信から応答コマンドの受信までの時間が長くなる。この場合、端末装置１００は、応答コマンドを受信する前にタイムアウトと判断して、要求コマンド２００の送信の事実を無効化し得る。このような無効化処理が実行されると、端末装置１００は、プリンタ１０等から対象データを受信しても、適切な処理（例えば表示処理等）を実行することができない。
【０１２６】
これに対し、本実施例では、端末側サーバ８０は、要求コマンド２００に対する応答コマンド２３０を端末装置１００に迅速に送信することができるので、端末装置１００が要求コマンド２００の送信の事実を無効化するという事象が発生するのを抑制することができる。
【０１２７】
そして、端末側サーバ８０は、応答コマンド２３０を端末装置１００に送信した後に、ＧＥＴＳＵＢコマンド２８０等を受信する場合に、状況情報を含む応答コマンド３２０等を端末装置１００に送信する。これにより、端末装置１００は、プリンタ１０等へのＳＵＢコマンドの送信が完了したのか否かを知ることができる。例えば、端末装置１００は、特定のプリンタへのＳＵＢコマンドの送信が実行されない期間が所定期間を超える場合には、その旨を示すメッセージを表示させることができる。これにより、端末装置１００のユーザ（即ち販売店の従業員）は、上記の特定のプリンタから対象データを受信することができないことを知ることができ、例えば、印刷用紙、消耗品等の補充サービスの提供の対象から、上記の特定のプリンタを除外することができる。
【０１２８】
上述したように、本実施例では、端末側サーバ８０は、要求コマンド２００に対する応答コマンド２３０と、ＧＥＴＳＵＢコマンド２８０等に対する応答コマンド３２０等と、のそれぞれを、端末装置１００に適切に送信することができるので、端末装置１００を適切に動作させることができる。
【０１２９】
（対応関係）
プリンタ側サーバ５０及び端末側サーバ８０の組合せが、「中継サーバ」の一例である。端末側サーバ８０、プリンタ側サーバ５０が、それぞれ、「第１のサーバ」、「第２のサーバ」の一例である。ＤＢサーバ７０が、「データベース」の一例である。複数個のプリンタ１０，４０，４５、複数個のプリンタＩＤ（即ち、「ＰＲ１０」、「ＰＲ４０」、「ＰＲ４５」）が、それぞれ、「複数個の通信装置」、「複数個の識別情報」の一例である。ＳＵＢコマンド２０２、ＧＥＴＳＵＢコマンド２８０が、それぞれ、「条件情報」、「問合せコマンド」の一例である。応答コマンド２３０、応答コマンド３２０が、それぞれ、「第１の応答コマンド」、「第２の応答コマンド」の一例である。成功通知２４０が、「通知」の一例である。ＸＭＰＰ接続が、「特定の接続」の一例である。要求信号１５０、応答信号１５２、要求信号１５４が、それぞれ、「第１の要求信号」、「応答信号」、「第２の要求信号」の一例である。
【０１３０】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には以上に例示した具体例を様々に変形、変更したものが含まれる。上記の実施例の変形例を以下に列挙する。
【０１３１】
（変形例１）「条件情報」は、ＨＴＴＰのＳｕｂｓｃｒｉｂｅコマンドでなくてもよく、プリンタ１０等から端末装置１００へのデータの送信のための条件を示す他の情報（例えば、ＨＴＴＰ以外のプロトコルのコマンド）であってもよい。例えば、上記の他の情報は、プリンタ１０等の消耗品の残量が１０％未満になる場合に、その旨を示すデータを端末装置１００に送信するための指示を示すコマンドであってもよい。また、「問合せコマンド」は、ＨＴＴＰのＧＥＴＳｕｂｓｃｒｉｐｔｉｏｎコマンドでなくてもよく、プリンタ１０等への条件情報の送信が完了したのか否かを端末側サーバ８０に問い合わせるための他のコマンド（例えば、ＨＴＴＰ以外のプロトコルのコマンド）であってもよい。例えば、上記の他のコマンドは、ＳＮＭＰ（Simple Network Management Protocolの略）のＧＥＴコマンドであってもよい。
【０１３２】
（変形例２）上記の実施例では、端末装置１００から端末側サーバ８０に送信される要求コマンド２００は、ＳＵＢコマンド２０２と、プリンタＩＤと、を含む（図２参照）。これに代えて、例えば、端末側サーバ８０のメモリ９４又はＤＢサーバ７０にＳＵＢコマンド２０２が予め記憶されている場合には、要求コマンド２００は、ＳＵＢコマンド２０２を含まなくてもよい。この場合、端末側サーバ８０は、要求コマンド２００を受信する場合に、メモリ９４又はＤＢサーバ７０からＳＵＢコマンド２０２を取得して、ＳＵＢコマンド２０２をプリンタ側サーバ５０に送信してもよい。一般的に言うと、要求コマンドは、条件情報を含んでいてもよいし、条件情報を含んでいなくてもよい。
【０１３３】
（変形例３）別体に構成されているプリンタ側サーバ５０及び端末側サーバ８０が設けられていなくてもよい。即ち、プリンタ側サーバ５０の処理と、端末側サーバ８０の処理と、の両方を実行する１個の中継サーバのみが設けられていてもよい。
【０１３４】
（変形例４）上記の実施例では、端末側サーバ８０は、端末装置１００からＧＥＴＳＵＢコマンド２８０等を受信する場合に、プリンタ側サーバ５０からステータス情報３００等を取得して、ステータス情報３００等とＤＢサーバ７０内の状況情報とを比較する。これに代えて、プリンタ側サーバ５０がステータス情報を記憶しなくてもよく、端末側サーバ８０がプリンタ側サーバ５０からステータス情報を取得しなくてもよい。この場合、ＤＢサーバ７０内の状況情報が更新されない事象が発生し得るが、各サーバ５０，８０の処理負荷を軽減させることができる。
【０１３５】
（変形例５）ＤＢサーバ７０は、端末側サーバ８０と別体に構成されていなくてもよく、端末側サーバ８０の内部に設けられていてもよい。
【０１３６】
（変形例６）「通信装置」は、プリンタ１０等に限られず、スキャナ、コピー機、多機能機、携帯端末、ＰＣ、サーバ等であってもよい。「端末装置」は、プリンタ１０等の販売店に設置されていなくてもよく、例えば、家庭内のＰＣ等であってもよい。
【０１３７】
（変形例７）上記の実施例では、各サーバ５０，８０のＣＰＵ６２，９２がメモリ６４，９４内のプログラム（即ちソフトウェア）を実行することによって、図２〜図６の各処理が実現される。これに代えて、図２〜図６の各処理のうちの少なくとも１つの処理は、論理回路等のハードウェアによって実現されてもよい。
【０１３８】
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【０１３９】
２：通信システム、１０，４０，４５：プリンタ、５０：プリンタ側サーバ、７０：ＤＢサーバ、８０：端末側サーバ、１００：端末装置、２００：要求コマンド、２０２：ＳＵＢコマンド、２３０：応答コマンド、２８０：ＧＥＴＳＵＢコマンド、３２０：応答コマンド
【図１】
2014178987.tif 000003
【図２】
2014178987.tif 000004
【図３】
2014178987.tif 000005
【図４】
2014178987.tif 000006
【図５】
2014178987.tif 000007
【図６】
2014178987.tif 000008