(57)【要約】【課題】  送信データの中にデータ構造をそのまま文字列として埋め込んだ場合、送信データサイズが非常に大きくなるという問題があった。【解決手段】  データ型に対応する識別子と要素数を用いて通信データのデータ構造部分を生成する通信データ構造変換部１０５と、生成された通信データのデータ構造部分と、データ構造を定義したデータのデータ値の部分とを合わせて通信データを生成する通信データ部１０３と、生成された通信データ部分をネットワークに送信するデータ送信部１０７とを備えた。【選択図】          図１
2014229174.tif 000002
【特許請求の範囲】
【請求項１】
データのデータ構造に含まれるデータ型に対応する識別子と要素数を用いて通信データのデータ構造部分を生成する通信データ構造変換部と、
前記通信データのデータ構造部分と、前記データ構造を定義した前記データのデータ値の部分とを合わせて前記通信データを生成する通信データ部と、
を備えることを特徴とする通信データ構造圧縮装置。
【請求項２】
前記データ型を各々識別子とともに保持するデータ型識別子定義部と、前記データ型のうち、基本データ型か、新規データ型かを識別するとともに、前記基本データ型については識別子と要素数とを出力し、前記新規データ型については識別子と要素数とを出力するとともにその識別子をデータ型識別子定義部に登録する通信データ構造解釈部と、
を備えることを特徴とする請求項１に記載の通信データ構造圧縮装置。
【請求項３】
前記通信データ部は、前記通信データに送信元識別子を付与すること、
を特徴とする請求項１または２に記載の通信データ構造圧縮装置。
【請求項４】
前記通信データをネットワークに送信するデータ送信部
を備えることを特徴とする請求項１から３のいずれかに記載の通信データ構造圧縮装置。
【請求項５】
ネットワークを経由した前記通信データを受信するデータ受信部と、
受信した前記通信データの前記データ型の識別子と要素数に基づいて前記データ構造を復元するデータ構造復元部と、
受信された前記通信データの前記データ値の部分と、復元された前記データ構造とを用いて前記データを復元する通信データ復元部と、
を備えたを特徴とする通信データ構造復元装置。
【請求項６】
前記通信データに含まれる前記送信元識別子と前記データ構造とを対応付けて管理する送信元識別子管理部と、
前記送信元識別子が前記送信元識別子管理部に登録されている場合は、前記送信元識別子に基づいて前記データ構造を復元するとともに、前記送信元識別子が前記送信元識別子管理部に登録されていない場合は、前記データ構造部分に含まれる前記データ型の識別子と要素数に基づいて前記データ構造を復元し、登録されていない前記送信元識別子と対応する前記データ構造とを前記送信元識別子管理部に登録するデータ構造復元部と、
を備えることを特徴とする請求項５に記載の通信データ構造復元装置。
【請求項７】
請求項１に記載の通信データ構造圧縮装置と、請求項５に記載の通信データ構造復元装置と備えた通信データ圧縮復元システム。
【請求項８】
データのデータ構造に含まれるデータ型に対応する識別子と要素数を用いて通信データのデータ構造部分を生成するステップと、
前記通信データのデータ構造部分と、前記データ構造を定義した前記データのデータ値の部分とを合わせて前記通信データを生成するステップと、
前記通信データをネットワークに送信するステップと、
前記ネットワークを経由し前記通信データを受信するステップと、
受信した前記通信データの前記データ型の識別子と要素数に基づいて前記データ構造を復元するステップと、受信された前記通信データの前記データ値の部分と、復元された前記データ構造とを用いて前記データを復元するステップと、
を有する通信データ圧縮復元方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信データ構造の圧縮と復元に関する。
【背景技術】
【０００２】
一般に、ＩＰマルチキャスト通信では、任意のデータがマルチキャストグループに属する全ての計算機に通信される。ＩＰマルチキャスト通信を用いる計算機システムでは、データ欠落の有無の確認やデバッグなどを行うため、システム上に送信される任意のマルチキャストデータを取得することがある。この場合、送信されるデータのデータ型を予め把握しておかなければ、データを取得してもデータを正しい形式に復元することができない。
【０００３】
例えば、１６進数で６５６６６７６８というデータを受信した場合、あらかじめデータ型を知っておかない限り、ＡＢＣＤという文字データなのか、１０進数で１７０１２０９９６０という整数データなのかわからず、値を正しく復元することができないためにデータを受信してもデバッグは困難である。
【０００４】
このような問題を解決するために、送信データの中に、データ構造をそのまま文字列として埋め込み、受信側で文字列として復元することにより、受信側計算機にてデータ構造を認識させるという方法が実現されている（特許文献１参照）。特許文献１の手法では、データ構造とその値を組にして送信しているため、データ構造とデータが一体不可分で構成されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１０-０６３５５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
送信データの中にデータ構造をそのまま文字列として埋め込んだ場合、送信データサイズが非常に大きくなるという問題があった。
【０００７】
本発明は、上記の問題を解決するためになされたものであり、小さいデータサイズでデータ構造を認識させることを目的とする。
【課題を解決するための手段】
【０００８】
通信データ構造圧縮装置は、データのデータ構造に含まれるデータ型に対応する識別子と要素数を用いて通信データのデータ構造部分を生成する通信データ構造変換部と、生成された通信データのデータ構造部分と、データ構造を定義したデータのデータ値の部分とを合わせて通信データを生成する通信データ部とを備えた。
【発明の効果】
【０００９】
本発明によれば、データ構造を定義したデータに含まれるデータ型に対応する識別子と要素数を用いて通信データのデータ構造部分を生成する通信データ構造変換部と、生成された通信データのデータ構造部分と、データ構造を定義したデータのデータ値の部分とを合わせて通信データを生成する通信データ部とを備えるので、小さいデータサイズでデータ構造を定義したデータを認識させることができる。
【図面の簡単な説明】
【００１０】
【図１】本実施の形態１における通信データ構造圧縮装置と通信データ構造復元装置を示す図。
【図２】実施の形態１における通信データ構造定義部１０４、通信データ構造変換部１０５、通信データ構造解釈部１１１、データ型識別子定義部１１２の動作を示す図。
【図３】実施の形態１におけるデータ構造変換部１０５がデータ構造を示す情報を通信データ部１０３に書き込む動作例を示す図。
【図４】実施の形態１における通信データ変換部１０６の動作例を示す図。
【図５】実施の形態１における通信データ部１０３に書き込みを完了した後の通信データ部３の内容の例を示す図。
【図６】実施の形態１におけるデータ構造復元部１０９の動作を示す図。
【図７】実施の形態１におけるデータ構造復元部１０９の動作を示す図。
【図８】実施の形態１における通信データ復元部１１０の動作を示す図。
【図９】実施の形態１における通信データ構造解釈部１１１の動作のフローチャート。
【図１０】実施の形態１における通信データ構造変換部１０５の動作のフローチャート。
【図１１】実施の形態１における通信データ構造復元部１０９の動作のフローチャート。
【図１２】本実施の形態２における通信データ構造圧縮装置と通信データ構造復元装置を示す図。
【図１３】実施の形態２における送信元識別子管理部１１３の構成を示した図である。
【図１４】本実施の形態２におけるデータ通信部１０３に保持される通信データの例。
【図１５】実施の形態２における通信データ構造圧縮装置と通信データ構造復元装置動作のフローチャート。
【発明を実施するための形態】
【００１１】
実施の形態１．
図１は、本実施の形態１における通信データ構造圧縮装置と通信データ構造復元装置を示す図である。
通信データ構造圧縮装置１００は、通信データ構造復元装置１０１とネットワーク１０２を介して接続されている。
通信データ構造圧縮装置１００は、通信データ部１０３、通信データ構造定義部１０４、通信データ構造変換部１０５、通信データ変換部１０６、データ送信部１０７、通信データ構造解釈部１１１、データ型識別子定義部１１２から構成されている。
通信データ構造復元装置１０１は、データ受信部１０８、通信データ構造復元部１０９、通信データ復元部１１０で構成される。
【００１２】
通信データ構造圧縮装置１００について説明する。
通信データ部１０３は通信データ構造圧縮装置１００、通信データ構造復元装置１０１の間で実際に送受信される通信データのバッファである。
通信データ構造定義部１０４は、送受信するデータ構造を定義したデータが保存されている。通信データ構造定義部１０４の例としては、ＩＤＬ（Ｉｎｔｅｒｆａｃｅ  Ｄｉｆｉｎｉｔｉｏｎ  Ｌａｎｇｕａｇｅ）を用いてデータ構造を定義したデータが考えられる。
通信データ構造変換部１０５は、通信データ構造定義部１０４により定義されたデータを解釈し、データ構造を示す情報を通信データ部１０３に書き込む。通信データ構造変換部１０５は送信データ構造定義部１０４に示された構造体の個数分存在する。
【００１３】
通信データ構造定義部１０４を用いて通信データ構造変換部１０５から出力されたデータ構造を示す情報は、例えば、通信データ構造定義部１０４がＩＤＬを用いてデータ構造を定義したデータであった場合に、ＩＤＬコンパイラによって生成される、バッファにデータを格納するプログラムコードをコンパイルすることにより生成されたオブジェクトである。
通信データ変換部１０６は、アプリケーションが送信するデータを通信データ部１０３に書き込む。
【００１４】
データ送信部１０７は、通信データ構造変換部１０５及び通信データ変換部１０６から出力され、通信データ部１０３に書き込まれたデータを、通信データ構造復元装置１０１に送信する役割を持つ。
通信データ構造解釈部１１１は、通信データ構造定義部１０４の内容を読み取り、通信データ構造変換部１０５を作成する役割を持つ。
データ型識別子定義部１１２は、送信するデータ型を一意に判別する識別子を定義したテーブルを保持している。
【００１５】
通信データ構造復元装置１０１について説明する。
データ受信部１０８は、データ送信部１０７から送信された通信データを受信する。
通信データ構造復元部１０９は、データ受信部１０８が受信した通信データから、データ構造を示す情報を取り出し、データ構造を復元する。
通信データ復元部１１０は、受信データ構造復元部１０９が復元したデータ構造を元に通信データからアプリケーションが送信したデータを取り出す。
【００１６】
次に各部の動作について説明する。
図２は、実施の形態１における通信データ構造定義部１０４、通信データ構造変換部１０５、通信データ構造解釈部１１１、データ型識別子定義部１１２の動作を示す図である。
図２において、送信データ構造定義部１０４に定義したデータが、整数型と文字型をメンバに持つ構造体（ｓｔｒｕｃｔ＿Ｔ１）と、ｓｔｒｕｃｔ＿Ｔ１と整数の配列型（配列数３）をメンバに持つ構造体（ｓｔｒｕｃｔ＿Ｔ２）である場合、通信データ構造解釈部１１１は、データ構造定義部１０４を読み出し、通信データ構造変換部１０５をｓｔｒｕｃｔ＿Ｔ１用とｓｔｒｕｃｔ＿Ｔ２用に２つ作成する。以下、ｓｔｒｕｃｔ＿Ｔ１用の通信データ構造変換部をｓｔｒｕｃｔ＿Ｔ１用通信データ構造変換部１０５−１、ｓｔｒｕｃｔ＿Ｔ２用の通信データ構造変換部をｓｔｒｕｃｔ＿Ｔ２用通信データ構造変換部１０５−２とする。
そして、通信データ構造解釈部１１１は、ｓｔｒｕｃｔ＿Ｔ１用通信データ構造変換部１０５−１に、構造体ｓｔｒｕｃｔ＿Ｔ１を構成するｌｏｎｇ型とｃｈａｒ型を示す識別子およびそれらの要素数を持たせる。ここで、構造体ｓｔｒｕｃｔ＿Ｔ１が新規に定義されたデータ型となるので、通信データ構造解釈部１１１は、それを示す識別子を新規に定義し、データ型識別子定義部１１２に格納する。
【００１７】
同様に、通信データ構造解釈部１１１は、ｓｔｒｕｃｔ＿Ｔ２用データ構造変換部１０５−２に、構造体ｓｔｒｕｃｔ＿Ｔ２を構成するｓｔｒｕｃｔ＿Ｔ１型とｌｏｎｇ型を示す識別子およびそれらの要素数を持たせる。そして、構造体ｓｔｒｕｃｔ＿Ｔ２が新規に定義されたデータ型となるので、それを示す識別子を新規に定義し、データ型識別子定義部１１２に格納する。
【００１８】
なお、本発明の書式による通信データ構造定義部１０４に定義されるデータは、ｍｏｄｕｌｅ の次にある’{‘とその括弧に対応する’}’ で囲まれた部分が１つの送信データ群となる。そして、ｍｏｄｕｌｅ｛｝の中で定義されたデータ構造群のうち、最後に定義されたデータ構造が実際に送信されるデータの内容となる。そのため図２の例ではｓｔｒｕｃｔ＿Ｔ２の型が送信されるデータの内容となる。
【００１９】
図３は、実施の形態１におけるデータ構造変換部１０５がデータ構造を示す情報を通信データ部１０３に書き込む動作例を示す図である。
通信データ構造圧縮装置の動作を行うアプリケーションから、送信データ部１０３に通信データをバッファし、データ送信する要求があったとする。
ステップＳ１００において、通信データ構造解釈部１１１は、ｓｔｒｕｃｔ＿Ｔ２用通信データ構造変換部１０５−２を呼び出す。
【００２０】
ステップＳ１０１において、ｓｔｒｕｃｔ＿Ｔ２用通信データ構造変換部１０５−２は、データ構造の開始を示す値を１バイト分、通信データ部１０３に書き込む。
次にステップＳ１０２において、通信データ構造定義部１０４が持つデータ構造のうち、最初の要素がｓｔｒｕｃｔ＿Ｔ１であることから、通信データ構造解釈部１１１は、ｓｔｒｕｃｔ＿Ｔ１用通信データ構造変換部１０５−１を呼び出す。
【００２１】
ステップＳ１０３において、ｓｔｒｕｃｔ＿Ｔ１用通信データ構造変換部１０５−１は、書き込まれたデータ構造の開始を示す値を１バイト分の次に、同様にデータ構造の開始を示す値を１バイト、通信データ部１０３に書き込む。
次に、ｓｔｒｕｃｔ＿Ｔ１用通信データ構造変換部１０５−１は、構造体の最初のメンバを示す識別子を１バイト、通信データ部１０３に書き込む。本例では、ｓｔｒｕｃｔ＿Ｔ１の最初のメンバはｌｏｎｇであることから、ｌｏｎｇ型を示す識別子を１バイト、通信データ部３に書き込む。
【００２２】
送信する基本データ型はｃｈａｒ、ｕｎｓｉｇｎｅｄ  ｃｈａｒ、ｓｈｏｒｔ、ｕｎｓｉｇｎｅｄ  ｓｈｏｒｔ、ｌｏｎｇ、ｕｎｓｉｇｎｅｄ  ｌｏｎｇ、ｆｌｏａｔ、ｄｏｕｂｌｅなどであり、識別子の値は１バイトあれば十分表現可能である。
ｌｏｎｇ型の識別子を書き込むと、次に、その要素数を書き込む。ｓｔｒｕｃｔ＿Ｔ１が持つｌｏｎｇ型は１つであるため、要素数１を通信データ部１０３に書き込む。
【００２３】
なお、本通信で使用する通信プロトコルはＵＤＰ／ＩＰを想定しており、ＵＤＰ／ＩＰで送信可能なデータサイズは６５５３５バイトである。また、送信するデータ型の最小サイズは１バイトであることから要素数の最大サイズは６５５３５となる。そのため、要素数は２バイトで表現する。
【００２４】
ｌｏｎｇ型の識別子と要素数を書き込み後、次にｃｈａｒ型のデータ１つであることから、ｃｈａｒ型を示す識別子を１バイト、要素数１を２バイトで書き込む。
ｓｔｒｕｃｔ＿Ｔ１のデータ構造はこれで終わりのため、データ構造の終わりを示す識別子を１バイト書き込み、ｓｔｒｕｃｔ＿Ｔ１用通信データ構造変換部１０５−１の処理を終了する。
【００２５】
ステップＳ１０４において、通信データ構造解釈部１１１は、ｓｔｒｕｃｔ＿Ｔ１用通信データ構造変換部１０５−１の処理が終わるとｓｔｒｕｃｔ＿Ｔ２用通信データ構造変換部１０５−２の処理に戻す。
ｓｔｒｕｃｔ＿Ｔ２用通信データ構造変換部１０５−２は、ｓｔｒｕｃｔ＿Ｔ１の要素数を書き込む。本例では、ｓｔｒｕｃｔ＿Ｔ１のデータの要素数は２つであることから、要素数である「２」を２バイトで書き込み、次に、ｌｏｎｇ型のデータを示す識別子、及びその要素数３を通信データ部に書き込み、データ構造の終わりを示す識別子を１バイト書き込む。
【００２６】
尚、データ構造を示すデータのサイズが４の倍数でない場合には、４の倍数となるよう、データの末尾に０を入れることがある。例えば、本例において、通信データのデータ構造を示すデータのサイズは１５バイトであるため、ｓｔｒｕｃｔ＿Ｔ２の終了を示す識別子の後に０を１つ追加することがある。
また、上記では通信データ構造変換部１０５を通信データの開始バイトから終了バイトまでごとに一つ作成すると説明しているが、通信データ構造変換部１０５のなかの一部として構成させてもよい。
【００２７】
図４は、実施の形態１における通信データ変換部１０６の動作例を示す図である。
通信データ構造変換部１０５の処理が終わると、通信データ構造解釈部１１１は、通信データ変換部１０６を呼び出し、通信データ変換部１０６は、アプリケーションが送信するデータをネットワークで送信するためのデータ表現に変換し、通信データ部１０３に書き込む。
図５は、実施の形態１における通信データ部１０３に書き込みを完了した後の通信データ部３の内容の例を示す図である。
図５は、通信データ構造変換部１０５及び送信データ変換部１０６が通信データ部１０３に書き込みを完了した後の通信データ部１０３に保持される通信データの内容となる。本例では、ｓｔｒｕｃｔ＿Ｔ２の後に０を１つ追加した場合の内容となっている。
【００２８】
通信データ構造変換部１０５および通信データ変換部１０６が書き込んだ通信データ部１０３の通信データを、データ送信部１０７が通信データ構造復元装置１０１に送信する。
次に通信データ構造復元装置１０１の動作について説明する。
データ受信部１０８は、データ送信部１０７が送信した通信データを受信すると、通信データを通信データ構造復元部１０９に渡す。
【００２９】
図６は、実施の形態１におけるデータ構造復元部１０９の動作を示す図である。
図６のステップＳ２０１において、通信データ構造復元部１０９は、受信した通信データ先頭の開始を示す識別子の次の１バイトを読み出す。
読み出した値がデータ構造の開始を示す識別子であった場合は、ステップＳ２０２において、通信データ構造復元部１０９は、新規に通信データ構造復元部１０９−１を作成し、その後、新規作成したデータ構造復元部１０９−１が通信データの構造復元を行う。
【００３０】
図６のステップＳ２０３において、データ構造復元部１０９−１は、通信データの開始から３バイト目以降を解読する。３ビット目のデータはｌｏｎｇ型を示す識別子であり、４ビット目に示されるように要素の個数が１つであることを示す。
ステップＳ２０４において、データ構造復元部１０９−１は、ｌｏｎｇ型のデータを格納するための領域を１つ作成する。さらに、データ構造復元部１０９−１は、通信データ解読をすすめると５ビット目、６ビット目から、ｃｈａｒ型を示す識別子、要素の個数が１つであることから、ｃｈａｒ型のデータを格納するための領域を１つ作成する。
【００３１】
このように、データ構造復元部１０９が、データ構造の開始を示す識別子を検出した場合には、新規にデータ構造復元部１０９を作成し、新たな通信データ構造復元部１０９に通信データを渡してデータを読み進め、データ型を示す識別子にあわせた領域を、通信データにて示される個数分作成する。
尚、上記ではデータ構造復元部１０９を通信データの開始バイトから終了バイトまでごとに一つ作成すと説明しているが、一つのデータ構造復元部１０９のなかの一部として構成させてもよい。
【００３２】
図７は実施の形態１におけるデータ構造復元部１０９の動作を示す図である。図６のステップの続きについて説明する。
ステップＳ２０５において、通信データ構造復元部１０９−１がｃｈａｒ型を示す識別子及び要素数を読み出した後、終了を示す識別子を読み出すことにより、データ構造復元部１０９−１は処理を完了し、通信データ構造復元部９に通信データの処理を移す。
ステップＳ２０６において、通信データ構造復元部１０９は、通信データ構造復元部１０９−１が読み出したデータの続きを読み出す。本例では、通信データ構造復元部１０９は、次に「２」を読み出す。
この「２」は、通信データの２バイト目の開始から７バイト目の終了までとするデータ識別子に対し要素数が２という意味である。そこでステップＳ２０７において、通信データ構造復元部１０９は、これまでの処理で作成した通信データ構造復元部１０９−１のコピーを１つ（データ構造復元部１０９−１’）を複製する。
そして、ステップＳ２０８において、データ構造復元部１０９は、ｌｏｎｇ型のデータの識別子及び要素数３を読み出すことから、ｌｏｎｇ型の領域を３つ作成し、終了を示す識別子を読み出すことにより、通信データ構造復元部１０９の処理を終了する。
【００３３】
図８は、実施の形態１における通信データ復元部１１０の動作を示す図である。図６、図７のステップの続きについて説明する。
通信データ構造復元部１０９の処理が終わると、ステップＳ２０９において、通信データ復元部１１０に通信データを渡し、通信データ復元部１１０は通信データ構造復元部１０９が読み出したデータの続きを読み出す。図５で説明すると、データ構造を示す部分は通信データ構造復元部１０９が解読し、データの値を示す部分から通信データ復元部１１０が解読することとなる。
【００３４】
図８のステップＳ２１０において、通信データ復元部１１０は、読み出したデータから順に、図６、７にて通信データ構造復元部１０９が作成した領域にデータを書き込んでいく。
最初のデータはｓｔｒｕｃｔ＿Ｔ１型の配列の１つめの要素のｌｏｎｇ型の「１」であることから、通信データ復元部１１０は、通信データ構造復元部１０９−１のｌｏｎｇ型データ領域に１を書き込む。次のデータ「ａ」も同様に通信データ構造復元部１０９−１のｃｈａｒ型データ領域に書き込む。この処理を繰り返し、通信データ構造復元部１０９が保持するデータ領域に書き込んでいく。
【００３５】
図９は、実施の形態１における通信データ構造解釈部１１１の動作のフローチャートである。図９は、上述した図２の説明に関する処理を含めフローチャートとして示している。
ステップＳ３２０において、通信データ構造解釈部１１１は、通信データ構造定義部１０４に保持されるファイルの終わりまで読んだかどうかを確認し、読んでいなければステップＳ３２１に進み、読んでいれば終了する。
ステップＳ３２１で、通信データ構造解釈部１１１は、通信データ構造定義部１０４に保持されるファイルから、例えば”；”または”｛“または”｝” まで読み出す。
ステップＳ３２２において、読み出した文字列中にｓｔｒｕｃｔ”があれば、ステップＳ３２３に進み、データ構造識別子定義部１１２にあるデータ型を示す文字列があれば、ステップＳ３２４に進み、”｝”であれば、ステップＳ３２６に進む。
ステップＳ３２６においては、通信データ構造解釈部１１１は、通信データ構造変換部への登録を終了しステップＳ３２０に戻る。
ステップＳ３２３で、通信データ構造解釈部１１１は、新規に通信データ構造変換部１０５を作成し、新規構造体を示す識別子をデータ型識別子定義部１１２に登録してステップＳ３２４に進む。
【００３６】
ステップＳ３２４において、通信データ構造解釈部１１１は、データ型をステップ３２３で作成した通信データ構造変換部１０５に登録する。
ステップＳ３２５において、通信データ構造解釈部１１１は、ステップＳ３２１にて読み出した文字列中に［］があれば、［］の中の数値を読み出し、その数値を通信データ構造部のデータ型とともに登録する。［］がなければ１を登録する。そして、ステップＳ３２０に戻る。
【００３７】
図１０は、実施の形態１における通信データ構造変換部１０５の動作のフローチャートである。図１０は図３の処理を含めフローチャートで示している。
ステップＳ３０１において、通信データ構造変換部１０５は、通信データとなる構造体の開始を示す識別子を通信データ部１０３に書き込む。
ステップＳ３０２において、通信データ構造変換部１０５は、自通信データ構造変換部１０５に登録されている全てのデータ型について処理していればステップＳ３０７にて終了となるが、処理していなければステップＳ３０３に進む。
【００３８】
ステップＳ３０３で、通信データ構造変換部１０５は、次の１バイトを読み出し、自らの通信データ構造変換部１０５に登録されているデータ型を参照し、上述した基本データ型であれば、ステップＳ３０４に進み、ユーザ定義のデータ型であれば、ステップＳ３０５に進む。
ステップＳ３０４では、通信データ構造変換部１０５は、上述した基本データ型の識別子を通信データ部１０３に書き込む。
ステップＳ３０６において、通信データ構造変換部１０５は、データ型の要素数を通信データ部３に書き込み、ステップＳ３０２に戻る。
【００３９】
ステップＳ３０５において、通信データ構造変換部１０５は、ユーザ定義のデータ型について、当該データ構造の識別子通信データ部１０３に書き込みを行うため、適合するデータ構造が保持されている通信データ構造定義部１０４を呼び出したうえで、ステップＳ３０１〜３０６を実施する。このステップＳ３０５は、図３におけるステップＳ１０２に相当する。
【００４０】
図１１は、実施の形態１における通信データ構造復元部１０９の動作のフローチャートである。図１１は上述した図７の処理を含めフローチャートとして示している。
ステップＳ４０１において、図１に示されるデータ受信部１０８から通信データの内容を受け取ると、通信データ構造復元部１０９は、通信データからの構造体の開始を示す識別子を読み出す。
ステップＳ４０２において、通信データ構造復元部１０９が、通信データ中のデータ構造を定義したデータの終了を示す識別子を全て読み出した場合は、ステップＳ４０８にて終了するが、終了していない場合には、ステップＳ４０３に進む。
【００４１】
ステップＳ４０３において、通信データ構造復元部１０９は、構造体の開始を示す識別子の次の１バイトを読み出し、自通信データ構造変換部１０９に登録されているデータ型を参照し、基本データ型であれば、ステップＳ４０４に進み、ユーザ定義のデータ型であればステップＳ４０５に進む。
ステップＳ３４０４において、構造体の開始を示す識別子の次の１バイトが基本データ型であれば、基本データ型のデータを格納するための領域を作成する。この処理は図６のステップＳ２０４が図１１のステップＳ４０４にほぼ相当する。
【００４２】
ステップＳ４０６において、通信データ構造復元部１０９は、その次の１バイトを読み出すことでデータ型の要素数を読み出す。
ステップＳ４０７において、通信データ構造復元部１０９は、ステップＳ４０４で作成した領域を要素分複製するとともに、ステップＳ４０５で作成したデータ構造復元部１０９を、取得した要素数分複製し、ステップＳ４０２に戻る。
ステップＳ４０５において、ユーザ定義のデータ型であれば、通信データ構造復元部１０９は、新規に通信データ構造復元部１０９を作成した上で、ステップＳ４０２からステップＳ４０６までを行う。これは図７のステップＳ２０７に相当する。
【００４３】
このように、通信データ構造圧縮装置１００は、データのデータ構造に含まれるデータ型を各々識別子とともに保持するデータ型識別子定義部１１２と、データ構造を定義したデータに含まれるデータ型のうち、基本データ型、新規データ型かを識別するとともに、基本データ型については識別子と要素数とを出力し、新規データ型については識別子と要素数とを出力するとともにその識別子をデータ型識別子定義部１１２に登録する通信データ構造解釈部１１１と、データ型に対応する識別子と要素数を用いて通信データのデータ構造部分を生成する通信データ構造変換部１０５と、生成された通信データのデータ構造部分と、データ構造を定義したデータのデータ値の部分とを合わせて通信データを生成する通信データ部１０３と、生成された通信データをネットワークに送信するデータ送信部１０７とを備え、通信データ構造復元装置１０１は、ネットワークを経由した通信データを受信するデータ受信部１０８と、受信された通信データのデータ構造部分に含まれるデータ型の識別子と要素数に基づいて通信データのデータ構造を復元するデータ構造復元部１０９と、受信された通信データのデータ値の部分と、復元されたデータ構造とを用いてデータを復元する通信データ復元部とを備えたので、小さいデータサイズでデータ構造を認識させることができる。
送信するデータのデータ型およびその要素数を整数値１〜２バイトで表現することにより、従来技術よりも小さいサイズでデータ構造を認識させることができる。
【００４４】
通信データ構造復元装置１０１は、通信データ構造復元部１０９が、通信データ部に書き込まれた識別子を元にデータ構造を復元し、通信データ復元部１１０が、通信データ構造復元部１０９が持つデータ領域に値を書き込むことにより、通信データ構造復元装置１０１ではデータ構造を事前に伝えられていなくとも送信された通信データを正しいデータ構造に復元することができ、不明なデータ構造のデータをディスプレイなどにデータ構造も正確に表示することが可能となる。
特に、ＩＰマルチキャストを用いたデータ通信において、データのデータ構造が事前に不明であってもデータの復元を可能とするのでデータ通信量を削減できる。
【００４５】
なお、本実施の形態では、固定長の配列について言及しているが、可変長の配列については、データが可変長であることを示す識別子を配列の要素数として定義し、さらに、実際に送信するデータの個数を、データを送信する際に通信データ変換部１０６が書き込み、通信データ復元部１０９が読み取ることにより、格納するデータの個数をデータ受信側で把握することができる。
【００４６】
実施の形態２．
図１２は、本実施の形態１における通信データ構造圧縮装置１００と通信データ構造復元装置１１１を示す図である。
実施の形態２は、実施の形態１の構成を全て加え、かつ通信データ構造復元装置１１１送信元識別子管理部１１３を持つ。
送信元識別子管理部１１３は、送信元識別子とデータ構造復元部１０９を連携付けて管理する役割を持つ。送信元識別子とは、通信データ構造圧縮装置１００と通信データ構造復元装置１１１に割り当てられるＩＰアドレスや、オブジェクト通信の場合の送信オブジェクトを一意に判定できる識別子など、送信元である通信データ構造圧縮装置１００を一意に判定できる識別子であればよい。
他の構成要素の役割については実施の形態１と同一であるため、説明を省略する。
【００４７】
図１３は、実施の形態２における送信元識別子管理部１１３の構成例を示した図である。図１３のように、本実施の形態における送信元識別子管理部１１３は、送信元識別子とデータ構造復元部１０９が復元するデータ全体のデータ構造を１対１で対応させたテーブルを管理する。
【００４８】
図１４は、本実施の形態２におけるデータ通信部１０３に保持される通信データの例である。
本図では、データ構造を示すデータの前に、送信元識別子を追加している点が実施の形態１と異なる点である。
送信元識別子は送信元のオブジェクトまたは通信データ構造圧縮装置１００が付与するものであり、例えばオブジェクト通信であれば、通信時にアプリケーションが付与することや、ＩＰ通信であればプロトコルによってＩＰアドレスが付与されることが考えられ、それらの値を利用することが考えられる。
【００４９】
図１５は、実施の形態２における通信データ構造圧縮装置と通信データ構造復元装置動作のフローチャートである。
ステップＳ５００において、実施の形態１と同様の動作によって通信データ部１０３に通信データが生成される。
ステップＳ５０１において、通信データ部１０３は、その通信データのヘッダとして送信元識別子を付与する。
【００５０】
ステップＳ５０２において、データ構造復元部１０９は、通信データ構造圧縮装置１００から発信され、受信された通信データの先頭にある送信元識別子を読み出し、事前に登録されていれば、ステップＳ５０３に進み、登録されていなければステップＳ５０４に進む。
ステップＳ５０３において、データ構造復元部１０９は、送信元識別子管理部１１３を参照して送信元識別子に対応したデータ構造を抽出した上でデータ構造を復元し、その後、実施の形態１と同様の手順によって通信データ復元部１１０が通信データの復元を行う。
【００５１】
ステップＳ５０４において、実施の形態１と同じ動作によってデータ構造復元部１０９が通信データのデータ構造の復元を行い、通信データ復元部１１０が通信データの復元を行う。
ステップＳ５０５において、データ構造復元部１０９は、送信元識別子管理部１１３に送信元識別子とデータ構造とを対応付けて登録する。
【００５２】
このように、通信データ構造圧縮装置１００は、データのデータ構造に含まれるデータ型を各々識別子とともに保持するデータ型識別子定義部１１２と、データ構造を定義したデータに含まれるデータ型のうち、基本データ型、新規データ型かを識別するとともに、基本データ型については識別子と要素数とを出力し、新規データ型については識別子と要素数とを出力するとともにその識別子をデータ型識別子定義部１１２に登録する通信データ構造解釈部１１１と、基本データ型、新規データ型の出力された識別子と要素数を用いて通信データのデータ構造部分を生成する通信データ構造変換部１０５と、生成された通信データのデータ構造部分と、データ構造を定義したデータのデータ値の部分とを合わせて通信データを生成するとともに、通信データに送信元識別子を付与する通信データ部１０３と、生成された通信データをネットワークに送信するデータ送信部１０７とを備え、通信データ構造復元装置１０１は、ネットワークを経由した通信データを受信するデータ受信部１０８と、送信元識別子と通信データのデータ構造を対応付けて管理する送信元識別子管理部１１３と、送信元識別子管理部１１３に管理されている送信元識別子に基づいた通信データのデータ構造を復元するとともに、送信元識別子管理部１１３に登録されていない場合は、受信された通信データのデータ構造部分に含まれるデータ型の識別子と要素数に基づいて通信データのデータ構造を復元し、新たな送信元識別子と対応するデータ構造を送信元識別子管理部１１３に登録するデータ構造復元部１０９と、受信された通信データのデータ値の部分と、復元されたデータ構造とを用いてデータを復元する通信データ復元部とを備えたので、小さいデータサイズでデータ構造を認識させることができるとともに、通信データに送信元識別子を付与し、送信元識別子と通信データのデータ構造を送信元識別子管理部１１３にて連携付けて管理することにより、データ送信のたびに通信データのうちのデータ構造部分を送信する必要がなくなり、さらに送信する通信データサイズを小さくすることができる。
【符号の説明】
【００５３】
１００  通信データ構造圧縮装置
１０１  通信データ構造復元装置
１０２  ネットワーク
１０３  通信データ部
１０４  通信データ構造定義部
１０５  通信データ構造変換部
１０５−１  ｓｔｒｕｃｔ＿Ｔ１用通信データ構造変換部
１０５−２  ｓｔｒｕｃｔ＿Ｔ２用通信データ構造変換部
１０６  通信データ変換部
１０７  データ送信部
１０８  データ受信部
１０９、１０９−１  １０９−１’  データ構造復元部
１１０  通信データ復元部
１１１  通信データ構造解釈部
１１２  データ型識別子定義部
１１３  送信元識別子管理部
【図１】
2014229174.tif 000003
【図２】
2014229174.tif 000004
【図３】
2014229174.tif 000005
【図４】
2014229174.tif 000006
【図５】
2014229174.tif 000007
【図６】
2014229174.tif 000008
【図７】
2014229174.tif 000009
【図８】
2014229174.tif 000010
【図９】
2014229174.tif 000011
【図１０】
2014229174.tif 000012
【図１１】
2014229174.tif 000013
【図１２】
2014229174.tif 000014
【図１３】
2014229174.tif 000015
【図１４】
2014229174.tif 000016
【図１５】
2014229174.tif 000017