(57)【特許請求の範囲】
【請求項１】
エンコード処理されたエンコードデータを、前記エンコードデータを受信し前記エンコードデータのデコード処理を行うデータ受信装置に送信するデータ送信装置であって、
エンコード処理を行ってエンコードデータを生成するデータ生成部と、
前記データ受信装置でのデコード処理に要するデコード所要時間と同じ長さである、前記エンコード処理に要するエンコード所要時間を記憶する記憶部と、
前記記憶部で記憶されている前記エンコード所要時間を、エンコードデータの送信間隔に設定する送信間隔設定部と、
前記送信間隔設定部により設定された送信間隔で、エンコードデータを前記データ受信装置に送信するデータ送信部とを有するデータ送信装置。
【請求項２】
エンコード処理されたエンコードデータを、前記エンコードデータを受信し前記エンコードデータのデコード処理を行うデータ受信装置に送信するデータ送信装置であって、
前記データ受信装置でのデコード処理に要するデコード所要時間を記憶する記憶部と、
前記記憶部で記憶されている前記デコード所要時間をエンコードデータの送信間隔のデフォルト値にして、前記データ受信装置でのエンコードデータの受信状況に基づき、エンコードデータの送信間隔を更新する送信間隔設定部と、
前記送信間隔設定部により更新された送信間隔で、エンコードデータを前記データ受信装置に送信するデータ送信部とを有するデータ送信装置。
【請求項３】
前記送信間隔設定部は、
前記データ受信装置から、前記データ受信装置で受信済みのエンコードデータを通知するメッセージを受信した場合、及び、エンコードデータの欠落が発生したことを通知するメッセージを受信した場合の少なくともいずれかにおいて、現在の送信間隔よりも長い送信間隔に更新する請求項２に記載のデータ送信装置。
【請求項４】
前記送信間隔設定部は、
前記データ受信装置から、エンコードデータの送信を要求するメッセージを受信した場合に、現在の送信間隔よりも短い送信間隔に更新する請求項２に記載のデータ送信装置。
【請求項５】
前記送信間隔設定部は、
前記データ受信装置から、前記データ受信装置で受信済みのエンコードデータを通知するメッセージを受信した場合、及び、エンコードデータの欠落が発生したことを通知するメッセージを受信した場合の少なくともいずれかにおいて、前記データ送信部が一度の送信タイミングに送信するエンコードデータの個数として、現在、前記データ送信部が一度の送信タイミングに送信しているエンコードデータの個数よりも多い個数を選択し、選択したエンコードデータの個数と前記デコード所要時間とを乗算して得られる時間に相当する送信間隔に更新し、
前記データ送信部は、
前記送信間隔設定部により更新された送信間隔で、前記送信間隔設定部により選択された個数分のエンコードデータを前記データ受信装置に送信する請求項３に記載のデータ送信装置。
【請求項６】
データ送信装置から送信されたデータを受信するデータ受信部と、
前記データ受信部がデータ受信待ち状態になった後にデータ受信期限までに前記データ送信装置からのデータを受信しなかった場合に、前記データ送信装置にデータの送信を要求する第１のメッセージを生成し、前記データ受信部が前記データ受信待ち状態になった後に前記データ受信期限までに前記データ送信装置からのデータを受信した場合であって、前記データ受信部が前記データ受信待ち状態になってから前記データ送信装置からのデータを受信するまでの時間が閾値時間よりも短い場合に、前記データ受信部が前記データ送信装置から受信済みのデータを通知する第２のメッセージを生成するメッセージ生成部と、
前記メッセージ生成部により生成された前記第１のメッセージ及び前記第２のメッセージのいずれかを前記データ送信装置に送信するメッセージ送信部とを有するデータ受信装置。
【請求項７】
前記メッセージ生成部は、
データの欠落があった場合に、データの欠落を通知する第３のメッセージを生成し、
前記メッセージ送信部は、
前記メッセージ生成部により生成された前記第３のメッセージを前記データ送信装置に送信する請求項６に記載のデータ受信装置。
【請求項８】
エンコード処理されたエンコードデータを、前記エンコードデータを受信し前記エンコードデータのデコード処理を行うデータ受信装置に送信するコンピュータが、エンコード処理を行ってエンコードデータを生成するデータ生成ステップと、
前記コンピュータが、前記データ受信装置でのデコード処理に要するデコード所要時間と同じ長さである、前記エンコード処理に要するエンコード所要時間を、エンコードデータの送信間隔に設定する送信間隔設定ステップと、
前記コンピュータが、前記送信間隔設定ステップにより設定された送信間隔で、エンコードデータを前記データ受信装置に送信するデータ送信ステップとを有するデータ送信方法。
【請求項９】
エンコード処理されたエンコードデータを、前記エンコードデータを受信し前記エンコードデータのデコード処理を行うデータ受信装置に送信するコンピュータが、前記データ受信装置でのデコード処理に要するデコード所要時間をエンコードデータの送信間隔のデフォルト値にして、前記データ受信装置でのエンコードデータの受信状況に基づき、エンコードデータの送信間隔を更新する送信間隔設定ステップと、
前記コンピュータが、前記送信間隔設定ステップにより更新された送信間隔で、エンコードデータを前記データ受信装置に送信するデータ送信ステップとを有するデータ送信方法。
【請求項１０】
コンピュータが、データ送信装置から送信されたデータを受信するデータ受信ステップと、
前記データ受信ステップにてデータ受信待ち状態が生じた後にデータ受信期限までに前記データ送信装置からのデータが受信されなかった場合に、前記データ送信装置にデータの送信を要求する第１のメッセージを前記コンピュータが生成し、前記データ受信ステップにて前記データ受信待ち状態が生じた後に前記データ受信期限までに前記データ送信装置からのデータが受信された場合であって、前記データ受信ステップにて前記データ受信待ち状態が生じてから前記データ送信装置からのデータが受信されるまでの時間が閾値時間よりも短い場合に、前記データ送信装置から受信済みのデータを通知する第２のメッセージを前記コンピュータが生成するメッセージ生成ステップと、
前記メッセージ生成ステップにより生成された前記第１のメッセージ及び前記第２のメッセージのいずれかを前記コンピュータが前記データ送信装置に送信するメッセージ送信ステップとを有するデータ受信方法。
【請求項１１】
エンコード処理されたエンコードデータを、前記エンコードデータを受信し前記エンコードデータのデコード処理を行うデータ受信装置に送信するコンピュータに、
エンコード処理を行ってエンコードデータを生成するデータ生成ステップと、
前記データ受信装置でのデコード処理に要するデコード所要時間と同じ長さである、前記エンコード処理に要するエンコード所要時間を、エンコードデータの送信間隔に設定する送信間隔設定ステップと、
前記送信間隔設定ステップにより設定された送信間隔で、エンコードデータを前記データ受信装置に送信するデータ送信ステップとを実行させるデータ送信プログラム。
【請求項１２】
エンコード処理されたエンコードデータを、前記エンコードデータを受信し前記エンコードデータのデコード処理を行うデータ受信装置に送信するコンピュータに、
前記データ受信装置でのデコード処理に要するデコード所要時間をエンコードデータの送信間隔のデフォルト値にして、前記データ受信装置でのエンコードデータの受信状況に基づき、エンコードデータの送信間隔を更新する送信間隔設定ステップと、
前記送信間隔設定ステップにより更新された送信間隔で、エンコードデータを前記データ受信装置に送信するデータ送信ステップとを実行させるデータ送信プログラム。
【請求項１３】
データ送信装置から送信されたデータを受信するデータ受信ステップと、
前記データ受信ステップにてデータ受信待ち状態が生じた後にデータ受信期限までに前記データ送信装置からのデータが受信されなかった場合に、前記データ送信装置にデータの送信を要求する第１のメッセージを生成し、前記データ受信ステップにて前記データ受信待ち状態が生じた後に前記データ受信期限までに前記データ送信装置からのデータが受信された場合であって、前記データ受信ステップにて前記データ受信待ち状態が生じてから前記データ送信装置からのデータが受信されるまでの時間が閾値時間よりも短い場合に、前記データ送信装置から受信済みのデータを通知する第２のメッセージを生成するメッセージ生成ステップと、
前記メッセージ生成ステップにより生成された前記第１のメッセージ及び前記第２のメッセージのいずれかを前記データ送信装置に送信するメッセージ送信ステップとをコンピュータに実行させるデータ受信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ通信に関する。
【背景技術】
【０００２】
従来のパケット通信方式では、パケットに連続番号としてのシーケンス番号を付与することによりパケットの欠落を検出できるようにしている。そして、従来のパケット通信方式では、受信側で連続受信した回数をカウントしておき、パケットの欠落を検出した場合には、カウントを停止する。そして、パケットの欠落が検出された時点でのカウント値に従って送信間隔を決定している。
【０００３】
Ｏｂｊｅｃｔ  Ｍａｎａｇｅｍｅｎｔ  Ｇｒｏｕｐが定めるＤａｔａ  Ｄｉｓｔｕｒｉｂｕｔｉｏｎ  Ｓｅｒｖｉｃｅ（ＤＤＳ）仕様にある機能の一つであるＤＵＲＡＢＩＬＩＴＹ  ＳＥＲＶＩＣＥでは、送信アプリケーションが受信アプリケーションに送信したデータをデータベースなどに蓄積しておく。そして、受信アプリケーションが再起動などした場合に、データベースに蓄積されたデータを受信アプリケーションに対して送信することにより、受信アプリケーションが持つ内部状態（変数など）などを再起動前の状態に復元可能にする。
このＤＵＲＡＢＩＬＩＴＹ  ＳＥＲＶＩＣＥ機能を用いて受信アプリケーションの復元を行う際に、復元を短時間で行うために、データベースから受信アプリケーションに対して連続的にデータ送信を行う場合がある。この場合に、受信アプリケーションにおいてデータの欠落を発生させてしまうことがある。
特許文献１には、一定時間内に受信したデータの数に基づいて送信間隔を決定することにより、データの連続送信を防ぐ技術が開示されている。
なお、上記のＯｂｊｅｃｔ  Ｍａｎａｇｅｍｅｎｔ  Ｇｒｏｕｐは、様々な技術および広範囲の業種について企業統合標準を開発している、コンピュータ業界の非営利の標準化コンソーシアムである。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開１０−５６４７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に開示の技術では、受信側でのデータのデコード時間が考慮されていない。
例えば、ＤＤＳでは、データを特定のデータ形式に変換して（エンコードして）送信し、受信側で特定のデータ形式から元のデータに戻して（デコードして）受信アプリケーションに転送する。
ＤＵＲＡＢＩＬＩＴＹ  ＳＥＲＶＩＣＥでは、エンコード済のデータをデータベースに格納しておくため、送信時にはエンコード処理が行われないが、受信側でエンコードされたデータのデコード処理が必要である。
このため、受信側でのデコード処理に要する時間を考慮せずにデータの送信間隔を設定すると、受信側でデータの欠落が起きる可能性がある。
【０００６】
本発明は、上記の課題を解決することを主な目的としており、受信側でのデータ欠落を回避するために、適切な送信間隔でデータを送信することを主な目的とする。
【課題を解決するための手段】
【０００７】
本発明に係るデータ送信装置は、
エンコード処理されたエンコードデータを、前記エンコードデータを受信し前記エンコードデータのデコード処理を行うデータ受信装置に送信するデータ送信装置であって、
前記データ受信装置でのデコード処理に要するデコード所要時間を記憶する記憶部と、
前記記憶部で記憶されている前記デコード所要時間を、エンコードデータの送信間隔に設定する送信間隔設定部と、
前記送信間隔設定部により設定された送信間隔で、エンコードデータを前記データ受信装置に送信するデータ送信部とを有する。
【発明の効果】
【０００８】
本発明では、データ受信装置でのデコード処理に要するデコード所要時間をエンコードデータの送信間隔に設定し、設定した送信間隔でエンコードデータをデータ受信装置に送信する。このため、本発明によれば、デコード所要時間に従って適切な送信間隔を設定することができ、適切な送信間隔でエンコードデータを送信することができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１に係るデータ送信装置及びデータ受信装置の機能構成例を示す図。
【図２】実施の形態１に係る受信制御部の動作例を示すフローチャート図。
【図３】実施の形態１に係るメッセージ受信部の動作例を示すフローチャート図。
【図４】実施の形態１に係る送信制御部の動作例を示すフローチャート図。
【図５】実施の形態２に係る送信制御部の動作例を示すフローチャート図。
【図６】実施の形態２に係る送信制御部の動作例を示すフローチャート図。
【図７】実施の形態１及び２に係るデータ送信装置及びデータ受信装置のハードウェア構成例を示す図。
【図８】実施の形態１に係るＡＣＫＮＡＣＫメッセージのフォーマット例を示す図。
【図９】実施の形態１に係るＡＣＫＮＡＣＫメッセージのフォーマット例を示す図。
【発明を実施するための形態】
【００１０】
実施の形態１．
本実施の形態では、デコード処理に要する時間も考慮して送信間隔を適切に調整することにより、データの欠落なくデータの送受信を実現する構成を説明する。
本実施の形態では、例えば、再起動された受信アプリケーションに対して、データベースに蓄積されたデータを送信することにより、受信アプリケーションが持つ状態（内部変数の値など）を再起動前の状態と同一にする際に、受信側でのデコード処理に要する時間を考慮して送信間隔を調整する。
【００１１】
＊＊＊構成の説明＊＊＊
図１は、本実施の形態に係るデータ送信装置１００とデータ受信装置２００の機能構成例を示す。
図１に示すように、データ送信装置１００は、データ生成部１０１と、データ蓄積部１０２と、メッセージ受信部１０３と、送信制御部１０４と、記憶部１０５とを有する。
送信制御部１０４は、送信間隔設定部１０４１とデータ送信部１０４２を含む。
また、データ受信装置２００は、受信制御部２０１と、データ処理部２０２とを有する。
受信制御部２０１は、データ受信部２０１１、メッセージ生成部２１０２、メッセージ送信部２０１３を含む。
【００１２】
データ送信装置１００には、図７に示すように、プロセッサ９０１、記憶装置９０２及び通信装置９０３というハードウェアが含まれる。
記憶装置９０２には、データ生成部１０１、メッセージ受信部１０３、送信制御部１０４の機能を実現するプログラムが記憶されており、プロセッサ９０１がこれらプログラムを実行して、後述するデータ生成部１０１と、メッセージ受信部１０３と、送信制御部１０４の動作を行う。
図７では、プロセッサ９０１がデータ生成部１０１、メッセージ受信部１０３、送信制御部１０４の機能を実現するプログラムを実行している状態を模式的に表している。
通信装置９０３は、データ受信装置１００との間で通信を行う。
また、データ受信装置２００にも、図７に示すように、プロセッサ９０４、記憶装置９０５及び通信装置９０６というハードウェアが含まれる。
記憶装置９０５には、受信制御部２０１、データ処理部２０２の機能を実現するプログラムが記憶されており、プロセッサ９０４がこれらプログラムを実行して、後述する受信制御部２０１、データ処理部２０２の動作を行う。
図７では、プロセッサ９０４が受信制御部２０１、データ処理部２０２の機能を実現するプログラムを実行している状態を模式的に表している。
通信装置９０６は、データ送信装置１００との間で通信を行う。
【００１３】
＊＊＊動作の説明＊＊＊
データ送信装置１００において、データ生成部１０１は、例えば、ＤＤＳの仕様に従って、データを特定のデータ形式に変換して（エンコード処理を行って）、データ受信装置２００に送信するエンコードデータを生成する。データ生成部１０１は、生成したエンコードデータをデータ蓄積部１０２に格納する。また、データ生成部１０１は、データ受信装置２００でのデコード処理に要する時間であるデコード所要時間を記憶部１０５に登録する。データ生成部１０１は、例えば、データ生成機能を持つオブジェクト（アプリケーション）である。ここでいうオブジェクトとは、オブジェクト指向プログラミングにおけるクラスのインスタンスを示す。
データ生成部１０１は、ＤＤＳの送信アプリケーションに相当する。
【００１４】
データ蓄積部１０２は、データ生成部１０１により生成されたエンコードデータを蓄積する。
データ蓄積部１０２は、ＤＤＳのデータベースに相当する。
【００１５】
メッセージ受信部１０３は、データ受信装置２００から送信される、データ受信装置２００におけるデータ受信状況を示すメッセージを受信する。
ここで、「データ受信状況」とは、具体的には、以下の１）〜３）の状況のいずれかである
１）データ受信装置２０００がデータ受信待ち状態になった後にデータ受信期限までにエンコードデータを受信しなかった状況
２）データ受信装置２０００がデータ受信待ち状態になった後にデータ受信期限までにエンコードデータを受信した場合であって、データ受信装置２０００がデータ受信待ち状態になってからエンコードデータを受信するまでの時間が閾値時間よりも短い状況
３）データ受信装置２０００がエンコードデータを受信しなかった状況、すなわち、エンコードデータの欠落があった状況
そして、メッセージ受信部１０３は、データ受信装置２０００のデータ受信状況が上記の１）の状況では、エンコードデータの送信を要求する第１のメッセージを受信する。
また、メッセージ受信部１０３は、データ受信装置２０００のデータ受信状況が上記の２）の状況では、データ受信装置２００で受信済みのエンコードデータを通知する第２のメッセージを受信する。
また、メッセージ受信部１０３は、データ受信装置２０００のデータ受信状況が上記の３）の状況では、エンコードデータの欠落を通知する第３のメッセージを受信する。
本実施の形態では、メッセージ受信部１０３は、第１〜第３のメッセージとして、ＤＤＳのＡＣＫＮＡＣＫメッセージを受信する。
ＡＣＫＮＡＣＫメッセージの形式はＤＤＳの仕様にて定められている。ＡＣＫＮＡＣＫメッセージでは、シーケンス番号から最大２５６個のデータについて、受信済／未受信を０または１で表現している。
図８は、ＡＣＫＮＡＣＫメッセージのフォーマットを示す。
また、図９は、図８に示す「ＳｅｑｕｅｎｃｅＮｕｍｂｅｒＳｅｔ  ｒｅａｄｅｒＳＮＳｔａｔｅ」の内訳を示す。
【００１６】
送信制御部１０４は、データ蓄積部１０２に蓄積されているエンコードデータをデータ受信装置２００に送信する。送信制御部１０４は、送信間隔設定部１０４１とデータ送信部１０４２で構成される。
【００１７】
送信間隔設定部１０４１は、エンコードデータの送信間隔を設定する。より具体的には、送信間隔設定部１０４１は、最初の送信間隔は、記憶部１０５で記憶されているデコード所要時間とする。また、送信間隔設定部１０４１は、図７に示すプロセッサ９０１のレジスタ内の送信間隔を記憶する領域又は記憶装置９０２内の送信間隔を記憶する領域に、デコード所要時間を格納することにより、エンコードデータの送信間隔を設定する。また、送信間隔設定部１０４１は、デコード所要時間を送信間隔のデフォルト値にして、データ受信装置２００でのエンコードデータの受信状況に基づき、エンコードデータの送信間隔を更新する。本実施の形態では、データ生成部１０１でのエンコード処理に要するエンコード所要時間と、データ受信装置２００でのデコード処理に要するデコード所要時間が同じである。このため、送信間隔設定部１０４１は、デコード所要時間ではなく、エンコード所要時間を記憶部１０５に登録し、送信間隔設定部１０４１が、エンコード所要時間を最初の送信間隔に設定するようにしてもよい。
送信間隔設定部１０４１の動作は、送信間隔設定ステップの例に相当する。
【００１８】
データ送信部１０４２は、送信間隔設定部１０４１で設定又は更新された送信間隔でエンコードデータをデータ受信装置２００に送信する。具体的には、データ送信部１０４２は、図７に示す通信装置９０３を制御して、通信装置９０３からエンコードデータをデータ受信装置２００に送信する。データ送信部１０４２は、エンコードデータを送信する際に、エンコードデータにヘッダを付加する。ヘッダには、宛先アドレス、シーケンス番号、チェックサム等の情報が含まれる。
データ送信部１０４２の動作は、データ送信ステップの例に相当する。
【００１９】
記憶部１０５は、デコード所要時間を記憶する。
【００２０】
データ受信装置２００において、受信制御部２０１は、データ送信装置１００から送信されたエンコードデータを受信する。受信制御部２０１は、データ受信部２０１１、メッセージ生成部２０１２、メッセージ送信部２０１３で構成される。
【００２１】
データ受信部２０１１は、データ送信装置１００から送信されたエンコードデータを受信する。より具体的には、データ受信部２０１１は、図７に示す通信装置９０６を制御し、通信装置９０６を介してエンコードデータを受信する。また、データ受信部２０１１は、エンコードデータの受信間隔を監視する。また、データ受信部２０１１は、受信したエンコードデータのデコード処理を行う。デコード処理は、データ生成部１０１によるエンコード処理の前のデータ状態に戻す処理である。
データ受信部２０１１の動作は、データ受信ステップの例に相当する。
【００２２】
メッセージ生成部２０１２は、ＡＣＫＮＡＣＫメッセージを生成する。つまり、メッセージ生成部２０１２は、前述の第１〜第３のメッセージを生成する。具体的には、メッセージ生成部２０１２は、データ受信部２０１１がデータ受信待ち状態になった後にデータ受信期限までにエンコードデータを受信しなかったデータ受信状況である場合に、第１のメッセージを生成する。また、メッセージ生成部２０１２は、データ受信部２０１１がデータ受信待ち状態になった後にデータ受信期限までにエンコードデータを受信した場合であって、データ受信部２０１１がデータ受信待ち状態になってからエンコードデータを受信するまでの時間が閾値時間よりも短いデータ受信状況である場合に、第２のメッセージを生成する。また、メッセージ生成部２０１２は、データ受信部２０１１がエンコードデータを受信しなかったデータ受信状況、つまり、エンコードデータの欠落があった場合に、第３のメッセージを生成する。
メッセージ生成部２０１２の動作は、メッセージ生成ステップの例に相当する。
【００２３】
メッセージ送信部２０１３は、メッセージ生成部２０１２により生成された第１〜第３のメッセージをデータ送信装置１００に送信する。
メッセージ送信部２０１３の動作は、メッセージ送信ステップの例に相当する。
【００２４】
データ処理部２０２は、データ受信部２０１１によりデコードされたデータを受け取り、データに対する処理を行う。
データ処理部２０２は、ＤＤＳの受信アプリケーションに相当する。
【００２５】
次に、本実施の形態に係る受信制御部２０１の動作例を図２を用いて説明する。
図２に示す動作手順は、データ受信方法及びデータ受信プログラムの例に相当する。
【００２６】
ステップＳ１において、データ受信部２０１１がデータ受信待ち状態になると、データ受信部２０１１は、データ受信期限を設定してデータの受信を待つ。データ受信期限までにデータを受信した場合（Ｓ２でＹＥＳ）は、ステップＳ４に進む。なお、Ｓ２で受信するデータは、データ送信装置１００からのエンコードデータに限らない。データ受信期限までにデータを受信しない場合（Ｓ２でＮＯ、Ｓ３でＹＥＳ）は、ステップＳ８に進む。
【００２７】
ステップＳ４では、データ受信部２０１１は、受信したエンコードデータのシーケンス番号を調べて、データの欠落の有無を判定する。つまり、新たに受信したエンコードデータのシーケンス番号が、前回受信したエンコードデータのシーケンス番号の次の番号でなければ、データ受信部２０１１は、データの欠落が発生したと判定する。
【００２８】
データの欠落があれば（Ｓ４でＹＥＳ）、データ受信部２０１１は、データの欠落が発生したことをメッセージ生成部２０１２に通知する。そして、ステップＳ５にて、メッセージ生成部２０１２は、欠落したデータの再送を促すためのＡＣＫＮＡＣＫメッセージを生成し、メッセージ送信部２０１３が当該ＡＣＫＮＡＣＫメッセージを送信する。一方、ステップＳ４にてデータの欠落がなかった場合（Ｓ４でＮＯ）には、ステップＳ６にて、データ受信部２０１１は、待ち時間が十分短いか否かを判定する。つまり、データ受信部２０１１は、ステップＳ１でデータ受信待ち状態になってからステップＳ２のデータ受信までの待ち時間が閾値時間よりも短いか否かを判定する。そして、待ち時間が閾値時間よりも短い場合（Ｓ６でＹＥＳ）は、ステップＳ７に進む。
【００２９】
ステップ７では、データ受信部２０１１が待ち時間が十分短いことをメッセージ生成部２０１２に通知し、メッセージ生成部２０１２が、データ受信部２０１１が受信済のエンコードデータの一覧を示すＡＣＫＮＡＣＫメッセージを生成し、メッセージ送信部２０１３が、当該ＡＣＫＮＡＣＫメッセージを送信する。一方、ステップ６で待ち時間が閾値時間以上であれば（Ｓ６でＮＯ）、ＡＣＫＮＡＣＫメッセージは送信されない。なお、受信済のエンコードデータの一覧を示すＡＣＫＮＡＣＫメッセージをデータ送信装置１００に送信することで、データ送信装置１００ではデータ受信装置２００で受信済みのエンコードデータを確認することができる。
【００３０】
また、データ受信期限までにエンコードデータが受信されなかった場合（Ｓ３でＹＥＳ）は、ステップＳ８で送信を促すＡＣＫＮＡＣＫメッセージが送信される。つまり、データ受信部２０１１が、タイムアウトが発生したことをメッセージ生成部２０１２に通知し、メッセージ生成部２０１２が、次に受信すべきエンコードデータを送信するよう促すためのＡＣＫＮＡＣＫメッセージを生成し、メッセージ送信部２０１３が当該ＡＣＫＮＡＣＫメッセージを送信する。このＡＣＫＮＡＣＫメッセージには、次に受信すべきエンコードデータのシーケンス番号が含まれる。そして、データ受信部２０１１は、ステップＳ９にてエンコードデータが届くのを待ち、エンコードデータが届いたらステップＳ１０に移行する。
【００３１】
ステップＳ１０では、データ受信部２０１１は、エンコードデータのデコード処理を行う。次に、ステップＳ１１において、データ受信部２０１１は、デコード処理後のデータをデータ処理部２０２に転送し、ステップＳ１に戻る。
【００３２】
次に、本実施の形態に係るメッセージ受信部１０３の動作例を図３を用いて説明する。
【００３３】
ステップＳ１２で、メッセージ受信部１０３は、ＡＣＫＮＡＣＫメッセージを待ち、ＡＣＫＮＡＣＫメッセージを受信すると、ステップＳ１３でＡＣＫＮＡＣＫメッセージの種別を調べる。
【００３４】
受信したＡＣＫＮＡＣＫメッセージが、欠落データの再送を促すＡＣＫＮＡＣＫメッセージである場合は、メッセージ受信部１０３は、ステップＳ１４にて、エンコードデータの送信の停止と、欠落データの再送を送信制御部１０４に指示する。
【００３５】
また、受信したＡＣＫＮＡＣＫメッセージが、データ受信装置２００で受信済のエンコードデータの一覧を示すＡＣＫＮＡＣＫメッセージである場合は、メッセージ受信部１０３は、ステップＳ１５にて、送信間隔の延長を送信制御部１０４に指示する。
【００３６】
また、受信したＡＣＫＮＡＣＫメッセージが、次のエンコードデータの送信を促すＡＣＫＮＡＣＫメッセージである場合は、メッセージ受信部１０３は、ステップＳ１６にて、次のエンコードデータの送信を送信制御部１０４に指示する。ステップＳ１４、Ｓ１５、Ｓ１６の動作が終了したら、メッセージ受信部１０３は、Ｓ１２に戻り、次のＡＣＫＮＡＣＫメッセージを待つ。
【００３７】
次に、本実施の形態に係る送信制御部１０４の動作例を図４を用いて説明する。
図４に示す動作手順は、データ送信方法及びデータ送信プログラムの例に相当する。
【００３８】
ステップＳ１１１で、データ送信部１０４２が、ステップＳ１２１でインクリメントしたシーケンス番号のエンコードデータを送信する。次に、ステップＳ１１２で、送信間隔設定部１０４１は、メッセージ受信部１０３からの指示を受け取っているかどうか調べる。メッセージ受信部１０３から指示を受け取っている場合（Ｓ１１２でＹＥＳ）は、送信間隔設定部１０４１は、ステップＳ１１３に進んで、指示の種別を調べる。
【００３９】
メッセージ受信部１０３からの指示が欠落データの再送である場合には、送信間隔設定部１０４１は、ステップＳ１１７に進み、データ送信部１０４２に欠落データの再送を指示し、データ送信部１０４２が欠落データを再送する。更に、ステップＳ１１８において、送信間隔設定部１０４１は、送信間隔を延長する。つまり、送信間隔設定部１０４１は、次のエンコードデータの送信間隔を、現在の送信間隔よりも長い送信間隔に更新する。送信間隔の延長方法は、例えば、現在の送信間隔の１０％増しの間隔にすることが考えられる。
そして、ステップＳ１１９に移行する。
メッセージ受信部１０３から欠落データの再送が指示された場合、すなわち、データ受信装置２００から欠落データの再送が指示された場合は、エンコードデータの送信間隔が短いためにデータ受信装置２００でのデコード処理が間に合わずに、データ欠落が発生した可能性がある。このため、データ受信装置２００から欠落データの再送が指示された場合は、送信間隔設定部１０４１は、エンコードデータの送信間隔を延長する。
【００４０】
メッセージ受信部１０３からの指示が送信間隔の延長である場合は、送信間隔設定部１０４１は、ステップＳ１１８に進み、前述のように、送信間隔を延長する。
その後、ステップＳ１１９に移行する。
【００４１】
メッセージ受信部１０３からの指示が次のエンコードデータの送信である場合は、送信間隔設定部１０４１は、ステップＳ１１４に進み、メッセージ受信部１０３から指示されたエンコードデータを送信済みであるかどうかを確認する。具体的には、送信間隔設定部１０４１は、データ受信装置２００から送信されたＡＣＫＮＡＣＫメッセージに示される、データ受信装置２００で受信済のエンコードデータの一覧を参照する。そして、当該一覧に、メッセージ受信部１０３から指示されたエンコードデータが含まれていれば、メッセージ受信部１０３から指示されたエンコードデータを送信済みであると判断する。一方、当該一覧に、メッセージ受信部１０３から指示されたエンコードデータが含まれていなければ、メッセージ受信部１０３から指示されたエンコードデータは未送信であると判断する。メッセージ受信部１０３から指示されたエンコードデータが未送信であれば（Ｓ１１４でＮＯ）、データ送信部１０４２が、ステップＳ１１５で当該エンコードデータを送信する。そして、ステップＳ１１６において、送信間隔設定部１０４１が、送信間隔を短縮する。つまり、送信間隔設定部１０４１は、次のエンコードデータの送信間隔を、現在の送信間隔よりも短い送信間隔に更新する。送信間隔の短縮方法は、例えば、現在の送信間隔よりも１０％短い間隔にすることが考えられる。
そして、ステップＳ１１９に移行する。
【００４２】
ステップＳ１１２において、メッセージ受信部１０３からの指示がない場合は、処理はＳ１１９に移行する。
【００４３】
ステップＳ１１９では、データ送信部１０４２は、送信時刻まで待機する。そして、送信時刻になったら、ステップＳ１２０において、データ送信部１０４２は、次に送信するエンコードデータをデータ蓄積部１０２から取得する。次に、ステップＳ１２１において、データ送信部１０４２は、当該エンコードデータに付加するシーケンス番号を、現在のシーケンス番号のインクリメントにより取得する。そして、ステップＳ１１１において、データ送信部１０４２は、Ｓ１２１で得られたシーケンス番号を付加してエンコードデータをデータ受信装置２００に送信する。
【００４４】
前述したように、最初の送信間隔は、記憶部１０５で記憶されているエンコード所要時間である。そして、データ受信装置２００から次のデータの送信を要求された場合（図２のＳ８）は、送信間隔設定部１０４１は、送信間隔を短くする（図４のＳ１１６）。
また、データ受信装置２００において待ち時間が短いと判断された場合（図２のＳ６でＹＥＳ、Ｓ７）及びデータ受信装置２００においてデータ欠落が発生している場合（図２のＳ４でＹＥＳ、Ｓ５）は、送信間隔設定部１０４１は、送信間隔を長くする（図４のＳ１１８）。送信間隔の延長方法、短縮方法は、前述したように、現在の送信間隔よりも１０％長い送信間隔、１０％短い送信間隔とすることが考えられる。また、データ受信装置２００におけるデータ受信状況によっては、送信間隔を延長した後に送信間隔を短縮する場合、送信間隔を短縮した後に送信間隔を延長する場合もある。このような場合には、送信間隔設定部１０４１は、メッセージ受信部１０３からの指示があった際の送信間隔とその１つ前の送信間隔の中間の間隔を設定することが考えられる。
【００４５】
＊＊＊実施の形態の効果の説明＊＊＊＊
このように、本実施の形態では、データ受信装置のデコード所要時間と同視できるエンコード所要時間をエンコードデータの送信間隔に設定し、設定した送信間隔でエンコードデータをデータ受信装置に送信する。このため、本実施の形態によれば、適切な送信間隔を設定することができ、適切な送信間隔でエンコードデータを送信することができる。
【００４６】
また、受信側において、１回の処理が終了したときに次のデータが届いていた場合に、送信間隔を延ばすよう指示することにより、データの欠落を防止することが可能となる。さらに、データ受信の待ち時間が発生した場合にはデータの送信を促すことにより、データ蓄積部に蓄積されているデータの送信完了までの時間を短縮することが可能となる。また、デフォルトの送信間隔をエンコード所要時間とすることにより、少なくともデータを受信してからデコードが終わるまでの時間だけ間隔が空いているため、連続的にデータを転送する場合と比べてデータの欠落を防ぐことが可能である。
【００４７】
なお、以上では、データ受信装置２００におけるデコード所要時間とデータ送信装置１００におけるエンコード所要時間が同じであることを前提として、エンコード所要時間を送信間隔のデフォルト値とする例を説明した。データ受信装置２００におけるデコード所要時間とデータ送信装置１００におけるエンコード所要時間とが異なる場合は、デコード所要時間を記憶部１０５に記憶しておき、送信間隔設定部１０４１は、エンコード所要時間ではなく、デコード所要時間を送信間隔のデフォルト値に設定する。
【００４８】
実施の形態２．
本実施の形態では、エンコードデータのデータサイズが十分に小さい場合には、複数のエンコードデータを１つにまとめることにより、連続的なデータ送信を防ぎ、データの欠落なくデータの送受信を実現する構成を説明する。
【００４９】
実施の形態１では、送信間隔が短い場合に送信間隔を延長するようにしたものであるが、本実施の形態では、エンコードデータを結合し、１回のエンコードデータの受信時のデコード処理の時間を延ばすことによりデータの欠落を防止する。
【００５０】
本実施の形態におけるデータ送信装置１００及びデータ受信装置２００の機能構成例は、図１に示すものと同一である。本実施の形態における受信制御部２０１の動作、メッセージ受信部１０３の動作は実施の形態１で示した図２及び図３と同一であり、説明を省略する。以下では、本実施の形態における送信制御部１０４の動作例を図５を用いて説明する。
【００５１】
図５では、図４と比較して、図４のステップＳ１１８がステップＳ２１に変更され、図４のＳ１２１が不要となっている。次に、ステップＳ２１の動作の詳細を図６を用いて説明する。
【００５２】
ステップＳ２０１において、送信間隔設定部１０４１は、データ結合数の初期値を１として、現在のデータ結合数を取得する。送信間隔設定部１０４１は、例えば、現在のデータ結合数をカウントしているカウンタから、現在のデータ結合数を取得する。次に、ステップＳ２０２において、送信間隔設定部１０４１は、ステップＳ２０１で取得したデータ結合数に１加えた値にデータサイズを乗算して得られる値（候補送信データサイズという）が６５５１５バイトを超えるかどうかを判定する。６５５１５バイトは、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）パケットで扱える最大のバイト数である。
【００５３】
ステップＳ２０２で候補送信データサイズが６５５１５バイトを超える場合（Ｓ２０２でＹＥＳ）は、送信間隔設定部１０４１は、ステップＳ２０５に進み、ステップＳ２０１で取得したデータ結合数分のエンコードデータを結合する。
【００５４】
一方、ステップＳ２０２で候補送信データサイズが６５５１５バイトを超えない場合（Ｓ２０２でＮＯ）は、送信間隔設定部１０４１は、ステップＳ２０３に進み、候補送信データサイズが閾値以下であるか否かを判定する。ここでいう閾値とは、エンコードに要する時間がデータの送信時間を上回る場合のデータサイズであることが望ましく、例えば４キロバイトなどが考えられる。
【００５５】
ステップＳ２０３で候補送信データサイズが閾値以下である場合（Ｓ２０３でＹＥＳ）は、送信間隔設定部１０４１は、ステップＳ２０４に進み、Ｓ２０６で求めたシーケンス番号＋１のエンコードデータから前回結合分＋１（Ｓ２０１で取得したデータ結合数＋１）のエンコードデータを結合する。一方、ステップＳ２０３で候補送信データサイズが閾値よりも大きい場合（Ｓ２０３でＮＯ）は、送信間隔設定部１０４１は、ステップＳ２０５に進み、ステップＳ２０１で取得したデータ結合数分のエンコードデータを結合する。
【００５６】
ステップＳ２０６では、データ送信部１０４２が、ステップＳ２０４又はステップＳ２０５で結合されたエンコードデータの個数分だけシーケンス番号をインクリメントする。次に、ステップＳ２０７において、送信間隔設定部１０４１が、ステップＳ２０４又はステップＳ２０５で結合されたエンコードデータの個数分だけ送信間隔を変更する。つまり、送信間隔設定部１０４１は、ステップＳ２０４又はステップＳ２０５で結合されたエンコードデータの個数とエンコード処理時間とを乗算して得られる時間に相当する送信間隔に更新する。
【００５７】
図５のＳ１１９において、データ送信部１０４２は、図６のＳ２０７で更新された送信間隔の間待機する。また、図５のＳ１１１において、データ送信部１０４２は、図６のＳ２０４又はＳ２０５で結合されたエンコードデータを送信する。
【００５８】
このように、本実施の形態では、送信間隔設定部１０４１は、データ受信装置２００から、データ受信装置２００で受信済みのエンコードデータを通知するメッセージを受信した場合、及び、エンコードデータの欠落が発生したことを通知するメッセージを受信した場合の少なくともいずれかにおいて、エンコードデータの個数を増やす。つまり、送信間隔設定部１０４１は、データ送信部１０４２が一度の送信タイミングに送信するエンコードデータの個数として、現在、データ送信部１０４２が一度の送信タイミングに送信しているエンコードデータの個数よりも多い個数を選択する（図６のＳ２０４）。そして、送信間隔設定部１０４１は、選択したエンコードデータの個数とエンコード処理時間とを乗算して得られる時間に相当する送信間隔に更新する（図６のＳ２０７）。また、本実施の形態では、データ送信部１０４２は、送信間隔設定部１０４１により更新された送信間隔で（図５のＳ１１９）、送信間隔設定部１０４１により選択された個数分のエンコードデータをデータ受信装置２００に送信する（図５のＳ１１１）。
【００５９】
このように、本実施の形態では、エンコードデータを結合して送信するエンコードデータのサイズを大きくすることによって送信間隔を広げることができるため、特に送信するエンコードデータのサイズが小さい場合において、データ欠落の可能性を低減することが可能となる。
【００６０】
＊＊＊付記＊＊＊
以上の実施の形態１及び２では、データ送信装置１００でデータをエンコードし、データ受信装置２００でエンコードデータをデコードする例を説明している。
なお、実施の形態１及び２に記載の方式は、データ送信装置１００でデータに圧縮処理を行い、データ受信装置２００で圧縮処理後のデータを拡張する場合にも、適用可能である。
また、実施の形態１及び２に記載の方式は、データ送信装置１００でデータに暗号等のセキュリティ処理を行い、データ受信装置２００でセキュリティ処理を解除する場合にも、適用可能である。
【００６１】
＊＊＊ハードウェア構成の説明＊＊＊
最後に、データ送信装置１００及びデータ受信装置２００のハードウェア構成の補足説明を行う。
データ送信装置１００及びデータ受信装置２００はコンピュータである。
図７に示すプロセッサ９０１、９０４は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。プロセッサ９０１、９０４は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）等である。
図７に示す記憶装置９０２、９０５は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等である。
図７に示す通信装置９０３、９０６は、データを受信するレシーバー及びデータを送信するトランスミッターを含む。通信装置９０３、９０６は、例えば、通信チップ又はＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。通信装置９０３は、図１に示すメッセージ受信部１０３、データ送信部１０４２の物理層に対応する。通信装置９０６は、データ受信部２０１１、メッセージ送信部２０１３の物理層に対応する。
【００６２】
また、記憶装置９０２、９０５には、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）も記憶されている。そして、ＯＳの少なくとも一部がプロセッサ９０１、９０４に実行される。プロセッサ９０１はＯＳの少なくとも一部を実行しながら、データ生成部１０１、メッセージ受信部１０３、送信制御部１０４の機能を実現するプログラムを実行する。また、プロセッサ９０４はＯＳの少なくとも一部を実行しながら、受信制御部２０１、データ処理部２０２の機能を実現するプログラムを実行する。
図７では、データ送信装置１００及びデータ受信装置２００のそれぞれで、１つのプロセッサが図示されているが、データ送信装置１００及びデータ受信装置２００が複数のプロセッサを備えていてもよい。
また、データ生成部１０１、メッセージ受信部１０３の処理の結果を示す情報やデータや信号値や変数値が、記憶装置９０２、又は、プロセッサ９０１内のレジスタ又はキャッシュメモリに記憶される。同様にして、受信制御部２０１、データ処理部２０２の処理の結果を示す情報やデータや信号値や変数値が、記憶装置９０５、又は、プロセッサ９０４内のレジスタ又はキャッシュメモリに記憶される。
また、データ生成部１０１、メッセージ受信部１０３、受信制御部２０１、データ処理部２０２の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ等の記憶媒体に記憶される。
【００６３】
また、データ生成部１０１、メッセージ受信部１０３、受信制御部２０１、データ処理部２０２を「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。「回路」は、プロセッサ９０１、９０４だけでなく、ロジックＩＣ又はＧＡ（Ｇａｔｅ  Ａｒｒａｙ）又はＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）又はＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）といった他の種類の処理回路をも包含する概念である。
【符号の説明】
【００６４】
１００  データ送信装置、１０１  データ生成部、１０２  データ蓄積部、１０３  メッセージ受信部、１０４  送信制御部、１０４１  送信間隔設定部、１０４２  データ送信部、１０５  記憶部、２００  データ受信装置、２０１  受信制御部、２０１１  データ受信部、２０１２  メッセージ生成部、２０１３  メッセージ送信部、２０２  データ処理部。
【図１】
0006452573.tif 000002
【図２】
0006452573.tif 000003
【図３】
0006452573.tif 000004
【図４】
0006452573.tif 000005
【図５】
0006452573.tif 000006
【図６】
0006452573.tif 000007
【図７】
0006452573.tif 000008
【図８】
0006452573.tif 000009
【図９】
0006452573.tif 000010