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