(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-08-28
(45)【発行日】2023-09-05
(54)【発明の名称】通信装置、及び、通信装置のためのコンピュータプログラム
(51)【国際特許分類】
H04L 67/145 20220101AFI20230829BHJP
H04L 43/10 20220101ALI20230829BHJP
H04L 67/02 20220101ALI20230829BHJP
【FI】
H04L67/145
H04L43/10
H04L67/02
(21)【出願番号】P 2019217164
(22)【出願日】2019-11-29
【審査請求日】2022-11-18
(73)【特許権者】
【識別番号】000005267
【氏名又は名称】ブラザー工業株式会社
(74)【代理人】
【識別番号】110000110
【氏名又は名称】弁理士法人 快友国際特許事務所
(72)【発明者】
【氏名】井上 卓弥
【審査官】前田 健人
(56)【参考文献】
【文献】国際公開第2013/145516(WO,A1)
【文献】特開2016-181877(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 43/10
H04L 67/02
H04L 67/145
H04L 69/00
(57)【特許請求の範囲】
【請求項1】
通信装置であって、
通信インターフェースと、
前記通信インターフェースを介して、HTTP(Hypertext Transfer Protocolの略)に準じたセッションをインターネット上の対象サーバと確立する確立部と、
前記セッションが確立された後に、前記通信インターフェースを介して、通信確認を繰り返し実行する通信確認部であって、前記通信確認は、前記通信装置が確認信号を前記対象サーバに送信すること、及び、前記通信装置が前記対象サーバから前記確認信号に対する応答信号を受信すること、を含む、前記通信確認部と、
前記対象サーバが前記通信装置から前記確認信号を受信してから前記応答信号を前記通信装置に送信するまでの時間である待機時間を調整する調整部と、を備え、
前記調整部は、
前記通信装置と前記対象サーバとの間の通信においてプロキシサーバが利用される場合に、前記待機時間として第1の時間を利用すべきことを前記対象サーバに指示し、
前記通信装置と前記対象サーバとの間の通信において前記プロキシサーバが利用されない場合に、前記待機時間として前記第1の時間より長い第2の時間を利用すべきことを前記対象サーバに指示する、
通信装置。
【請求項2】
前記通信装置の状態は、前記プロキシサーバが利用される第1の状態と、前記プロキシサーバが利用されない第2の状態と、のうちのいずれかの状態に変更可能であり、
前記セッションが確立された後に、前記通信装置の状態が変更される場合に、前記セッションは切断され、
前記確立部は、前記セッションが切断された後に、前記通信インターフェースを介して、前記HTTPに準じた前記セッションを前記対象サーバと再び確立し、
前記調整部は、
前記通信装置の状態が前記第2の状態から前記第1の状態に変更されて、前記セッションが再び確立される場合に、前記待機時間を前記第1の時間に調整し、
前記通信装置の状態が前記第1の状態から前記第2の状態に変更されて、前記セッションが再び確立される場合に、前記待機時間を前記第2の時間に調整する、請求項1に記載の通信装置。
【請求項3】
前記通信装置は、さらに、
前記通信確認が成功する場合に、前記待機時間を延長する延長部と、
前記通信確認が失敗する場合に、前記待機時間を短縮する短縮部と、
を備える、請求項1又は2に記載の通信装置。
【請求項4】
前記短縮部は、
前記対象サーバから前記確認信号に対する前記応答信号を受信することなく、前記確認信号を前記対象サーバに送信してから所定時間が経過することに起因して、前記通信確認が失敗する場合に、前記待機時間を短縮し、
前記確認信号を前記対象サーバに送信してから前記所定時間が経過する前に、前記応答信号とは異なる信号が前記対象サーバから受信されることに起因して、前記通信確認が失敗する場合に、前記待機時間を短縮しない、請求項3に記載の通信装置。
【請求項5】
前記延長部は、
前記通信装置と前記対象サーバとの間の通信において前記プロキシサーバが利用される場合に、第1の値を上限値として、前記待機時間を延長し、
前記通信装置と前記対象サーバとの間の通信において前記プロキシサーバが利用されない場合に、前記第1の値より長い第2の値を上限値として、前記待機時間を延長する、請求項3又は4に記載の通信装置。
【請求項6】
前記通信装置は、さらに、
前記通信確認が失敗した際の前記待機時間をメモリに記憶する記憶制御部を備え、
前記延長部は、前記メモリに記憶されている前記待機時間を上限値として、前記待機時間を延長する、請求項3から5のいずれか一項に記載の通信装置。
【請求項7】
前記セッションは、XMPP(eXtensible Messaging and Presence Protocolの略) over BOSH(Bidirectional-streams Over Synchronous HTTPの略)に従ったセッションである、請求項1から6のいずれか一項に記載の通信装置。
【請求項8】
通信装置のためのコンピュータプログラムであって、
前記通信装置は、通信インターフェースを備え、
前記コンピュータプログラムは、前記通信装置のコンピュータを、以下の各部、即ち、
前記通信インターフェースを介して、HTTP(Hypertext Transfer Protocolの略)に準じたセッションをインターネット上の対象サーバと確立する確立部と、
前記セッションが確立された後に、前記通信インターフェースを介して、通信確認を繰り返し実行する通信確認部であって、前記通信確認は、前記通信装置が確認信号を前記対象サーバに送信すること、及び、前記通信装置が前記対象サーバから前記確認信号に対する応答信号を受信すること、を含む、前記通信確認部と、
前記対象サーバが前記通信装置から前記確認信号を受信してから前記応答信号を前記通信装置に送信するまでの時間である待機時間を調整する調整部と、として機能させ、
前記調整部は、
前記通信装置と前記対象サーバとの間の通信においてプロキシサーバが利用される場合に、前記待機時間として第1の時間を利用すべきことを前記対象サーバに指示し、
前記通信装置と前記対象サーバとの間の通信において前記プロキシサーバが利用されない場合に、前記待機時間として前記第1の時間より長い第2の時間を利用すべきことを前記対象サーバに指示する、
コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書では、サーバとのセッションを確立する通信装置に関する技術を開示する。
【背景技術】
【0002】
特許文献1には、サーバとのセッションを確立するMFPが開示されている。MFPは、セッションが確立された後に、パケットをサーバに定期的に送信する。セッションが維持されている場合には、MFPは、サーバから当該パケットに対する応答を受信する。MFPは、パケットの送信間隔をルータのファイヤウォール機能におけるセッションタイムアウト時間以内に調整する。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
MFPとサーバとの間にプロキシサーバが存在する場合がある。上記の技術では、プロキシサーバについて何ら考慮されていない。
【0005】
本明細書では、プロキシサーバが存在するのか否かを考慮して、対象サーバとの通信確認を適切に実行するための技術を提供する。
【課題を解決するための手段】
【0006】
本明細書によって開示される通信装置は、通信インターフェースと、前記通信インターフェースを介して、HTTP(Hypertext Transfer Protocolの略)に準じたセッションをインターネット上の対象サーバと確立する確立部と、前記セッションが確立された後に、前記通信インターフェースを介して、通信確認を繰り返し実行する通信確認部であって、前記通信確認は、前記通信装置が確認信号を前記対象サーバに送信すること、及び、前記通信装置が前記対象サーバから前記確認信号に対する応答信号を受信すること、を含む、前記通信確認部と、前記対象サーバが前記通信装置から前記確認信号を受信してから前記応答信号を前記通信装置に送信するまでの時間である待機時間を調整する調整部と、を備え、前記調整部は、前記通信装置と前記対象サーバとの間の通信においてプロキシサーバが利用される場合に、前記待機時間として第1の時間を利用すべきことを前記対象サーバに指示し、前記通信装置と前記対象サーバとの間の通信において前記プロキシサーバが利用されない場合に、前記待機時間として前記第1の時間より長い第2の時間を利用すべきことを前記対象サーバに指示する。
【0007】
上記の構成によれば、サーバにおける確認信号の受信から応答信号の送信までの待機時間は、プロキシサーバが利用される場合に、比較的短い第1の時間に調整される。通信装置とサーバとの間にプロキシサーバが存在する場合には、通信装置とサーバとの間にプロキシサーバが存在しない場合と比較して、確認信号又は応答信号が遅延する可能性が高い。待機時間を短く調整することで、確認信号又は応答信号の遅延に起因して、通信確認が失敗することを抑制することができる。また、待機時間は、プロキシサーバが利用されない場合に、比較的長い第2の時間に調整される。通信装置とサーバとの間にプロキシサーバが存在しない場合には、通信装置とサーバとの間にプロキシサーバが存在する場合と比較して、確認信号又は応答信号が遅延する可能性が低い。待機時間を長く調整することで、所定の期間(例えば1日)内における通信確認の回数を少なくすることができる。以上より、プロキシサーバが存在するのか否かを考慮して、通信確認を適切に実行することができる。
【0008】
上記の通信装置を実現するための制御方法、コンピュータプログラム、及び、当該コンピュータプログラムを格納するコンピュータ読取可能記録媒体も、新規で有用である。
【図面の簡単な説明】
【0009】
【
図3】第1実施例のプリンタの処理のフローチャートを示す。
【
図4】プロキシサーバが利用されないケースA1を示す。
【
図5】プロキシサーバが利用されるケースA2を示す。
【
図6】第2実施例のプリンタの処理のフローチャートを示す。
【
図7】プロキシサーバが利用されるケースBを示す。
【発明を実施するための形態】
【0010】
(第1実施例)
(通信システム2の構成;
図1)
図1に示されるように、通信システム2は、プリンタ10と、サービス提供サーバ100と、プロキシサーバ200と、を備える。なお、以下では、サービス提供サーバのことを「SPサーバ」と呼ぶ。
【0011】
プリンタ10及びプロキシサーバ200は、LAN(Local Area Networkの略)4に接続されている。プロキシサーバ200は、インターネット8に接続されている。また、SPサーバ100は、インターネット8に接続されている。プリンタ10は、プロキシサーバ200及びインターネット8を介して、SPサーバ100と通信可能である。
【0012】
プロキシサーバ200は、LAN4の管理者によって、LAN4上に設置される。プロキシサーバ200は、LAN4に所属している装置(例えばプリンタ10)とインターネット8との間の通信を仲介する。プリンタ10は、プロキシサーバ200を利用しなくても、例えば、単純なルータを利用して、インターネット8上の装置(例えばSPサーバ100)との通信を実行可能である。プロキシサーバ200を利用する利点は、以下の通りである。例えば、インターネット8上の装置は、プロキシサーバ200を介して、LAN4上の装置(例えばプリンタ10)との通信を実行していたとしても、通信先がLAN4上のいずれの装置であるのかを特定することができない。従って、インターネット8上の装置側から見た場合に、匿名性が高まる。また、プロキシサーバ200がインターネット8に関する情報をキャッシュすることによって、LAN4上の装置がインターネット8を介した通信を実行する際に、高速な通信が可能となる。
【0013】
SPサーバ100は、プリンタ10に関係するサービスをプリンタ10のユーザに提供するためのサーバである。SPサーバ100は、ユーザにサービスを提供するために、後述するHTTPセッションを利用して、プリンタ10の稼働状態を示す状態情報を要求する情報要求をプリンタ10に送信し、プリンタ10から状態情報を受信する。そして、SPサーバ100は、受信済みの状態情報を利用して、サービスを提供するための処理を実行する。サービスは、例えば、カートリッジを発送する発送サービスである。この場合、状態情報は、プリンタ10のインクカートリッジの残量を示す残量情報を含む。SPサーバ100は、例えば、プリンタ10から受信した残量情報によって示される残量が所定の閾値以下であると判断する場合に、プリンタ10に装着されるべき新たなカートリッジを発送するための発送処理(例えば作業員への通知)を実行する。他の例として、サービスは、プリンタ10の仕様状況(例えば印刷枚数)に応じた課金等によりプリンタ10をユーザにリースするサービス、プリンタ10のメンテナンスをユーザに提供するサービス、電子メールを利用した印刷であるメール印刷をユーザに提供するサービス等であってもよい。ここで、メール印刷では、SPサーバ100は、外部から画像データを含む電子メールを受信する場合に、後述するHTTPセッションを利用して、電子メールを受信したことを示す通知をプリンタ10に送信する。そして、SPサーバ100は、プリンタ10から当該通知に対する応答を受信する場合に、電子メール内の画像データをプリンタ10に送信する。これにより、プリンタ10は、当該画像データに従った印刷を実行し、メール印刷が実現される。
【0014】
(プリンタ10の構成)
プリンタ10は、印刷機能を備える装置である。プリンタ10は、LANインターフェース12と、制御部30と、を備える。各部12、30は、バス線(符号省略)に接続されている。なお、以下では、インターフェースのことを「I/F」と記載する。LANI/F12は、LAN4を介した通信を実行するためのI/Fであり、LAN4に接続されている。制御部30は、CPU32と、メモリ34と、を備える。CPU32は、メモリ34に記憶されているプログラム40に従って、様々な処理を実行する。メモリ34は、揮発性メモリ、不揮発性メモリ等によって構成される。メモリ34は、さらに、接続情報42と、プロキシ設定情報44と、を記憶する。
【0015】
接続情報42は、インターネット8上のSPサーバ100とプリンタ10との間に、HTTP(Hypertext Transfer Protocolの略)に準じたHTTPセッションを確立するための情報である。HTTPセッションは、いわゆる常時通信が可能なセッションであり、プリンタ10の電源が切断されるまで確立され続けるセッションである。SPサーバ100は、HTTPセッションを利用すれば、プリンタ10から要求を受信しなくても、プリンタ10が所属するLAN4のファイヤウォールを越えて、プリンタ10に要求(例えば、上記の情報要求)を送信することができる。HTTPセッションは、例えば、XMPP(eXtensible Messaging and Presence Protocolの略) over BOSH(Bidirectional-streams Over Synchronous HTTPの略)に従ったセッションである。なお、HTTPセッションは、XMPP over BOSHに従ったセッションに限らず、HTTPに準じた他のプロトコル(例えばWebSocket)に従ったセッションであってもよい。
【0016】
接続情報42は、プリンタ10を認証するための認証情報(例えばアクセストークン)を含む。接続情報42は、SPサーバ100によって生成される。例えば、接続情報42は、プリンタ10においてサービスを開始するための指示が入力される場合に、SPサーバ100からプリンタ10に送信されて、プリンタ10のメモリ34に記憶される。そして、プリンタ10は、メモリ34内の接続情報42を利用した通信をSPサーバ100と実行する。これにより、SPサーバ100によってプリンタ10が認証されて、プリンタ10とSPサーバ100との間にHTTPセッションが確立される。
【0017】
プロキシ設定情報44は、プロキシサーバ200を利用することを示す「ON」と、プロキシサーバ200を利用しないことを示す「OFF」と、のうちのいずれかの値を示す。プロキシ設定情報44は、デフォルトでは「OFF」を示す。プロキシ設定情報44は、ユーザによって入力される。例えば、プロキシ設定情報44として「ON」が入力される場合には、プロキシサーバ200のアドレスと、プロキシサーバ200との通信に利用されるポート番号と、が入力される。
【0018】
(比較例;
図2)
実施例の処理を説明する前に、
図2を参照して、比較例の処理を説明する。比較例のプリンタ900は、プログラム40とは異なるプログラムがメモリ34に記憶されている点を除いて、実施例のプリンタ10と同様である。
図2の初期状態では、プリンタ900のプロキシ設定情報44は「ON」を示す。
【0019】
T10では、プリンタ900は、プリンタ900においてサービスを開始するための指示が入力される場合に、SPサーバ100から接続情報42(例えばアクセストークン)を受信して、当該接続情報42をメモリ34に記憶する。なお、プリンタ900は、SPサーバ100から接続情報42を受信した後にHTTPセッションを再び確立する場合に、SPサーバ100から接続情報42を受信せずに、メモリ34内の接続情報42を利用して、HTTPセッションを確立する。
【0020】
T20A、T20Bでは、プリンタ900は、メモリ34内の接続情報42を利用して、SPサーバ100との間にプロキシサーバ200を介したHTTPセッションを確立する。具体的には、プリンタ900とプロキシサーバ200の間、及び、プロキシサーバ200とSPサーバ100の間に、HTTPセッションが確立される。HTTPセッションでは、通信障害を確認するための通信確認が繰り返し実行される。通信確認は、HTTPセッションを確立する一方の装置(例えばプリンタ900)が、HTTPセッションを確立する他方の装置(例えばSPサーバ100)にKeep Alive信号を送信することと、一方の装置が、他方の装置から当該Keep Alive信号に対する応答信号(以下では、「Keep Alive応答」と記載)を受信することと、を含む。例えば、プリンタ900では、TCP(Transmission Control Protocolの略)に従った通信におけるタイムアウトの時間(例えば「5min」)が設定されている。ここで「タイムアウト」は、例えば、いわゆるTCPタイムアウトである。TCPタイムアウトは、TCPに従ったセッションの確立を維持可能な時間である。一般的に、TCPに従ったセッションが確立された後に、一方の装置が他方の装置から何ら信号を受信することなく、当該セッションの確立からTCPタイムアウトの時間が経過する場合に、当該セッションは切断される。Keep Alive信号の送信からタイムアウトの時間の経過前にKeep Alive応答が受信される場合には、通信障害が発生していないと判断され、通信確認が成功する。一方、Keep Alive信号の送信からタイムアウトの時間が経過するまでに、Keep Alive応答が受信されない場合には、通信障害が発生していると判断され、通信確認が失敗する。通信確認が失敗する場合には、HTTPセッションが切断される。なお、HTTPセッションが切断されると、プリンタ900は、SPサーバ100との間にHTTPセッションを再び確立することを試行する。
【0021】
HTTPセッションでは、Keep Alive信号の送信先である他方の装置がKeep Alive信号を受信してから他方の装置がKeep Alive応答を送信するまでの時間である待機時間を調整するためのNegotiationが実行される。Negotiationは、Keep Alive信号の送信元である一方の装置が待機時間を他方の装置に指示することを含む。
【0022】
本比較例では、プリンタ900は、T20A及びT20Bにおいて、SPサーバ100とのHTTPセッションを確立すると、T22A~T26Bにおいて、待機時間「3min」を指示することを含むNegotiationをSPサーバ100と実行する。具体的には、プリンタ900は、T22Aにおいて、待機時間「3min」を含むNegotiation信号をプロキシサーバ200に送信し、T22Bにおいて、プロキシサーバ200は、当該Negotiation信号をSPサーバ100に送信する。Negotiation信号は、待機時間をSPサーバ100に指示するための信号である。これにより、SPサーバ100は、T24において、Negotiation信号に従って、待機時間「3min」を決定する。そして、SPサーバ100は、T26Aにおいて、決定済みの待機時間「3min」を含むNegotiation応答をプロキシサーバ200に送信し、T26Bにおいて、プロキシサーバ200は、当該Negotiation応答をプリンタ900に送信する。Negotiation応答は、Negotiation信号の応答である。
【0023】
プリンタ900は、SPサーバ100とのNegotiationを実行した後に、Keep Alive信号のSPサーバ100への送信を開始する。ここで、本比較例では、プリンタ900のプロキシ設定情報44は「ON」を示すので、プリンタ900は、T30Aにおいて、LAN4を介して、Keep Alive信号をプロキシサーバ200に送信する。
【0024】
プロキシサーバ200は、T30Aにおいて、プリンタ900からKeep Alive信号を受信すると、T30Bにおいて、Keep Alive信号をSPサーバ100に送信する。
【0025】
SPサーバ100は、T30Bにおいて、インターネット8を介して、プロキシサーバ200からKeep Alive信号を受信する。そして、SPサーバ100は、Keep Alive信号の受信から待機時間「3min」が経過した後に、T32Aにおいて、インターネット8を介して、Keep Alive応答をプロキシサーバ200に送信する。
【0026】
上記したように、プロキシサーバ200は、単純なルータと比較して、様々の機能を有する。このため、プロキシサーバ200の内部処理の時間等の影響を受けて、プロキシサーバ200を利用する場合にSPサーバ100がKeep Alive信号を受信するタイミングは、プロキシサーバ200を利用しない場合にSPサーバ100がKeep Alive信号を受信するタイミングと比較して、遅くなる可能性が高い。本比較例では、プロキシサーバ200がSPサーバ100からKeep Alive応答を受信したT32Aのタイミングは、プリンタ900においてT30AのKeep Alive信号の送信からタイムアウトの時間「5min」が経過内である。しかし、Keep Alive信号が遅延する結果、プロキシサーバ200は、Keep Alive応答をタイムアウトの時間「5min」の経過前にプリンタ900に送信することができない。このため、通信確認が失敗する。この結果、HTTPセッションが切断される。
【0027】
上記のようにプロキシサーバ200が利用される場合には、Keep Alive信号又はKeep Alive応答が遅延する可能性がある。この場合、プリンタ900とSPサーバ100との間に通信障害が発生していないにも関わらず、タイムアウトの時間の経過に起因して、通信確認が失敗する。通信障害が発生していないにも関わらず、HTTPセッションが不必要に切断される可能性がある。本実施例は、HTTPセッションにおける両装置の間にプロキシサーバ200が存在するのか否か(即ちプロキシサーバ200が利用されるのか否か)を考慮して、通信確認を適切に実行することを実現する。
【0028】
(プリンタの処理;
図3)
図3を参照して、本実施例のプリンタ10が実行する処理について説明する。
図3の処理は、プリンタ10が接続情報42をメモリ34に記憶すること(即ち、サービスを開始するための指示が入力されること)、メモリ34に接続情報42に記憶されている状況において、プリンタ10の電源がONされること、及び、プロキシ設定情報44を変更する操作がユーザによって行われたこと、のいずれかをトリガとして開始される。
図3の処理は、プリンタ10の電源がOFFされると終了する。
【0029】
S10では、CPU32は、
図3の処理のトリガが特定のトリガであるのか否かを判断する。ここで、特定のトリガは、プリンタ10が接続情報42をメモリ34に記憶すること、プロキシ設定情報44を変更する操作がユーザによって行われたことの、いずれかである。CPU32は、
図3の処理のトリガが特定のトリガであると判断する場合(S10でYES)に、S20に進む。
【0030】
S20では、CPU32は、現在のプロキシ設定情報44が「ON」であるのか否かを判断する。CPU32は、現在のプロキシ設定情報44が「ON」であると判断する場合(S20でYES)に、S22において、NegotiationにおいてSPサーバ100に指示すべき待機時間として第1の時間(例えば「1min」)を決定する。そして、CPU32は、第1の時間を後述するS30の記憶値としてメモリ34に記憶する。
【0031】
また、CPU32は、現在のプロキシ設定情報44が「OFF」であると判断する場合(S20でNO)に、S24において、待機時間として上記の第1の時間より長い第2の時間(例えば「3min」)を決定する。そして、CPU32は、第2の時間を後述するS30の記憶値としてメモリ34に記憶する。
【0032】
また、CPU32は、
図3の処理のトリガが特定のトリガでない、即ち、
図3の処理のトリガがメモリ34に接続情報42に記憶されている状況において、プリンタ10の電源がONされることであると判断する場合(S10でNO)に、S30において、待機時間として記憶値を決定する。S22、S24、及び、S30のいずれかの処理が終了すると、S40の処理が実行される。
【0033】
S40では、CPU32は、LANI/F12を介して、メモリ34内の接続情報42を利用して、HTTPセッションをSPサーバ100と確立する。そして、CPU32は、S22、S24、及び、S30のいずれかの処理によって決定された待機時間をSPサーバ100に指示することを含むNegotiationをSPサーバ100と実行する。
【0034】
S42では、CPU32は、LANI/F12を介して、Keep Alive信号をSPサーバ100に送信する。
【0035】
S44では、CPU32は、Keep Alive信号の送信が成功したのか否かを判断する。例えば、CPU32は、LAN4とインターネット8との通信を仲介する仲介装置(例えばプロキシサーバ200、単純なルータ等)からKeep Alive信号を受信したことを示す受信通知を受信することができる場合には、Keep Alive信号の送信が成功したと判断する。一方、CPU32は、仲介装置の電源がOFFされている等の原因によって、仲介装置から受信通知を受信することができない場合には、Keep Alive信号の送信が失敗したと判断する。CPU32は、Keep Alive信号の送信が成功したと判断する場合(S44でYES)に、S46に進み、Keep Alive信号の送信が失敗したと判断する場合(S44でNO)に、S40に戻る。Keep Alive信号の送信が失敗する場合には、仲介装置の電源がOFFされている等の原因によって、HTTPセッションが切断されているので、CPU32は、S40において、HTTPセッションの再確立を試行する。
【0036】
S46では、CPU32は、LANI/F12を介して、SPサーバ100からS42のKeep Alive信号に対するKeep Alive応答を受信したのか否かを判断する。例えば、CPU32は、S42のKeep Alive信号の送信からタイムアウトの時間(例えば「5min」)が経過する前にSPサーバ100からKeep Alive応答を受信する場合に、S46でYESと判断して、S42に進み、再び、Keep Alive信号をSPサーバ100に送信する。一方、CPU32は、SPサーバ100からKeep Alive応答を受信しない場合(例えば、SPサーバ100からKeep Alive応答が受信されることなく、S42のKeep Alive信号の送信からタイムアウトの時間が経過する場合、又は、タイムアウトの時間が経過するまでにKeep Alive応答とは異なる信号がSPサーバ100から受信される場合)に、S46でNOと判断して、S40に戻る。S46でNOと判断される場合には、通信確認の失敗によってHTTPセッションが切断されるので、CPU32は、S40において、HTTPセッションの再確立を試行する。
【0037】
(プロキシサーバが利用されないケースA1;
図4)
図4を参照して、プロキシサーバが利用されない状況において、
図3の処理によって実現される具体的なケースA1を説明する。
図4の初期状態では、プロキシ設定情報44は「OFF」を示す。なお、以下では、各デバイスの各CPU(例えばプリンタ10のCPU32等)が実行する処理について、理解の容易さの観点から、各CPUを主体として記載せずに、各デバイス(例えばプリンタ10等)を主体として記載する。また、以下では、プリンタ10とSPサーバ100との間では、LAN4及びインターネット8を介して、通信が実行される。ただし、以下では、特に言及しない限り、「LAN4を介して」及び「インターネット8を介して」という説明を省略する。
【0038】
プリンタ10は、T100において、サービスを開始するための指示が入力される場合に、SPサーバ100から接続情報42を受信して、当該接続情報42をメモリ34に記憶する(
図3のS10でYES)。
【0039】
T102では、プリンタ10は、現在のプロキシ設定情報44が「OFF」であると判断する(S20でNO)。そして、T110では、プリンタ10は、待機時間として第2の時間「3min」を決定する(S24)。
【0040】
T120では、プリンタ10は、メモリ34内の接続情報42を利用して、HTTPセッションをSPサーバ100と確立する(S40)。
【0041】
T122では、プリンタ10は、待機時間「3min」を含むNegotiation信号をSPサーバ100に送信する(S40)。これにより、SPサーバ100は、T124において、Negotiation信号に従って、待機時間「3min」を決定する。そして、SPサーバ100は、T126において、決定済みの待機時間「3min」を含むNegotiation応答をプリンタ900に送信する。
【0042】
続いて、プリンタ10は、T130において、Keep Alive信号をSPサーバ100に送信する(S42)。本ケースでは、プリンタ10とSPサーバ100との間に存在する仲介装置(図示省略、例えば単純なルータ)が正常に動作している。このため、Keep Alive信号の送信が成功し(S44でYES)、SPサーバ100は、T130において、プリンタ10からKeep Alive信号を受信する。
【0043】
SPサーバ100は、T132において、Keep Alive信号の受信から待機時間「3min」が経過した後に、Keep Alive応答をプリンタ10に送信する。本ケースでは、プロキシサーバ200が利用されず、単純なルータ等が利用されるので、Keep Alive信号又はKeep Alive応答が遅延する可能性が低い。このため、プリンタ10は、タイムアウトの時間「5min」が経過する前に、SPサーバ100からKeep Alive応答を受信する。
【0044】
プリンタ10は、T132において、SPサーバ100からKeep Alive応答を受信したと判断し(S46でYES)、T150において、Keep Alive信号をSPサーバ100に再び送信する。T152は、T132と同様である。即ち、プリンタ10は、通信確認を繰り返し実行し、各通信確認は成功する。
【0045】
プロキシサーバ200が利用されない本ケースでは、待機時間は、比較的長い第2の時間「3min」に調整される。プロキシサーバ200が利用されない場合には、プロキシサーバ200が利用される場合と比較して、Keep Alive信号又はKeep Alive応答が遅延する可能性が低い。待機時間を長く調整することで、所定の期間(例えば1日)内における通信確認の回数を少なくすることができる。
【0046】
(プロキシサーバが存在するケースA2;
図5)
図5を参照して、プロキシサーバが利用される状況において、
図3の処理によって実現される具体的なケースA2を説明する。ケースA2は、ケースA1の続きである。
【0047】
T200では、プリンタ10は、プロキシ設定情報44を変更する操作がユーザによって行われることに応じて、プロキシ設定情報44を「OFF」から「ON」に変更する。ここで、プロキシ設定情報44が変更されると、HTTPセッションは切断される。
【0048】
T204では、プリンタ10は、現在のプロキシ設定情報44が「ON」であると判断する(S20でYES)。そして、T210では、プリンタ10は、待機時間として第1の時間「1min」を決定する(S22)。
【0049】
T220では、プリンタ10は、メモリ34内の接続情報42を利用して、プロキシサーバ200を介したHTTPセッションをSPサーバ100と再び確立する(S40)。
【0050】
T222では、プリンタ10は、プロキシサーバ200を介して、待機時間「1min」を含むNegotiation信号をSPサーバ100に送信する(S40)。これにより、SPサーバ100は、T224において、Negotiation信号に従って、待機時間「1min」を決定する。そして、SPサーバ100は、プロキシサーバ200を介して、決定済みの待機時間「1min」を含むNegotiation応答をプリンタ10に送信する。
【0051】
続いて、プリンタ10は、T230Aにおいて、Keep Alive信号をプロキシサーバ200に送信する。これにより、プロキシサーバ200は、T230Bにおいて、Keep Alive信号をSPサーバ100に送信する。
【0052】
SPサーバ100は、T230Bにおいて、プロキシサーバ200からKeep Alive信号を受信する。そして、SPサーバ100は、Keep Alive信号の受信から待機時間「1min」が経過した後に、T232Aにおいて、インターネット8を介して、Keep Alive応答をプロキシサーバ200に送信する。
【0053】
本ケースの待機時間「1min」は、
図3の比較例の待機時間「3min」より短い。このため、T232Aでは、プロキシサーバ200は、タイムアウトの時間「5min」の経過前にSPサーバ100からKeep Alive応答を受信し、T232Bでは、プリンタ10は、タイムアウトの時間「5min」の経過前にプロキシサーバ200からKeep Alive応答を受信する。即ち、通信確認が成功する。
【0054】
プリンタ10は、T232Bにおいて、SPサーバ100からKeep Alive応答を受信したと判断し(S46でYES)、T250Aにおいて、Keep Alive信号をプロキシサーバ200に再び送信する。T250B~T252Bは、T230B~T232Bと同様である。即ち、プリンタ10は、通信確認を繰り返し実行し、各通信確認は成功する。
【0055】
プロキシサーバ200が利用される本ケースでは、待機時間は、比較的短い第1の時間「1min」に調整される。
図3の比較例で説明したように、プロキシサーバ200が利用される場合には、Keep Alive信号又はKeep Alive応答が遅延する可能性が高い。待機時間を短く調整することで、本ケースに示すように、Keep Alive信号又はKeep Alive応答の遅延に起因して、通信確認が失敗することを抑制することができる。
【0056】
(本実施例の効果)
本実施例の構成によれば、プリンタ10は、プロキシサーバ200が利用される場合(
図3のS20でYES)に、待機時間を比較的短い第1の時間「1min」に決定し(S22)、プロキシサーバ200が利用されない場合(S20でNO)に、待機時間を比較的長い第2の時間「3min」に決定する(S24)。即ち、プロキシサーバ200が利用されるのか否かを考慮して、通信確認を適切に実行することができる。
【0057】
また、プリンタ10は、プロキシ設定情報44を変更する操作がユーザによって行われる場合(S10でYES)にも、変更後のプロキシ設定情報44に応じて、待機時間を調整する(S22又はS24)。例えば、プロキシ設定情報44が変更された後でも変更前のプロキシ設定情報44に応じた待機時間が維持される比較例が想定される。この比較例では、プロキシ設定情報44が「ON」に変更される場合でも比較的長い待機時間(例えば「3min」)に維持されて、
図3と同様に、通信確認が失敗する場合がある。さらに、この比較例では、プロキシ設定情報44が「OFF」に変更される場合でも比較的短い待機時間(例えば「1min」)に維持されて、所定の期間(例えば1日)内における通信確認の回数が不必要に多くなる場合がある。これに対して、本実施例では、プロキシ設定情報44が変更される場合でも、通信確認を適切に実行することができる。
【0058】
(対応関係)
プリンタ10、LANI/F12が、それぞれ、「通信装置」、「通信インターフェース」の一例である。プロキシサーバ200が、「プロキシサーバ」の一例である。SPサーバ100が、「対象サーバ」の一例である。XMPP over BOSHに従ったHTTPセッションが、「セッション」の一例である。Keep Alive信号、Keep Alive応答が、それぞれ、「確認信号」、「応答信号」の一例である。S22の第1の時間「1min」、S24の第2の時間「3min」が、それぞれ、「第1の時間」、「第2の時間」の一例である。
【0059】
図3のS42~S46が、通信確認部によって実現される処理の一例である。S40のHTTPセッションの確立、S40のNegotiationの実行が、それぞれ、「確立部」、「調整部」によって実現される処理の一例である。
【0060】
(第2実施例)
(プリンタの処理;
図6)
本実施例は、プリンタ10の処理において待機時間を延長又は短縮する処理が追加される点を除いて、第1実施例と同様である。
【0061】
S50、S60は、
図3のS10、S20と同様である。CPU32は、現在のプロキシ設定情報44が「ON」であると判断する場合(S60でYES)に、S62及びS63の処理を実行する。S62は、
図3のS22と同様である。S63では、CPU32は、待機時間として採用可能な時間の上限値として第1の値(例えば「4min」)を決定する。そして、CPU32は、決定済みの上限値をメモリ34に記憶する。ここで、上限値は、TCPタイムアウトの時間よりも短い時間である。
【0062】
また、CPU32は、現在のプロキシ設定情報44が「OFF」であると判断する場合(S60でNO)に、S64及びS65の処理を実行する。S64は、
図3のS24と同様である。S65では、CPU32は、待機時間として採用可能な時間の上限値として第1の値よりも長い第2の値(例えば「4.5min」)を決定する。そして、CPU32は、決定済みの上限値をメモリ34に記憶する。プロキシ設定情報44が「OFF」である場合、即ち、プロキシサーバ200が利用されない場合に、上限値を比較的長くすることによって、所定の期間(例えば1日)内における通信確認の回数を可能な限り少なくすることができる。なお、変形例として、CPU32は、現在のプロキシ設定情報44が「ON」であると判断する場合(S60でYES)に、さらに、タイムアウトとして第3の値(例えば「5min」)を決定し、現在のプロキシ設定情報44が「OFF」であると判断する場合(S60でNO)に、さらに、タイムアウトとして第3の値より長い第4の値(例えば「6min」)を決定してもよい。
【0063】
また、CPU32は、
図3の処理のトリガが、メモリ34に接続情報42に記憶されている状況において、プリンタ10の電源がONされることであると判断する場合(S50でNO)に、S70及びS72に進む。S70は、
図3のS30と同様である。S72では、CPU32は、後述するS92で決定された新しい上限値をリセットする。具体的には、CPU32は、プロキシ設定情報44が「ON」である場合には、上限値として第1の値(S63参照)を決定し、プロキシ設定情報44が「OFF」である場合には、上限値として第2の値(S65参照)を決定する。S63、S65、及び、S72のいずれかの処理が終了すると、S80の処理が実行される。
【0064】
S80~S86は、
図3のS40~S46と同様である。CPU32は、SPサーバ100からKeep Alive応答を受信しないと判断する場合(S86でNO)に、S90に進む。
【0065】
S90では、CPU32は、SPサーバ100から何ら信号が受信されることなく、S82のKeep Alive信号の送信からタイムアウトの時間が経過することに起因して、SPサーバ100からKeep Alive応答を受信しないと判断したのか否かを判断する。CPU32は、タイムアウト時間の経過に起因すると判断する場合(S90でYES)に、S92に進む。
【0066】
S92では、メモリ34内の上限値に代えて、現在の待機時間を新しい上限値に決定する。そして、CPU32は、新しい上限値をメモリ34に記憶する。通信確認の失敗の原因がタイムアウト時間の経過であると判断される状況において、現在の待機時間を再び待機時間として採用すると、タイムアウト時間の経過により通信確認が再び失敗する可能性が高い。通信確認の失敗の原因がタイムアウト時間の経過であると判断された場合の待機時間を上限値に決定することによって、タイムアウト時間の経過により通信確認が再び失敗することを抑制することができる。
【0067】
続いて、S94では、CPU32は、待機時間を短縮する。具体的には、CPU32は、現在の待機時間に代えて、現在の待機時間から所定の時間(例えば「0.5min」)を減算した値を新しい待機時間に決定する。S94が終了すると、CPU32は、S80に戻り、HTTPセッションの再確立を試行する。
【0068】
また、CPU32は、タイムアウトの時間が経過するまでにKeep Alive応答とは異なる信号がSPサーバ100から受信されることに起因すると判断する場合(S90でNO)に、S92及びS94の処理をスキップして、S80に戻る。ここで、上記の異なる信号は、例えば、メンテナンス等の原因によりSPサーバ100がKeep Alive応答を送信不可能であることを示す信号である。例えば、S90の判断を実行せずに、通信確認が失敗するいずれの場合でも待機時間を短縮する比較例が構成される。この比較例では、タイムアウトの時間の経過が原因で待機時間を短縮する場合には、待機時間を短縮してタイムアウトの時間が経過することを抑制することができるものの、タイムアウトの時間の経過以外の原因で待機時間を短縮する場合には、当該原因を解消することができないにも関わらず、待機時間を不必要に短縮することになる。これに対して、S90の判断を実行することによって、待機時間が不必要に短縮されることを抑制することができる。この結果、所定の期間(例えば1日)内における通信確認の回数が不必要に多くなることを抑制することができる。
【0069】
また、CPU32は、SPサーバ100からKeep Alive応答を受信すると判断する場合(S86でYES)に、S100に進む。S100では、CPU32は、S80でHTTPセッションが確立された後にHTTPセッションが一度も切断されることなくKeep Alive応答を初めて受信したのか否かを判断する。CPU32は、Keep Alive応答を初めて受信したと判断する場合(S100でYES)に、S110に進む。
【0070】
S110では、CPU32は、記憶値を延長する。具体的には、CPU32は、現在の記憶値に代えて、所定の時間(例えば「1min」)を現在の記憶値に加算した値を新しい記憶値としてメモリ34に記憶する。記憶値を延長することによって、
図6の処理がプリンタ10の電源OFFにより終了した後に、プリンタ10の電源が再びONされる場合に、CPU32は、S70の処理を実行して、延長済みの記録値を待機時間として決定する。即ち、CPU32は、次回の電源ON時に適用すべき待機時間を延長する。なお、記憶値は、メモリ34内の上限値を超えて延長されることはない。
【0071】
また、Keep Alive応答を初めて受信していないと判断する場合(S100でNO)又はS110が終了する場合に、CPU32は、S82に戻り、通信確認を再開する。なお、この場合には、SPサーバ100の待機時間は延長されない。即ち、S80のNegotiationで決定された待機時間が維持される。
【0072】
(プロキシサーバが利用されるケースB;
図7、
図8)
図7、
図8を参照して、プロキシサーバが利用される状況において、
図6の処理によって実現される具体的なケースBを説明する。本ケースでも、
図5のT200~T210と同様の処理が実行される。ここで、プリンタ10は、第1の時間である待機時間「1min」を記憶値として記憶する。そして、T312では、プリンタ10は、上限値として第1の値「4min」を決定する(
図6のS63)。そして、
図5のT220~T226と同様のT320~T326の処理が実行され、SPサーバ100とのHTTPセッションが確立され、SPサーバ100の待機時間が「1min」に決定される。
【0073】
T330A~T332Bは、
図5のT230A~T232Bと同様である。T334では、プリンタ10は、T320でHTTPセッションが確立された後にHTTPセッションが一度も切断されることなくKeep Alive応答を初めて受信したと判断する(S100でYES)。T338では、プリンタ10は、記憶値を「1min」から「2min」に延長する(S110)。
【0074】
T340A~T342Bは、
図7のT330A~T332Bと同様である。即ち、SPサーバ100の待機時間は「1min」に維持される。T344では、プリンタ10は、Keep Alive応答を初めて受信していないと判断し(S100でNO)、通信確認を繰り返す。
【0075】
T347では、プリンタ10は、ユーザから電源をOFFするための操作を受け付ける。この結果、確立済みのHTTPセッションが切断される。
【0076】
続いて
図8に示すように、プリンタ10は、T348において、ユーザから電源をONするための操作を受け付ける。そして、T349では、プリンタ10は、待機時間として記憶値「2min」を決定する(
図6のS50でNO、S70)。T350~T356は、待機時間が「2min」である点を除いて、
図7のT320~T326と同様である。即ち、SPサーバ100は、待機時間「2min」を決定する。
【0077】
T360A~T362Aは、待機時間が「2min」である点を除いて、T330A~T332Aと同様である。しかし、本ケースでは、待機時間が「2min」に延長されたことに起因して、SPサーバ100からKeep Alive応答が受信されることなく、T360AのKeep Alive信号の送信からタイムアウトの時間「5min」が経過する。
【0078】
T364では、プリンタ10は、タイムアウト時間の経過に起因して、SPサーバ100からKeep Alive応答を受信しないと判断する(
図6のS86でNO、S90でYES)。そして、T366では、プリンタ10は、メモリ内の上限値「4min」に代えて、現在の待機時間「2min」を新しい上限値に決定する(S92)。
【0079】
T368では、プリンタ10は、待機時間を「2min」から「1.5min」に短縮する。T370~T376は、待機時間が「1.5min」である点を除いて、T350~T356と同様である。T380A~T382Bは、待機時間が「1.5min」である点を除いて、
図7のT330A~T332Bと同様である。即ち、通信確認が成功する。
【0080】
(本実施例の効果)
本実施例によれば、プリンタ10は、通信確認が成功する場合(
図6のS86でYES)に、待機時間を延長する(S110)。これにより、待機時間を延長しない比較例と比較して、所定の期間(例えば1日)内における通信確認の回数を少なくすることができる。また、プリンタ10は、通信確認が失敗する場合(S86でNO)に、待機時間を短縮する(S94)。これにより、待機時間を短縮しない比較例と比較して、タイムアウト時間の経過に起因して通信確認が再び失敗することを抑制することができる。
【0081】
特に、ケースBによれば、プリンタ10は、タイムアウトの時間の経過に起因して通信確認が失敗する可能性の高い実際の待機時間「2min」を考慮して、所定の待機時間「1min」より長い適切な待機時間「1.5min」に決定することができる(
図7のT368)。プロキシサーバ200が利用される場合の待機時間を所定の「1min」に維持する第1実施例と比較して、所定の期間(例えば1日)内における通信確認の回数を少なくすることができる。
【0082】
(対応関係)
プリンタ10のメモリ34が、「メモリ」の一例である。タイムアウトの時間「5min」が、「所定時間」の一例である。
図6のS63の第1の値「4min」、S65の第2の値「5min」が、それぞれ、「第1の値」、「第2の値」の一例である。
【0083】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には以上に例示した具体例を様々に変形、変更したものが含まれる。上記の実施例の変形例を以下に列挙する。
【0084】
(変形例1)「通信装置」は、プリンタ10に限らず、例えば、スキャナ、複合機、PC等の端末装置であってもよい。
【0085】
(変形例2)上記の各実施例では、プリンタ10は、プロキシ設定情報44が変更される場合(
図3のS10でYES)に、待機時間を第1の時間及び第2の時間のいずれかに調整する(S22、S24、S40)。これに代えて、プリンタ10は、プロキシ設定情報44が変更される場合に、待機時間を調整しなくてもよい。本変形例では、「前記通信装置の状態が前記第2の状態から前記第1の状態に変更されて、前記セッションが再び確立される場合に、前記待機時間を前記第1の時間に調整」することと、「前記通信装置の状態が前記第1の状態から前記第2の状態に変更されて、前記セッションが再び確立される場合に、前記待機時間を前記第2の時間に調整」することと、を省略可能である。
【0086】
(変形例3)上記の第2実施例では、プリンタ10は、待機時間の延長(
図6のS110)と、待機時間の短縮(S94)の双方を実行する。これに代えて、プリンタ10は、待機時間の延長と待機時間の短縮のいずれか一方を実行してもよい。
【0087】
(変形例4)上記の第2実施例における
図6のS90の判断は実行されなくてもよい。一般的に言えば、「所定時間が経過することに起因」する場合と「前記応答信号とは異なる信号が前記対象サーバから受信されることに起因」する場合の双方で、待機時間を短縮してもよい。
【0088】
(変形例5)上記の第2実施例では、プロキシ設定情報44が「OFF」である場合における待機時間の上限値が、プロキシ設定情報44が「ON」である場合における待機時間の上限値よりも長い(
図6のS65)。これに代えて、プロキシ設定情報44が「OFF」である場合における上限値が、プロキシ設定情報44が「ON」である場合における上限値と同じであってもよい。本変形例では、「第2の値」を省略可能である。
【0089】
(変形例6)上記の第2実施例における
図6のS92の処理は実行されなくてもよい。本変形例では、「記憶制御部」を省略可能である。
【0090】
(変形例7)
図6のS110の処理(即ち記憶値を延長する処理)が、「延長部」によって実現される処理の一例である。これに代えて、プリンタ10は、S100でYESと判断される場合に、現在の待機時間に代えて、所定の時間(例えば「1min」)を現在の待機時間に加算した値を新しい待機時間に決定してもよい。即ち、プリンタ10は、現在の待機時間を延長してもよい。そして、プリンタ10は、HTTPセッションを切断し、メモリ34内の接続情報42を利用して、HTTPセッションをSPサーバ100と再び確立してもよい。そして、プリンタ10は、延長済み待機時間をSPサーバ100に指示することを含むNegotiationをSPサーバ100と実行して、S82に戻ってもよい。本変形例において、現在の待機時間を延長することが、「延長部」によって実現される処理の一例である。
【0091】
(変形例8)上記の各実施例では、
図3~
図7の各処理がソフトウェア(例えばプログラム40)によって実現されるが、これらの各処理のうちの少なくとも1つが論理回路等のハードウェアによって実現されてもよい。
【0092】
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【0093】
2:通信システム、8:インターネット、10:プリンタ、12:LANI/F、30:制御部、32:CPU、34:メモリ、40:プログラム、42:接続情報、44:プロキシ設定情報、100:SPサーバ、200:プロキシサーバ