(58)【調査した分野】(Int.Cl.,DB名)
前記アプリケーションが前記第1のデバイスファイルに対してデータの読み書きを行い、前記サーバ部が前記第2のデバイスファイルに対してデータの読み書きを行うことにより、前記アプリケーションは前記デバイスとデータ通信を行う
ことを特徴とする請求項1又は2に記載の通信中継システム。
アプリケーションとデバイスとの間でデータ通信の中継を行う通信中継システムにおいて、前記アプリケーションを備えるサーバ側コンピュータに接続されるデバイス収容端末であって、
前記デバイスと接続するインタフェースと、
前記デバイス収容端末において生成されたデバイスファイルを介して前記デバイスと接続するとともに、前記サーバ側コンピュータとデータ通信を行うクライアント部とを備え、
前記クライアント部は、前記デバイス収容端末において前記デバイスを接続するポートの情報を前記サーバ側コンピュータに通知し、
前記サーバ側コンピュータにおいて、前記アプリケーションがデータの読み書きを行うデバイスファイルとして、前記ポートの情報を含む名前を有するデバイスファイルが生成される
ことを特徴とするデバイス収容端末。
アプリケーションとデバイスとの間でデータ通信の中継を行う通信中継システムにおいて、前記デバイスと接続されるデバイス収容端末とデータ通信を行うサーバ側コンピュータであって、
前記アプリケーションと、
前記サーバ側コンピュータにおいて生成される第2のデバイスファイルと接続するとともに、前記デバイス収容端末とデータ通信を行うサーバ部と、
前記第2のデバイスファイルと第1のデバイスファイルを生成し、当該第1のデバイスファイルを介して前記アプリケーションと接続し、前記第2のデバイスファイルを介して前記サーバ部と接続する疑似デバイスドライバと、を備え、
前記サーバ側コンピュータは、前記デバイス収容端末から、当該デバイス収容端末を識別するための識別情報を受信し、
前記疑似デバイスドライバは、前記サーバ側コンピュータにおける第1のデバイスファイルとして、前記識別情報を含む名前を有する第1のデバイスファイルを生成する
ことを特徴とするサーバ側コンピュータ。
アプリケーションとデバイスとの間でデータ通信の中継を行う通信中継システムにおいて、前記デバイスと接続されるデバイス収容端末とデータ通信を行うサーバ側コンピュータであって、
前記アプリケーションと、
前記サーバ側コンピュータにおいて生成される第2のデバイスファイルと接続するとともに、前記デバイス収容端末とデータ通信を行うサーバ部と、
前記第2のデバイスファイルと第1のデバイスファイルを生成し、当該第1のデバイスファイルを介して前記アプリケーションと接続し、前記第2のデバイスファイルを介して前記サーバ部と接続する疑似デバイスドライバと、を備え、
前記サーバ側コンピュータは、前記デバイス収容端末から、当該デバイス収容端末において前記デバイスを接続するポートの情報を受信し、
前記疑似デバイスドライバは、前記サーバ側コンピュータにおける第1のデバイスファイルとして、前記ポートの情報を含む名前を有する第1のデバイスファイルを生成する
ことを特徴とするサーバ側コンピュータ。
【発明の概要】
【発明が解決しようとする課題】
【0010】
上記のTTY機器20はIPネットワークインタフェースを持たないため、端末10により収集されたデータをネットワーク経由でデータセンタなどに送信する場合、アプリケーション11に通信機能を組む必要がある。上述のとおり、TTY機器20に応じた専用のソフトウェアが使用されるので、通信機能を組み込む場合にもそれぞれのソフトウエアごとに通信機能を組み込む必要がある。
【0011】
IPネットワークインタフェースを持たない複数のTTY機器20をネットワーク化してデータ集約を行おうとする場合、例えば
図2に示すような構成をとる。
図2の構成では、センター側データ集約装置30が備えられる。センター側データ集約装置30は、アプリケーション31を備え、例えばデータベース32等にデータを格納する処理を行う。
【0012】
このようなネットワーク化を行うためには、TTY機器20を収容する端末10の中にインストールされているアプリケーション11にIP通信機能を具備させなければならない。TTY機器20を収容する端末10で動作するアプリケーション11は、TTY機器20専用のソフトウェアであるため、通信機能の追加はTTY機器20に対応する当該ソフトウェアごとに行うことが必要となる。また、
図2の構成のように複数拠点にTTY機器収容端末10が配置される場合、TTY機器20の種類を変更したり1つの端末10に異なる種類のTTY機器20を接続追加したりする場合には、端末10毎にアプリケーション11の変更、追加が必要となる。
【0013】
すなわち、従来技術では、デバイスファイルを介してアプリケーションとデバイスとの間の通信を中継する際に、いままでのソフトウェア資産をそのまま流用することができず、ソフトウェアの改造や煩雑な運用が必要となり、効率的に中継を行うことができなかった。
【0014】
本発明は上記の点に鑑みてなされたものであり、デバイスファイルを介したアプリケーションとデバイスとの間の通信を効率的に中継することを可能とする技術を提供することを目的とする。
【課題を解決するための手段】
【0015】
本発明の実施の形態によれば、アプリケーションとデバイスとの間でデータ通信の中継を行う通信中継システムであって、
前記通信中継システムは、サーバ側コンピュータとデバイス収容端末とを備え、
前記サーバ側コンピュータは、
前記アプリケーションと、
前記サーバ側コンピュータにおいて生成され
る第2のデバイスファイルと接続するとともに、前記デバイス収容端末とデータ通信を行うサーバ部と、
前記
第2のデバイスファイル
と第1のデバイスファイルを生成し、
当該第1のデバイスファイルを介して前記アプリケーション
と接続し、前記第2のデバイスファイルを介して前記サーバ部
と接続する疑似デバイスドライバと、を備え、
前記デバイス収容端末は、
前記デバイスと接続するインタフェースと、
前記デバイス収容端末において生成されたデバイスファイルを介して前記デバイスと接続するとともに、前記サーバ側コンピュータとデータ通信を行うクライアント部と、を備え、
前記デバイス収容端末における前記クライアント部は、当該デバイス収容端末を識別するための識別情報を前記サーバ側コンピュータに通知し、
前記疑似デバイスドライバは、前記サーバ側コンピュータおける第1のデバイスファイルとして、前記識別情報を含む名前を有する第1のデバイスファイルを生成する
ことを特徴とする通信中継システムが提供される。
【0016】
また、本発明の実施の形態によれば、アプリケーションとデバイスとの間でデータ通信の中継を行う通信中継システムにおいて、前記アプリケーションを備えるサーバ側コンピュータに接続されるデバイス収容端末であって、
前記デバイスと接続するインタフェースと、
前記デバイス収容端末において生成されたデバイスファイルを介して前記デバイスと接続するとともに、前記サーバ側コンピュータとデータ通信を行うクライアント部とを備え、
前記クライアント部は、前記デバイス収容端末
において前記デバイスを接続するポートの情報を前記サーバ側コンピュータに通知し、
前記サーバ側コンピュータにおいて、前記アプリケーションがデータの読み書きを行うデバイスファイルとして、前記
ポートの情報を含む名前を有するデバイスファイルが生成される
ことを特徴とするデバイス収容端末が提供される。
【0017】
また、本発明の実施の形態によれば、アプリケーションとデバイスとの間でデータ通信の中継を行う通信中継システムにおいて、前記デバイスと接続されるデバイス収容端末とデータ通信を行うサーバ側コンピュータであって、
前記アプリケーションと、
前記サーバ側コンピュータにおいて生成され
る第2のデバイスファイルと接続するとともに、前記デバイス収容端末とデータ通信を行うサーバ部と、
前記
第2のデバイスファイル
と第1のデバイスファイルを生成し、
当該第1のデバイスファイルを介して前記アプリケーション
と接続し、前記第2のデバイスファイルを介して前記サーバ部
と接続する疑似デバイスドライバと、を備え、
前記サーバ側コンピュータは、前記デバイス収容端末から、当該デバイス収容端末を識別するための識別情報を受信し、
前記疑似デバイスドライバは、前記サーバ側コンピュータおける第1のデバイスファイルとして、前記識別情報を含む名前を有する第1のデバイスファイルを生成する
ことを特徴とするサーバ側コンピュータが提供される。
【0018】
また、本発明の実施の形態によれば、アプリケーションとデバイスとの間でデータ通信の中継を行う通信中継システムが実行する通信中継方法であって、
前記通信中継システムは、前記アプリケーションを備えるサーバ側コンピュータと、前記デバイスを接続するデバイス収容端末とを備え、
前記デバイス収容端末が前記サーバ側コンピュータに接続要求を送信することにより、前記デバイス収容端末と前記サーバ側コンピュータとの間でコネクションを確立するステップと、
前記サーバ側コンピュータが、前記アプリケーションによりデータの読み書きを行うサーバ側デバイスファイルを生成するステップと、
前記アプリケーションが、前記サーバ側デバイスファイルと、前記デバイス収容端末における前記デバイスに対応するクライアント側デバイスファイルとを介して、前記デバイスとデータ通信を行うステップとを備え
、
前記サーバ側デバイスファイルを生成するステップにおいて、前記サーバ側コンピュータは、前記デバイス収容端末から受信した識別情報であって、当該デバイス収容端末を識別するための識別情報を含む名前を有するサーバ側デバイスファイルを生成する
ことを特徴とする通信中継方法が提供される。
【発明の効果】
【0019】
本発明の実施の形態によれば、デバイスファイルを介したアプリケーションとデバイスとの間の通信を効率的に中継することを可能とする技術が提供される。
【発明を実施するための形態】
【0021】
以下、図面を参照して本発明の実施の形態を説明する。なお、以下で説明する実施の形態は一例に過ぎず、本発明が適用される実施の形態は、以下の実施の形態に限られるわけではない。
【0022】
(システム構成、機能概要)
図3に、本発明の実施の形態に係る通信中継システムの構成図を示す。
図3に示すとおり、本実施の形態に係る通信中継システムは、サーバ側コンピュータ100、TTY機器収容端末200を有し、TTY機器収容端末200にはTTY機器20が接続される。
【0023】
サーバ側コンピュータ100は、一例として、センター側データ集約装置に相当する装置である。
図3では、1つのTTY機器収容端末200がサーバ側コンピュータ100に接続されているが、一般には複数のTTY機器収容端末200がサーバ側コンピュータ100に接続される。ただし、サーバ側コンピュータ100が集約機能を持たない装置であってもよく、その場合、複数のTTY機器収容端末200ではなく1つのTTY機器収容端末200がサーバ側コンピュータ100に接続される構成であってもよい。
【0024】
本実施の形態において、サーバ側コンピュータ100とTTY機器収容端末200は、例えばIPネットワーク(例:インターネット)により接続される。TTY機器20は、前述したシリアルインタフェースを持つ機器(デバイス)であり、TTY機器収容端末200とインタフェース204を介して、例えばUSBシリアル変換ケーブル等により接続される。
【0025】
サーバ側コンピュータ100は、Linux(登録商標)等のOSを有するコンピュータである。また、TTY機器収容端末200もLinux(登録商標)等のOSを有するコンピュータである。
【0026】
図3に示す構成では、TTY機器をネットワーク化するために、アプリケーションソフトウェアにネットワーク機能を追加するのではなく、TTY機器20の種類に依存しない汎用的なソフトウェアが通信機能を受け持つこととしている。具体的には、
図3に示すTTYサーバ101、疑似TTYデバイスドライバ102、TTYクライアント201が備えられることで、このような通信機能を実現している。
【0027】
図3に示すように、サーバ側コンピュータ100は、TTYサーバ101、疑似TTYデバイスドライバ102、アプリケーション103を含む。ここでのアプリケーション103は、
図1に示した従来のTTY機器制御用アプリケーション11に相当する。すなわち、本実施の形態では、既存のアプリケーション11の変更・改造を行うことなく、サーバ側コンピュータ100において使用することを可能としている。例として、当該アプリケーション103は、データを記憶装置104(データベース等)に格納したり、データを記憶装置104から読み出す機能を含む。また、
図3では、アプリケーション103を1つだけ示しているが、集約するTTY機器の種類に応じて、複数種類のアプリケーションを備えてもよい。
【0028】
TTY機器収容端末200は、TTYクライアント201、TTYデバイスドライバ203を含む。TTYデバイスドライバ203は、既存のTTYデバイスドライバ13に相当する。
【0029】
図3に示すTTYサーバ101、疑似TTYデバイスドライバ102、及びTTYクライアント201は、従来技術にはない構成要素である。これらのソフトウェア(プログラム)は、TTY機器収容端末200に現れるデバイスファイル202(例:図中の/dev/tty.USB0)を発見すると、そのインタフェースをサーバ側コンピュータ100に生成されるTTYデバイスファイル105(例:図中の/dev/tty.Host)と結びつける。TTYクライアント201により/dev/tty.USB0から読み出されたデータはサーバ側コンピュータ100に転送され、アプリケーション103により/dev/tty.Hostから読みだすことができ、逆に/dev/tty.Hostに書き込まれたデータはTTY機器収容端末200に転送され、/dev/tty.USB0に書き出される。
【0030】
これにより、サーバ側コンピュータ100にインストールされているTTY機器制御用のアプリケーション103は、自コンピュータ内で生成されている/dev/tty.Hostをオープンして読み書きすることで、遠隔に設置されたTTY機器収容端末200を制御できる。
【0031】
これは
図4に示すように、サーバ側コンピュータ100にインストールされたTTY機器制御用のアプリケーション103から見れば、TTY機器収容端末200側に生成されたデバイスファイル/dev/tty.USB0が仮想的にサーバ側コンピュータ100側の/dev/tty.Hostに移動してきているように見える。これにより、TTY機器制御用のアプリケーション103には通信機能を具備する必要はなく、もともとTTY機器収容端末側で動作していたソフトウェア(例:
図1のアプリケーション11)をそのままサーバ側コンピュータ100で動作させることができる。
【0032】
(機能、動作の詳細)
以下、
図3に示した本実施の形態に係る通信中継システムを機能及び動作をより詳細に説明する。
【0033】
<全体の機能の詳細説明>
図3に示すとおり、TTYクライアント201(プログラム)はTTY機器収容端末200にインストールされる。一方、サーバ側コンピュータ100にはTTYサーバ101(プログラム)と擬似TTYデバイスドライバ102(プログラム)がインストールされている。
【0034】
本実施の形態におけるTTY機器収容端末200は、物理的なシリアルポート(インタフェース204、ここでは例としてUSBポート)を有しており、/dev/ttyで始まる名前のファイルが生成されている。
【0035】
当該インタフェース204(ここではUSBポート)に、USBシリアル変換IC(USBシリアル変換ケーブル等)が接続されるとする。TTY機器収容端末200には、当該USBシリアル変換ICのデバイスドライバ203がインストールされており、USBのPnP機能によりその時点で/dev/tty.USB0などの名前を持つデバイスファイル202が生成される。
【0036】
TTYクライアント201は、自分が転送を行うべきデバイスファイル名を初期設定等に基づき保持しており(例えば/dev/tty.USB*など)、そのファイルが存在したり出現したりすると、TTYサーバ101に対してコネクションを確立する。また、一例として、TTY機器収容端末200においてインタフェース204(例:USBポート)が2つあり、それぞれにTTY機器が接続された場合にはデバイスファイル202も2つ生成される。TTYクライアント201はデバイスファイル1つにつき、1つのコネクションを生成しようとする。このため2つのTTY機器が接続されるとそれぞれに対応した2つのコネクションが生成される。
【0037】
本実施の形態におけるコネクションの種類は特定のものに限定されないが、例えば、TCPコネクション、HTTPコネクション等を用いることができる。
【0038】
TTYサーバ101はTTYクライアント201からの接続要求を待ち受ける。接続要求に基づきコネクションが確立するとTTYサーバ101は擬似TTYデバイスドライバ102に対して、TTYデバイスファイル105、キャラクタデバイスファイル106の生成を要求する。
【0039】
サーバ側コンピュータ100における擬似TTYデバイスドライバ102は、OSのカーネル空間で動作するモジュールであり、TTYサーバ101からの上記指示によりTTYデバイスファイル105、キャラクタデバイスファイル106を生成する。
【0040】
一般的には、TTYデバイスファイルは物理的なシリアルインタフェースに対応付けられており、アプリケーションはこのデバイスファイルにデータをリードライトすることで、シリアルポートに接続されたTTY機器とデータをやり取りする。
【0041】
一方、本実施の形態における擬似TTYデバイスドライバ102は、実際には物理的シリアルポートを持たず、その代わりに、キャラクタデバイスファイル106(/dev/XXX)を生成して、TTYデバイスファイル105(ブロックデバイスファイル)とキャラクタデバイスファイル106との間を接続する。これにより、アプリケーション103がTTY機器20に向けて、TTYデバイスファイル105に書き込んだデータはキャラクタデバイスファイル106から読み取ることができて、逆にキャラクタデバイスファイル106に書き込まれたデータはあたかもTTY機器20が出力したかのように、TTYデバイスファイル105からアプリケーション103によって読み込まれる。
【0042】
1つの擬似TTYデバイスドライバ102は複数のTTYデバイスファイル105と、複数のキャラクタデバイスファイル106を生成することが可能であり、その間を1対1で接続する。
【0043】
図中では簡単のために一組のデバイスファイルしか描いていないが、TTYサーバ101が複数のTTYクライアント201との間でコネクションを確立する場合、デバイスファイルも確立されたコネクションと同数の組だけ生成される。TTY機器収容端末200で生成されたデバイスファイル1つに付きコネクションが1つ確立されるので、結局、TTY機器収容端末200側の実際のTTY機器1つにつきサーバ側コンピュータ100のTTYデバイスファイル105が1つ生成されることになる。なお、複数コネクションを有する場合の構成例については後により具体的に説明する。
【0044】
サーバ側コンピュータ100でTTYデバイスファイル105が生成されると、アプリケーション103はそのファイルをオープンできる。それはあたかもローカルマシンに制御対象のTTY機器20が接続されている場合の動作に相当する。
【0045】
TTYデバイスファイル105のオープン後は、通信速度やパリティビット長などのTTYインタフェース属性をアプリケーション103から設定してデータの読み書きが開始される。例えばLinux(登録商標)では、アプリケーション103はioctlなどのシステムコールで疑似TTYデバイスドライバ102へ属性情報を通知する。疑似TTYデバイスドライバ102は、例えばioctlにより、通信属性がセットされるとTTYサーバ101経由でTTYクライアント201に対してその属性情報を伝える。するとTTYクライアント201は、その属性のとおり、TTY機器収容端末200のTTYインタフェース属性(通信パラメータ)を設定する。これにより、サーバ側コンピュータ100のアプリケーション103の設定がTTY機器収容端末200側(拠点側)のTTYインタフェース204に反映され、サーバ側アプリケーション103と拠点側TTY機器20との間でデータのやり取りがなされる。
【0046】
本実施の形態に係るサーバ側コンピュータ100は、例えば、Linux(登録商標)等のOSを備えるコンピュータに、本実施の形態で説明する処理内容を記述したプログラムを実行させることにより実現可能である。すなわち、サーバ側コンピュータ100が有する機能は、当該コンピュータに内蔵されるCPUやメモリ、ハードディスクなどのハードウェア資源を用いて、当該装置で実施される処理に対応するプログラムを実行することによって実現することが可能である。上記プログラムは、コンピュータが読み取り可能な記録媒体(可搬メモリ等)に記録して、保存したり、配布したりすることが可能である。また、上記プログラムをインターネットや電子メールなど、ネットワークを通して提供することも可能である。
【0047】
また、本実施の形態に係るTTY機器収容端末200は、例えば、Linux(登録商標)等のOSを備えるコンピュータに、本実施の形態で説明する処理内容を記述したプログラムを実行させることにより実現可能である。すなわち、TTY機器収容端末200が有する機能は、当該コンピュータに内蔵されるCPUやメモリ、ハードディスクなどのハードウェア資源を用いて、当該装置で実施される処理に対応するプログラムを実行することによって実現することが可能である。上記プログラムは、コンピュータが読み取り可能な記録媒体(可搬メモリ等)に記録して、保存したり、配布したりすることが可能である。また、上記プログラムをインターネットや電子メールなど、ネットワークを通して提供することも可能である。
【0048】
<TTYクライアントとTTYサーバの機能構成>
図5に、TTYクライアント201とTTYサーバ101の機能構成例を示す。
図5に示すように、TTYクライアント201は、デバイスファイル管理部210、コネクション確立部220、データ通信部230、属性設定部240を含む。
【0049】
デバイスファイル管理部210は、TTYクライアント201がデータの送受信(読み書き)を行うデバイスファイル名を保持する。例えば、複数のコネクションが設定される場合に、コネクション1で送受信されるデータの読み書きを行うデバイスファイル名が「デバイスファイル1」であれば、コネクション1(を示す識別情報)とデバイスファイル1とを対応付けて保持する。
【0050】
コネクション確立部220は、TTYサーバ101との間でコネクションを確立するための機能部であり、接続要求の送信、接続要求に対する応答受信等を経て、コネクションを確立させる。データ通信部230は、TTYサーバ101との間に設定されたコネクションを利用してTTYサーバ101との間でデータ通信を行うとともに、アプリケーション103とTTY機器20間のデータに関しては、デバイスファイルへの読み書きを実施する。例えばLinux(登録商標)の場合、read/writeのシステムコールをデータ通信部230が発行することでデータの読み書きを実施する。また、ID送信等のためのコントロールデータを送信する際にはコントロールデータであることを示すヘッダを付加して送信する。また、コントロールデータであることを示すヘッダを付加したデータを受信した際には、ヘッダ(例:TTY属性であることを示すヘッダ)に対応するコントロール(例:属性設定)のための処理を行う。
【0051】
属性設定部240は、上記のようにしてTTY属性を受信した場合に、データ通信部230からTTY属性のデータを受け取り、当該TTY属性の設定を実施する。例えばLinux(登録商標)の場合、属性設定部240がioctlを発行することでTTY属性の設定を実施する。例えば、当該TTY属性に示される通信速度で、TTY機器20とTTYクライアント201が通信できるように、TTYクライアント201、TTYデバイスドライバ203、TTY機器20等の設定を行う。
【0052】
図5に示すように、TTYサーバ101は、コネクション確立部110、デバイスファイル生成要求部120、データ通信部130を含む。
【0053】
コネクション確立部110は、TTYクライアント201との間でコネクションを確立するための機能部であり、接続要求の受信、接続要求に対する応答送信等を経て、コネクションを確立させる。
【0054】
デバイスファイル生成要求部120は、コネクション確立部110により確立したコネクションに対応するデバイスファイル(TTYデバイスファイルとキャラクタデバイスファイル)の生成を疑似TTYデバイスドライバ102に要求する。例えば、デバイスファイル生成要求部120から疑似TTYデバイスドライバ102への要求は、疑似TTYデバイスドライバ102の生成する特殊ファイル/proc/tty(107)に対するwriteで実行される。
【0055】
データ通信部130は、TTYクライアント201との間に設定されたコネクションを利用してTTYクライアント201との間でデータ通信を行うとともに、キャラクタデバイスファイル106へのデータ読み書きを実施する。また、TTY属性送信等のためのコントロールデータを送信する際にはコントロールデータであることを示すヘッダを付加して送信する。また、コントロールデータであることを示すヘッダを付加したデータを受信した際には、ヘッダ(例:ID等であることを示すヘッダ)に対応するコントロール(例:疑似TTYデバイスドライバ102に対する、IDを含むデバイスファイル名生成指示等)のための処理を行う。
【0056】
<疑似TTYデバイスドライバの機能構成>
図6に、疑似TTYデバイスドライバ102の機能構成を示す。
図6に示すように、疑似TTYデバイスドライバ102は、デバイスファイル生成部150、デバイスファイル間接続部160、及び属性情報通知部170を含む。更に、疑似TTYデバイスドライバ102は、キャラクタデバイスファイル106に対する入出力を行うキャラクタデバイス入出力機能、及び、TTYデバイスファイル105に対する入出力を行うTTYデバイス入出力機能を含む。
【0057】
例えば、疑似TTYデバイスドライバ102はカーネルモジュールとして実装され、カーネルにインストールされた時点で、デバイスファイル生成部150が特殊ファイル/proc/tty(107)を生成する。デバイスファイル生成部150は、/proc/ttyを経由して得られたTTYサーバ101からの指示に従って、TTYデバイスファイル105、及びキャラクタデバイスファイル106の生成を行う。デバイスファイル間接続部160は、TTYデバイスファイル105から、アプリケーション103によりwriteシステムコールで書き込まれたデータを読み取り、当該データを、対応するキャラクタデバイスファイル106に書き込む処理や、キャラクタデバイスファイル106から、TTYサーバ101により書き込まれたデータを読み取り、当該データを、readシステムコールに応じて、対応するTTYデバイスファイル105に書き込む処理等を行う。
【0058】
属性情報通知部170は、アプリケーション103からioctlシステムコールにより設定されるTTY属性をTTYクライアント201に通知するよう、TTYサーバ101に指示する。
【0059】
<動作フロー>
次に、
図7のフローチャートの手順に従って、本実施の形態における
図3に示した通信中継システムの動作例について説明する。
図8には、
図3に示す通信中継システムにおいて、
図7で使用しているステップ番号を付したものを示す。以下、
図8を参照して、
図7のフローチャートを説明する。
【0060】
サーバ側コンピュータ100において、疑似TTYデバイスドライバ102をインストールして、TTYサーバ101を起動する(ステップS1)。TTY機器収容端末200において、TTYクライアント201を起動すると(ステップS2)、TTYクライアント201は、データの転送を行うTTYデバイスファイル202を発見する(ステップS3)。
【0061】
TTYクライアント201は、TTYサーバ101との間でコネクションの確立のための処理(接続要求等)を行い(ステップS4)、TTYサーバ101は、TTYクライアント201からのコネクションが確立すると擬似TTYデバイスドライバ102にデバイスファイル生成を指示する(ステップS5)。
【0062】
指示を受けた擬似TTYデバイスドライバ102は、TTYデバイスファイル105とキャラクタデバイスファイル106を生成する(ステップS6)。そして、アプリケーション103により、TTYデバイスファイル105がオープンされて、TTY属性が設定される(ステップS7)。
【0063】
設定されたTTY属性は疑似TTYデバイスドライバ102、及びTTYサーバ101経由でTTYクライアント201に伝えられる(ステップS8)。TTY属性を受信したTTYクライアント201は、当該TTY属性で、TTY機器20側の処理部(デバイスファイル202、TTYデバイスドライバ203、インタフェース204、TTY機器20等)を初期化する(ステップS9)。
【0064】
以上の処理により、サーバ側コンピュータ100のTTYデバイスファイル105とTTY機器収容端末200側のデバイスファイル202が対応付けされ、アプリケーション103はTTY機器20と接続される(ステップS10)。
【0065】
(複数コネクションを持つ構成について)
<複数コネクションを持つ場合の基本構成>
一般的なTCP/IPクライアントサーバソフトウェアと同様に、本実施の形態におけるTTYサーバ101は複数のTTYクライアント201と接続し、通信する機能を有する。
【0066】
TTYサーバ101が、複数のTTYクライアント201と接続される場合の通信中継システムの構成例を
図9に示す。
図9の構成では、TTYサーバ101と1つのTTYクライアント201との間のコネクションが確立する度に、
図7、
図8で説明した手順により、サーバ側コンピュータ100において、当該コネクションに対応するTTYデバイスファイルとキャラクタデバイスファイルとが生成され、これらが接続される。
【0067】
各コネクションに対応付けて、TTYデバイスファイルとキャラクタデバイスファイルの名前が決められ、アプリケーション103は、コネクションに対応したデバイスファイルを用いてデータの読み書きを行うことで、所望の拠点のTTY機器20と通信することができる。
図9の例では、例えば、コネクション0に対応して、TTYデバイスファイル/dev/tty.0とキャラクタデバイスファイル/dev/xxx.0が生成されている。
【0068】
このような機能を備えるTTYサーバクライアントソフトウェアを用いることで、
図10に示すように、センタ側データ集約装置として機能するサーバ側コンピュータ100は仮想的に複数のシリアルインタフェースポートを持ち、各拠点に分散配置された多数のTTY機器20はすべてその仮想ポートに直接接続されているように見える。これにより、TTY機器20に固有のアプリケーション103にはネットワーク機能を具備するような改変は必要とされず、従来の機能のままサーバ側コンピュータ100で動作させることができる。これにより、従来のTTY機器20に関するソフトウェア資産をそのまま流用できることになる。
【0069】
また、TTY機器収容端末200に接続されるTTY機器20が変更されたり追加されたとしても、TTY機器収容端末200内のソフトウェアの追加変更は必要がなく、サーバ側コンピュータ100で動作するアプリケーション103を変更したり追加して、各々のソフトウェアが自分の担当するTTYデバイスファイルに接続する。これによりTTY機器収容端末200に対するソフトウェア操作が不要になり、オペレーションの煩雑さも軽減される。
【0070】
<拠点の識別について>
上記のようにサーバ側コンピュータ100では、コネクション毎に複数のデバイスファイルが生成され、TTYサーバ101は複数のTTYクライアント201からのコネクションを収容することが可能である。
【0071】
このとき、サーバ側コンピュータ100のアプリケーション103はどのようにして、目的とする拠点に対応するTTYデバイスファイル(例:
図10に示した/dev/tty.0等)を見つけ出すのかという問題がある。単にコネクションが生成された順番にデバイスファイルの名前を/dev/tty.0、/dev/tty.1、/dev/tty.2、のように命名していたのでは、どの拠点に接続されたTTY機器20に対応しているのかが分からない。
【0072】
そこで、TTYサーバ101は、TTYクライアント201とコネクションを確立したときに何らかの識別子をTTYクライアント201側から受け取り、疑似TTYデバイスドライバ102は、デバイスファイル生成時に、当該識別子をデバイスファイル名に付加することとしてよい。例えば、生成されるデバイスファイルの名称は、TTYサーバ101が/proc/ttyに書き込むデータに含められる。疑似TTYデバイスドライバ102は/proc/ttyから読み取った名前でデバイスファイルを生成する。このため、TTYサーバ101が決めた任意の文字列を持つ名前のデバイスファイルを生成することができる。
【0073】
一例として、デバイスファイル名にTTYクライアント201の発信元IPアドレス(識別情報の例)を埋め込む方法がある。すなわち、デバイスファイル名に/dev/tty.192.168.0.1のようにIPアドレスを組み込むのである。この方法は、発信元IPアドレスが変化しない環境において有効な方法である。
【0074】
しかし、インターネット環境では拠点側(TTY機器収容端末200側)のIPアドレスはその時々で変化して、コネクションが切断、再確立すると同じ拠点でも異なる発信元IPアドレスになることがある。これを防止するために、例えば、IP−VPNを利用する方法がある(例:特許文献2)。IP−VPNは端末の認証と通信の暗号化が主な目的である。通信ではIP−in−IP形式のトンネリング通信プロトコルが使われており、カプセル化される内側のIPアドレスはIP−VPNの認証時に固定的に割り当てることが可能である。そうすると、切断再接続を行っても同じ発信元IPアドレスとなり、デバイスファイル名から拠点を検索できるようになる。
【0075】
拠点(TTY機器収容端末200)を識別するための識別子としてIPアドレスを使用することは一例に過ぎない。IPアドレス以外の識別子を用いてもよい。
【0076】
一例として、拠点(TTY機器収容端末200)を識別するためのIDを、TTYクライアント201からTTYサーバ101に通知し、TTYサーバ101が当該IDを疑似TTYデバイスドライバ102に通知することで、疑似TTYデバイスドライバ102が、当該IDを埋め込んだ名前を持つTTYデバイスファイルとキャラクタデバイスファイルを生成することとしてもよい。
【0077】
図11は、上記のようにして生成されたTTYデバイスファイルを介してTTYクライアント201がサーバ側コンピュータ100に接続される構成を示す図である。なお、
図11では、接続を分かり良く示すために、
図10と同様の記載方法を用いている。
【0078】
図11に示すように、例えば、id0で識別される拠点に対してid0を埋め込んだ名前を持つTTYデバイスファイル(/dev/tty.id0)が生成される。アプリケーション103は、id0で識別される拠点との通信を行う際に、/dev/tty.id0のTTYデバイスファイルに対する読み書きを行う。このようにして、アプリケーション103は、通信の目的とする拠点のTTY機器20を探し出すことができるようになる。
【0079】
ところで、近年のパソコンや、小型Linux(登録商標)サーバBOXには、複数のUSBポートを搭載するのものも珍しくはなく、同一のTTY機器収容端末200に複数のTTY機器20が接続される可能性もある。この場合、TTY機器収容端末200内のデバイスドライバ203は1つであっても、TTY機器20ごとにデバイスファイル202が生成されるため、複数のデバイスファイル202が生成される。
【0080】
そして、TTYクライアント201からTTYサーバ101へのコネクションをデバイスファイルごとに生成することで、1つのTTYクライアント201からTTYサーバ101に向けて複数のコネクションを開設することもできる。
【0081】
この場合、
図7、
図8に示した手順がコネクション毎に実行されることで、サーバ側コンピュータ100におけるTTYデバイスファイル及びキャラクタデバイスファイルもコネクション毎に生成される。
【0082】
従って、サーバ側コンピュータ100におけるアプリケーション103は、同一TTYクライアント201に収容される異なる複数のTTY機器を、異なる複数のTTYデバイスファイル名で識別できる必要がある。
【0083】
この場合、単にTTYクライアント201の識別子やIPアドレスだけでTTYデバイスファイルを命名した場合には、TTYクライアント201における複数のTTY機器20を識別できないため、例えば、TTYデバイスファイル名にTTY機器が接続されるポート番号を付加する。また、TTYクライアント201のIDをコネクション毎に異なるように設定しておくこととしてもよい。
【0084】
例えば、IPアドレスとUSBポート番号で/dev/tty.192.168.0.1.0と/dev/tty.192.168.0.1.1のようにTTYデバイスファイルを命名することで、それらのファイルが同一のTTY機器収容端末200に接続された異なるTTY機器20に対応していることが分かる。
【0085】
図12に、1つのTTY機器収容端末200(id0で識別)に、4つのTTY機器20が接続される場合における接続構成例を示す。
図12に示すように、TTYデバイスファイル名として、id0に加えて、TTY機器20を接続するポート番号(port0等)が付加されることで、アプリケーション103は、目的とするTTY機器20と通信を行うことができる。例えば、アプリケーション103は、id0の拠点におけるport0に接続されるTTY機器20と通信を行う場合、/dev/tty.id0.port0のTTYデバイスファイルに対して読み書きを実施する。
【0086】
(TTYクライアント201とTTYサーバ101間のシグナリングについて)
TTYクライアント201とTTYサーバ101との間の通信は、TTY機器20とアプリケーション103間のデータに加え、TTYクライアント201とTTYサーバ101間でやり取りするデータも含む。
【0087】
例えば、前述したように、TTYクライアント201からTTYサーバ101に向けてTTYクライアント201側のID、ポート番号等を送信する。また、認証情報を送信してもよい。これにより、不正な端末の接続を防いだり、デバイスファイル名にTTYクライアントID等を埋め込むことが可能になる。
【0088】
また、例えば、TTY機器20の設置場所をIDとして、/dev/tty.tokyoや/dev/tty.osakaといった命名が可能になる。また、
図12の構成を実現する際には、IDに加えて、ポート番号を含める。
【0089】
また、TTYサーバ101からTTYクライアント201に向けては、TTY機器20とTTYクライアント201間の属性情報(通信パラメータ)をアプリケーション103から指示することが可能になる。例えば、TTY機器20によってはシリアル通信速度が9600bpsであったり、115200bpsだったりとさまざまであるが、収容機器の設置されている現場で個別に設定するのではなく、アプリケーション103からTTYサーバ101を介してTTYクライアント201に指示を出して、遠隔で通信パラメータを設定することが可能である。
【0090】
本実施の形態では、上記のようなTTYサーバ101とTTYクライアント201間のシグナリングを実現するために、TTYクライアント201とTTYサーバ101間で疎通しているデータがTTY機器20とアプリケーション103間のいわゆる通信データなのか、それともTTYクライアント201/TTYサーバ101間でやり取りされるいわゆるコントロールデータなのかを識別するための機能が組み込まれている。具体的には、TTYサーバ101は、TTYクライアント201に対してデータを送信する際に、当該データが、コントロールデータであるか通信データであるかを示すパケットヘッダを付加する。また、TTYクライアント201は、TTYサーバ101に対してデータを送信する際に、当該データが、コントロールデータであるか通信データであるかを示すパケットヘッダを付加する。
【0091】
ヘッダ付きのデータを受信したTTYクライアント201/TTYサーバ101は、当該ヘッダに基づき、例えば、IDのデバイスファイル名への設定のための処理や、TTY属性(通信パラメータ等)の設定のための処理を行うことができる。
【0092】
(その他の例)
これまでに説明した例は、シリアルインタフェースで端末10に接続されるTTY機器を対象としているが、本発明の適用範囲はシリアルインタフェースで通信する機器に限定されるわけではない。すなわち、汎用オペレーティングシステムで生成されるデバイスファイルであれば、他のタイプのものでも適用可能である。
【0093】
例えば、パラレルインタフェースで接続される機器にも本発明を適用可能である。具体的には、例えば、これまでに説明した方式を適用することで、拠点側のパラレルポート(パラレルインタフェースで接続される機器に対応するデバイスファイル)をセンタ側のコンピュータに仮想的に移動させることで、センタ側コンピュータから拠点側のコンピュータに接続されたプリンタ/dev/prnに対して印字を指示したり、また、拠点側のコンピュータに接続されているハードディスクデバイス/dev/sdaをあたかも自ホストに接続されているようにマウントすることも可能である。また、パラレルポートにプリンタ以外の機器を接続している場合には、遠隔印刷のアプリケーションではその機器をネットワーク化することは困難であり、本発明に係るデバイスファイル転送が有効になる。
【0094】
(実施の形態のまとめ)
以上、説明したように、本実施の形態により、アプリケーションとデバイスとの間でデータ通信の中継を行う通信中継システムであって、前記通信中継システムは、サーバ側コンピュータとデバイス収容端末とを備え、前記サーバ側コンピュータは、前記アプリケーションと、前記サーバ側コンピュータにおいて生成されたデバイスファイルと接続するとともに、前記デバイス収容端末とデータ通信を行うサーバ部と、前記デバイスファイルを生成して、前記アプリケーションと前記サーバ部とを接続する疑似デバイスドライバと、を備え、前記デバイス収容端末は、前記デバイスと接続するインタフェースと、前記デバイス収容端末において生成されたデバイスファイルを介して前記デバイスと接続するとともに、前記サーバ側コンピュータとデータ通信を行うクライアント部と、を備える通信中継システムが提供される。
【0095】
前記疑似デバイスドライバは、前記サーバ側コンピュータにおける前記デバイスファイルとして、第1のデバイスファイルと第2のデバイスファイルを生成し、当該第1のデバイスファイルと当該第2のデバイスファイルとを接続し、前記アプリケーションが前記第1のデバイスファイルに対してデータの読み書きを行い、前記サーバ部が前記第2のデバイスファイルに対してデータの読み書きを行うことにより、前記アプリケーションは前記デバイスとデータ通信を行うように構成してもよい。
【0096】
前記デバイス収容端末における前記クライアント部は、当該デバイス収容端末を識別するための識別情報を前記サーバ側コンピュータに通知し、前記サーバ側コンピュータは、当該サーバ側コンピュータおけるデバイスファイルとして、前記識別情報を含む名前を有するデバイスファイルを生成するようにしてもよい。
【0097】
前記デバイス収容端末における前記クライアント部は、当該デバイス収容端末において前記デバイスを接続するポート情報を前記サーバ側コンピュータに通知し、前記サーバ側コンピュータは、前記サーバ側コンピュータおけるデバイスファイルとして、前記ポート情報を含む名前を有するデバイスファイルを生成するようにしてもよい。
【0098】
前記サーバ側コンピュータおける前記サーバ部は、前記アプリケーションにより設定される属性情報を前記デバイス収容端末における前記クライアント部に通知し、前記クライアント部は、前記属性情報に基づいて前記デバイスとの通信に関するパラメータの設定を行うこととしてもよい。
【0099】
また、本実施の形態により、アプリケーションとデバイスとの間でデータ通信の中継を行う通信中継システムにおいて、前記アプリケーションを備えるサーバ側コンピュータに接続されるデバイス収容端末であって、前記デバイスと接続するインタフェースと、前記デバイス収容端末において生成されたデバイスファイルを介して前記デバイスと接続するとともに、前記サーバ側コンピュータとデータ通信を行うクライアント部とを備えるデバイス収容端末が提供される。
【0100】
また、本実施の形態により、アプリケーションとデバイスとの間でデータ通信の中継を行う通信中継システムにおいて、前記デバイスと接続されるデバイス収容端末とデータ通信を行うサーバ側コンピュータであって、前記アプリケーションと、前記サーバ側コンピュータにおいて生成されたデバイスファイルと接続するとともに、前記デバイス収容端末とデータ通信を行うサーバ部と、前記デバイスファイルを生成して、前記アプリケーションと前記サーバ部とを接続する疑似デバイスドライバとを備えるサーバ側コンピュータが提供される。
【0101】
また、本実施の形態により、アプリケーションとデバイスとの間でデータ通信の中継を行う通信中継システムが実行する通信中継方法であって、前記通信中継システムは、前記アプリケーションを備えるサーバ側コンピュータと、前記デバイスを接続するデバイス収容端末とを備え、前記デバイス収容端末が前記サーバ側コンピュータに接続要求を送信することにより、前記デバイス収容端末と前記サーバ側コンピュータとの間でコネクションを確立するステップと、前記サーバ側コンピュータが、前記アプリケーションによりデータの読み書きを行うサーバ側デバイスファイルを生成するステップと、前記サーバ側デバイスファイルと、前記デバイス収容端末における前記デバイスに対応するクライアント側デバイスファイルとを介して、前記アプリケーションと前記デバイスとの間のデータ通信の中継を行うステップとを備える通信中継方法が提供される。
【0102】
(第1項)
アプリケーションとデバイスとの間でデータ通信の中継を行う通信中継システムであって、
前記通信中継システムは、サーバ側コンピュータとデバイス収容端末とを備え、
前記サーバ側コンピュータは、
前記アプリケーションと、
前記サーバ側コンピュータにおいて生成されたデバイスファイルと接続するとともに、前記デバイス収容端末とデータ通信を行うサーバ部と、
前記デバイスファイルを生成して、前記アプリケーションと前記サーバ部とを接続する疑似デバイスドライバと、を備え、
前記デバイス収容端末は、
前記デバイスと接続するインタフェースと、
前記デバイス収容端末において生成されたデバイスファイルを介して前記デバイスと接続するとともに、前記サーバ側コンピュータとデータ通信を行うクライアント部と、を備える
ことを特徴とする通信中継システム。
(第2項)
前記疑似デバイスドライバは、前記サーバ側コンピュータにおける前記デバイスファイルとして、第1のデバイスファイルと第2のデバイスファイルを生成し、当該第1のデバイスファイルと当該第2のデバイスファイルとを接続し、
前記アプリケーションが前記第1のデバイスファイルに対してデータの読み書きを行い、前記サーバ部が前記第2のデバイスファイルに対してデータの読み書きを行うことにより、前記アプリケーションは前記デバイスとデータ通信を行う
ことを特徴とする第1項に記載の通信中継システム。
(第3項)
前記デバイス収容端末における前記クライアント部は、当該デバイス収容端末を識別するための識別情報を前記サーバ側コンピュータに通知し、
前記サーバ側コンピュータは、当該サーバ側コンピュータおけるデバイスファイルとして、前記識別情報を含む名前を有するデバイスファイルを生成する
ことを特徴とする第1項又は第2項に記載の通信中継システム。
(第4項)
前記デバイス収容端末における前記クライアント部は、当該デバイス収容端末において前記デバイスを接続するポート情報を前記サーバ側コンピュータに通知し、
前記サーバ側コンピュータは、前記サーバ側コンピュータおけるデバイスファイルとして、前記ポート情報を含む名前を有するデバイスファイルを生成する
ことを特徴とする第1項ないし第3項のうちいずれか1項に記載の通信中継システム。
(第5項)
前記サーバ側コンピュータおける前記サーバ部は、前記アプリケーションにより設定される属性情報を前記デバイス収容端末における前記クライアント部に通知し、
前記クライアント部は、前記属性情報に基づいて前記デバイスとの通信に関するパラメータの設定を行う
ことを特徴とする第1項ないし第4項のうちいずれか1項に記載の通信中継システム。
(第6項)
アプリケーションとデバイスとの間でデータ通信の中継を行う通信中継システムにおいて、前記アプリケーションを備えるサーバ側コンピュータに接続されるデバイス収容端末であって、
前記デバイスと接続するインタフェースと、
前記デバイス収容端末において生成されたデバイスファイルを介して前記デバイスと接続するとともに、前記サーバ側コンピュータとデータ通信を行うクライアント部と
を備えることを特徴とするデバイス収容端末。
(第7項)
コンピュータを、第6項に記載のデバイス収容端末における前記クライアント部として機能させるためのプログラム。
(第8項)
アプリケーションとデバイスとの間でデータ通信の中継を行う通信中継システムにおいて、前記デバイスと接続されるデバイス収容端末とデータ通信を行うサーバ側コンピュータであって、
前記アプリケーションと、
前記サーバ側コンピュータにおいて生成されたデバイスファイルと接続するとともに、前記デバイス収容端末とデータ通信を行うサーバ部と、
前記デバイスファイルを生成して、前記アプリケーションと前記サーバ部とを接続する疑似デバイスドライバと
を備えることを特徴とするサーバ側コンピュータ。
(第9項)
コンピュータを、第8項に記載のサーバ側コンピュータにおける前記サーバ部及び前記疑似デバイスドライバとして機能させるためのプログラム。
(第10項)
アプリケーションとデバイスとの間でデータ通信の中継を行う通信中継システムが実行する通信中継方法であって、前記通信中継システムは、前記アプリケーションを備えるサーバ側コンピュータと、前記デバイスを接続するデバイス収容端末とを備え、
前記デバイス収容端末が前記サーバ側コンピュータに接続要求を送信することにより、前記デバイス収容端末と前記サーバ側コンピュータとの間でコネクションを確立するステップと、
前記サーバ側コンピュータが、前記アプリケーションによりデータの読み書きを行うサーバ側デバイスファイルを生成するステップと、
前記サーバ側デバイスファイルと、前記デバイス収容端末における前記デバイスに対応するクライアント側デバイスファイルとを介して、前記アプリケーションと前記デバイスとの間のデータ通信の中継を行うステップと
を備えることを特徴とする通信中継方法。
本発明は、上記の実施の形態に限定されることなく、特許請求の範囲内において、種々変更・応用が可能である。