説明

ソケットAPIコール・エミュレーションの方法およびシステム

【課題】アプリケーションと非ネットワーク型I/Oデバイスとの間の通信を容易にするソケットAPIコール・エミュレーションの方法およびシステムを提供する。
【解決手段】本発明に係るソケットAPIコール・エミュレーションの方法およびシステムは、アプリケーションから非ネットワーク型I/Oデバイスまでの途中で、IP対応のソケットAPIコールを補足し、修正する。そのため、このようなIP対応のソケットAPIコールは、IP非対応のI/Oアクセスコールとして非ネットワーク型I/Oデバイスに受け取られる。本発明によれば、アプリケーションはソケットAPIコールを用いて全てのタイプのエンティティと通信することができる。したがって、本発明によれば、アプリケーション開発者の負荷を軽減することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、アプリケーションと非ネットワーク型のI/O(入出力:input/output)デバイスに関し、特に、コンピュータデバイス上で実行されるアプリケーションと当該コンピュータデバイスに直接接続される非ネットワーク型のI/Oデバイスとの間の通信を円滑に行うために、ソケットアプリケーションプログラミングインターフェース(ソケットAPI)をエミュレートする方法およびシステムに関する。
【背景技術】
【0002】
コンピュータデバイス上で実行されるアプリケーションは、他のエンティティと通信するために、アプリケーションプログラミングインターフェース(API:application programming interface)コールを利用する。APIコールは、宛先の機器(エンティティ)に依存する種々の伝送機構を利用して処理される。発信元のアプリケーションがあるコンピュータデバイスが到達可能なネットワーク接続されたI/Oデバイス上のアプリケーションを宛先とするAPIコールは、IP(インターネットプロトコル)対応の伝送機構(例えばIPパケット)を利用して処理されるソケットAPIコールでありうる。これに対し、発信元のアプリケーションがあるコンピュータデバイスに直接接続される非ネットワーク型のI/Oデバイス上のアプリケーションを宛先とするAPIコールは、非ネットワーク型のI/OデバイスによってサポートされるIP非対応の伝送機構を利用して処理されうる。非ネットワーク型のI/Oデバイスには、例えば、RS−232(COM)、ユニバーサルシリアルバス(USB)、IEEE標準規格1284(パラレルポート)、および/または、IEEE標準規格1394(FireWire(登録商標))のI/Oデバイス等がある。ここで、ソケットAPIは、一般的にはアプリケーションがネットワークで接続された他のコンピュータデバイスで動作するアプリケーションと通信するために、アプリケーションによってコールされる、OS等が用意しているソフトウェアである。また、TCP/IPプロトコルスタックは、ネットワーク接続されたコンピュータ間においてTCP/IPプロトコルに従ってデータの送受信を行うソフトウェアである。
【0003】
特許文献1には、通信手段のテスト装置内の通信制御プログラムの構造を、API制御部、プロトコル制御部、ドライバの3つの階層に明確に分離したものが開示されている。これによれば、プロトコル制御部を介してデータ転送が行われる本番用パスに加え、プロトコル制御部を介さずにAPIとドライバ間でそのままデータ転送が行われるテスト用パスを設けて、本番用パスとテスト用パスを折り返し接続する構成としている。これによって、専用のテスト装置を準備することなくこのテスト装置だけでプロトコルのテストを行うことが可能となり、テストの簡便化および低コスト化を図ることができる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平7−302234号公報(1995年11月14日公開)
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上記従来の構成では、下記の問題を生じる。
【0006】
種々の伝送機構間の違いのせいで、アプリケーション開発者は慣習的に、アプリケーションが通信するエンティティの各タイプ毎に、個別のコードおよび付属文書を開発し、かつ保守しなければならなかった。このように個別のコードおよび付属文書が要求されることは、ソフトウェア開発において費やされる時間および費用が増大することに繋がり、またコードの複雑さを増大させる。
【0007】
本発明は、上記の問題点に鑑みてなされたものであり、その目的は、アプリケーションと非ネットワーク型I/Oデバイスとの間の通信を容易にするソケットAPIコール・エミュレーションの方法およびシステムを提供することである。
【課題を解決するための手段】
【0008】
本発明に係る一態様において、コンピュータデバイスは、非ネットワーク型I/Oデバイスを利用するアプリケーションを実行するアプリケーション実行部と、上記アプリケーション実行部と接続可能なソケットAPIを実行するソケット実行部と、上記ソケット実行部と接続可能であり、上記非ネットワーク型I/Oデバイスに対応する非ネットワーク型I/Oデバイスドライバを実行するドライバ実行部とを含み、上記ソケット実行部は、上記アプリケーション実行部からソケットAPIコールを受け取ると、上記ソケットAPIコールに含まれるIPアドレスに基づき、上記ソケットAPIコールの宛先が上記非ネットワーク型I/Oデバイスであるか否かを判定し、上記ソケットAPIコールの宛先が上記非ネットワーク型I/Oデバイスであると判定した場合、上記ソケットAPIコールに対応するIP非対応のI/Oアクセスコールを、上記ドライバ実行部に配送することを特徴としている。
【0009】
本発明に係る他の態様において、コンピュータデバイスは、アプリケーションと、上記アプリケーションと接続可能なソケットAPIと、上記ソケットAPIと接続可能な非ネットワーク型I/Oデバイスドライバとを含み、上記ソケットAPIは、上記アプリケーションからソケットAPIコールを受け取り、上記ソケットAPIコールに対応するIP非対応のI/Oアクセスコールを、上記ソケットAPIコールに含まれるIPアドレスに基づいた上記非ネットワーク型I/Oデバイスドライバに、選択的に配送することを特徴としている。
【0010】
また、上記IPアドレスは、ループバックアドレスであってもよい。
【0011】
また、上記ソケットAPIは、上記IPアドレスが上記非ネットワーク型I/Oデバイスドライバに関連する非ネットワーク型I/Oデバイスポートに割り振られていると判定した場合、上記IP非対応のI/Oアクセスコールを、上記非ネットワーク型I/Oデバイスドライバに配送してもよい。
【0012】
また、上記ソケットAPIは、上記IPアドレスが上記非ネットワーク型I/Oデバイスドライバに関連する非ネットワーク型I/Oデバイスポートに割り振られていないと判定した場合、上記ソケットAPIコールを、TCP/IPプロトコルスタックに配送してもよい。
【0013】
また、上記非ネットワーク型I/Oデバイスドライバは、COM(RS−232)、USB、パラレルポート、またはFireWire(登録商標)のデバイスドライバであってもよい。
【0014】
また、上記ソケットAPIは、上記ソケットAPIコールに対応するIP非対応のI/Oアクセスコールを、上記ソケットAPIコールに含まれるTCPポート番号および上記IPアドレスに基づいた上記非ネットワーク型I/Oデバイスドライバに、選択的に配送してもよい。
【0015】
また、上記ソケットAPIはエミュレーションモジュールを含み、上記エミュレーションモジュールは、上記ソケットAPIコールに対応するIP非対応のI/Oアクセスコールを、上記ソケットAPIコールに含まれる上記IPアドレスに基づいた上記非ネットワーク型I/Oデバイスドライバに、選択的に配送してもよい。
【0016】
本発明に係るさらに他の態様において、非ネットワーク型I/Oデバイスを利用するアプリケーションを実行するアプリケーション実行部と、上記アプリケーション実行部と接続可能なソケットAPIを実行するソケット実行部と、上記ソケット実行部と接続可能であり上記非ネットワーク型I/Oデバイスに対応する非ネットワーク型I/Oデバイスドライバを実行するドライバ実行部とを含むコンピュータデバイスにおけるソケットAPIコール・エミュレーションの方法は、上記ソケット実行部が、上記アプリケーション実行部からソケットAPIコールを受け取る受領ステップと、上記ソケット実行部が、上記ソケットAPIコールに含まれるIPアドレスに基づき、上記ソケットAPIコールの宛先が上記非ネットワーク型I/Oデバイスであるか否かを判定する判定ステップと、上記ソケットAPIコールの宛先が上記非ネットワーク型I/Oデバイスであると判定した場合、上記ソケット実行部が、上記ソケットAPIコールに対応するIP非対応のI/Oアクセスコールを、上記ドライバ実行部に配送する配送ステップとを含むことを特徴としている。
【0017】
本発明に係るさらに他の態様において、ソケットAPIコール・エミュレーションの方法は、アプリケーションからソケットAPIコールを受け取る受領ステップと、上記ソケットAPIコールに含まれるIPアドレスを調べる調査ステップと、上記ソケットAPIコールに対応するIP非対応のI/Oアクセスコールを、上記IPアドレスに基づいた非ネットワーク型I/Oデバイスドライバに、選択的に配送する配送ステップとを含むことを特徴としている。
【0018】
また、上記IPアドレスは、ループバックアドレスであってもよい。
【0019】
また、上記配送ステップにおいては、上記IPアドレスが上記非ネットワーク型I/Oデバイスドライバに関連する非ネットワーク型I/Oデバイスポートに割り振られていると判定した場合、上記IP非対応のI/Oアクセスコールを、上記非ネットワーク型I/Oデバイスドライバに配送してもよい。
【0020】
また、上記配送ステップにおいては、上記IPアドレスが上記非ネットワーク型I/Oデバイスドライバに関連する非ネットワーク型I/Oデバイスポートに割り振られていないと判定した場合、上記ソケットAPIコールを、TCP/IPプロトコルスタックに配送してもよい。
【0021】
また、上記非ネットワーク型I/Oデバイスドライバは、COM(RS−232)、USB、パラレルポート、またはFireWire(登録商標)のデバイスドライバであってもよい。
【0022】
また、上記調査ステップは、上記ソケットAPIコールに含まれるTCPポート番号を調べるステップをさらに含み、上記配送ステップは、上記IP非対応のI/Oアクセスコールを、上記IPアドレスおよび上記TCPポート番号に基づいた上記非ネットワーク型I/Oデバイスドライバに、選択的に配送してもよい。
【0023】
本発明に係るさらに他の態様において、コンピュータデバイスは、アプリケーションと、上記アプリケーションと接続可能なソケットAPIとを含み、上記ソケットAPIは、上記アプリケーションからソケットAPIコールを受け取り、上記ソケットAPIコールに含まれるIPアドレスに基づいて上記ソケットAPIコールの宛先として非ネットワーク型I/Oデバイスポートを特定することを特徴としている。
【0024】
また、上記IPアドレスは、ループバックアドレスであってもよい。
【0025】
また、上記非ネットワーク型I/Oデバイスポートは、COM(RS−232)ポートであってもよい。
【0026】
また、上記非ネットワーク型I/Oデバイスポートは、USBポートであってもよい。
【0027】
また、上記非ネットワーク型I/Oデバイスポートは、パラレルポートであってもよい。
【0028】
また、上記非ネットワーク型I/Oデバイスポートは、FireWire(登録商標)ポートであってもよい。
【発明の効果】
【0029】
本発明に係るコンピュータデバイスは、アプリケーションと、上記アプリケーションと接続可能なソケットAPIと、上記ソケットAPIと接続可能な非ネットワーク型I/Oデバイスドライバとを含み、上記ソケットAPIは、上記アプリケーションからソケットAPIコールを受け取り、上記ソケットAPIコールに対応するIP非対応のI/Oアクセスコールを、上記ソケットAPIコールに含まれるIPアドレスに基づいた上記非ネットワーク型I/Oデバイスドライバに、選択的に配送することを特徴としている。そのため、アプリケーションはIP対応のソケットAPIコールを使用することにより、非ネットワーク型I/Oデバイスと通信を行うことができる。このように、非ネットワーク型I/OデバイスへのソケットAPIコールをエミュレートすることにより、非ネットワーク型I/Oデバイスおよびネットワーク接続型I/Oデバイスとの通信機能に関わるアプリケーションのコードの一部を共通にすることができ、アプリケーション開発の負荷を軽減することができる。
【図面の簡単な説明】
【0030】
【図1】本発明の実施形態のコンピュータデバイスを示すブロック図である。
【図2】本発明の実施形態のコンピュータデバイス上で実行可能なソフトウェアを示すブロック図である。
【図3】本発明の実施形態における、アプリケーションによって発信されたソケットAPIコールをコンピュータデバイス上でエミュレーションする方法を示すフロー図である。
【図4】コンピュータデバイス上のソケットAPIコール・エミュレーションと連携して実行可能なアプリケーションの仮のコードを示す図である。
【図5】コンピュータデバイス上のソケットAPIコール・エミュレーションと連携して実行可能なアプリケーションの仮のコードを示す図である。
【図6】コンピュータデバイス上のソケットAPIコール・エミュレーションと連携して実行可能なアプリケーションの仮のコードを示す図である。
【発明を実施するための形態】
【0031】
本発明の上述したまたは他の態様については、以下の詳細な記述と上述の図面とを参照することによってよりよく理解できるだろう。もちろん、本発明は特許請求の範囲の記載によって規定される。
【0032】
本発明は、基本的な特徴において、アプリケーションと非ネットワーク型I/Oデバイスとの間の通信を容易にするソケットAPIコール・エミュレーションの方法およびシステムを提供する。本発明によれば、アプリケーションから発信されたIP対応のソケットAPIコールが非ネットワーク型I/Oデバイスに到達するまでの間で、IP対応のソケットAPIコールが補足され、IP非対応のI/Oアクセスコールに修正される。そのため、このようなIP対応のソケットAPIコールは、IP非対応のI/Oアクセスコールとして非ネットワーク型I/Oデバイスに受け取られる。本発明によれば、アプリケーションはソケットAPIコールを用いて全てのタイプのエンティティと通信することができる。したがって、本発明によれば、アプリケーションが通信する非ネットワーク型I/Oデバイスのタイプ毎に、個別のコードおよび説明文書を記述、デバッグ、および編集するアプリケーション開発者の負荷を軽減することができる。ある実施形態では、アプリケーションと非ネットワーク型I/Oデバイスに関連するデバイスドライバと接続可能なソケットAPIの中のエミュレーションモジュールによって、ソケットAPIコール・エミュレーションが実行される。
【0033】
<コンピュータデバイスの構成>
図1は、本発明に係る一実施形態におけるコンピュータデバイス100を示すブロック図である。コンピュータデバイス100は、演算装置140、ユーザインターフェース110、非ネットワーク型I/Oデバイスポート120、ネットワーク接続型I/Oデバイスポート130、および記憶装置150を備える。演算装置140は、ユーザインターフェース110、非ネットワーク型I/Oデバイスポート120、ネットワーク接続型I/Oデバイスポート130、および記憶装置150と通信可能に接続されている。コンピュータデバイス100は、例えば、パーソナルコンピュータ、パーソナルデータアシスタント(PDA)、携帯電話、または複合機(多機能周辺装置:MFP)であってもよい。
【0034】
ユーザインターフェース110は、1つ以上の入力装置を介してコンピュータデバイス100のユーザからの入力を受け付けて、1つ以上の出力装置を介してユーザに対して出力を表示する。出力装置は、液晶ディスプレイ(LCD)または有機発光ダイオード(OLED)のような表示装置を含む。入力装置は、例えば、指あるいはスタイラスペンで操作可能なタッチスクリーン、スクロールホイールあるいはスクロールボール、キーパッド、および/または、音声指示入力モジュールを含む。
【0035】
非ネットワーク型I/Oデバイスポート120は、有線で接続された非ネットワーク型I/Oデバイス122へ情報を送信し、非ネットワーク型I/Oデバイス122から情報を受信する有線の通信インターフェースである。非ネットワーク型I/Oデバイス122は、例えば、パーソナルコンピュータ、PDA、携帯電話、複合機、サーバ装置、またはデータ記憶装置であってもよい。非ネットワーク型I/Oデバイスポート120は、例えば、COM、USB、パラレルポート、またはFireWire(登録商標)インターフェースのような、シリアルまたはパラレルのインターフェースであってもよい。ある実施形態では、コンピュータデバイス100は、複数の非ネットワーク型I/Oデバイスのそれぞれへ情報を送信し、各非ネットワーク型I/Oデバイスから情報を受信するために種々のタイプの複数の非ネットワーク型I/Oデバイスポートを有する。
【0036】
ネットワーク接続型I/Oデバイスポート130は、ネットワーク134の向こうにあるネットワーク接続されたI/Oデバイス(例えば符号132)に情報を送信し、該I/Oデバイスから情報を受信する有線または無線の通信インターフェースである。ネットワーク134は、有線または無線の通信回線と、ルータ、スイッチおよび/またはブリッジのような接続デバイスとを有する。ネットワーク接続されたI/Oデバイス132は、例えば、パーソナルコンピュータ、PDA、携帯電話、複合機、サーバ装置、またはデータ記憶装置であってもよい。ネットワーク接続型I/Oデバイスポート130は、例えば、有線のイーサネット(登録商標)インターフェース、無線のイーサネット(登録商標)インターフェース(例えばWiFi(登録商標)のインターフェース)、携帯電話のネットワークインターフェース、または、WiMAX(Worldwide Interoperability for Microwave Access)インターフェースであってもよい。
【0037】
演算装置140は、コンピュータデバイス100によって動作がサポートされるソフトウェアを実行する。図2は、本発明の一実施形態のコンピュータデバイス上で実行可能なソフトウェアを示す図である。演算装置140によって実行可能なコンピュータデバイス100のソフトウェア200は、アプリケーション210、ソケットAPI220、TCP/IPプロトコルスタック230、非ネットワーク型I/Oデバイスドライバ240、およびネットワーク接続型I/Oデバイスドライバ250を含む。ソケットAPI220は、エミュレーション・モジュール225およびデータ記憶部226とを含む。データ記憶部226は、非ネットワーク型I/Oデバイスポート120に割り当てられたIPアドレスを記憶する。演算装置140によって実行可能な上記ソフトウェアの各要素は、記憶装置150に保存される。記憶装置150は、1つ以上のランダムアクセスメモリ(RAM)、および1つ以上のリードオンリーメモリ(ROM)を含んでもよい。ある実施形態においては、ソケットAPI220、TCP/IPプロトコルスタック230、非ネットワーク型I/Oデバイスドライバ240、およびネットワーク接続型I/Oデバイスドライバ250は、オペレーティングシステムの一部として組み込まれている。なお、図2の各ブロックは、対応するソフトウェアの各要素を実行する実行部(すなわち、アプリケーションを実行するアプリケーション実行部210、ソケットAPIを実行するソケット実行部220、エミュレーションモジュールを実行するエミュレーション実行部225、TCP/IPプロトコルスタックを実行するプロトコル実行部230、非ネットワーク型I/Oデバイスドライバを実行する第1ドライバ実行部240、およびネットワーク接続型I/Oデバイスドライバを実行する第2ドライバ実行部250)として表現することもできる。
【0038】
アプリケーション210は、ソケットAPIコールを生成し、ソケットAPIコールをソケットAPI220に送信する。これによって、アプリケーション210は、非ネットワーク型I/Oデバイスドライバ240および非ネットワーク型I/Oデバイスポート120を介して、非ネットワーク型I/Oデバイス122と通信する。同様にソケットAPIコールによって、アプリケーション210は、TCP/IPプロトコルスタック230、ネットワーク接続型I/Oデバイスドライバ250、およびネットワーク接続型I/Oデバイスポート130を介して、ネットワーク接続されたI/Oデバイス132と通信する。ソケットAPIコールは、IP対応(IP-aware:宛先をIPを用いて認識する)のコールであり、コールの宛先を特定するためにIPアドレス指定を用いる。
【0039】
ソケットAPI220は、アプリケーション210と非ネットワーク型I/Oデバイス122との間の通信を可能にするために、アプリケーション210にインターフェースで接続し、かつエミュレーションモジュール225を介して非ネットワーク型I/Oデバイスドライバ240にインターフェースで接続する。ソケットAPI220はまた、アプリケーション210とネットワーク接続されたI/Oデバイス132上のアプリケーションとの間の通信を可能にするために、TCP/IPプロトコルスタック230にインターフェースで接続する。ソケットAPI220は、アプリケーション210から受け取ったソケットAPIコールを処理する。該処理において、ソケットAPI220は、データセッションのためのエンドポイントを与えるソケットを生成し、I/Oエンティティ(機器)に割り当てられた宛先のIPアドレスにソケットを結合させる。また、ソケットAPI220は、それらのソケットが不要になると、ソケットの結合を解除してソケットをクローズする。このようなソケットとして、非ネットワーク型I/Oデバイスポート120に割り当てられたIPアドレスに結合されたソケット、およびネットワーク接続型I/Oデバイスポート130に割り当てられたIPアドレスに結合されたソケットが含まれる。
【0040】
エミュレーションモジュール225は、ソケットAPI220のソフトウェアによるサブシステムである。エミュレーションモジュール225は、アプリケーション210と非ネットワーク型I/Oデバイス122とが途切れることなく通信することを可能にするために、ソケットAPIコール・エミュレーションを実行する。ソケットAPI220がアプリケーション210からソケットAPIコールを受け取ると、エミュレーションモジュール225は、当該ソケットAPIコールを調べ、IP対応の当該ソケットAPIコールに含まれる宛先IPアドレスがデータ記憶部226に記憶されているかどうかを判定する。当該ソケットAPIコールに含まれる宛先IPアドレスがデータ記憶部226に記憶されている場合、当該ソケットAPIコールは非ネットワーク型I/Oデバイス122のためのものであることを意味し、さらなる処理のために、ソケットAPI220は、当該ソケットAPIコールに対応したIP非対応(宛先をIPで認識しない)のI/Oアクセスコールを非ネットワーク型I/Oデバイスドライバ240に配送する。他方、当該ソケットAPIコールに含まれる宛先IPアドレスがデータ記憶部226に記憶されていない場合、さらなる処理のために、ソケットAPI220は、当該ソケットAPIコールをTCP/IPプロトコルスタック230に配送する。
【0041】
ある実施形態では、非ネットワーク型I/Oデバイスポート120に割り当てられたIPアドレスはループバックアドレスである。IPバージョン4(IPv4)における127.0.0.0から127.255.255.255までの範囲のアドレスは、内部のループバック機能のために予約されており、ネットワーク接続されたどのI/Oデバイスにも転送されない。非ネットワーク型I/Oデバイスポート120にループバックアドレスを割り当てることにより、非ネットワーク型I/Oデバイスポート120に割り当てられたIPアドレスが、ネットワーク接続されたI/Oデバイスに割り当てられたアドレスと衝突することがなく、さらに、ネットワーク接続されたI/Oデバイスに割り当てることができるIPアドレスを節約することができる。コンピュータデバイス100が複数の非ネットワーク型I/Oデバイスポートを有している場合、非ネットワーク型I/Oデバイスポートのそれぞれには、別個のループバックアドレス(例えば、COMポート=127.0.1.1、パラレルポート=127.0.2.1、等)が割り当てられている。そして、それら割り当てられたループバックアドレスの全てがデータ記憶部226に記憶されているので、エミュレーションモジュール225(およびアプリケーション210)は、複数の非ネットワーク型I/Oデバイスポートについて区別し、個別にアドレス指定することができ、それらの非ネットワーク型I/Oデバイスのそれぞれと通信することができる。
【0042】
ある実施形態では、ループバックアドレスのある範囲が非ネットワーク型I/Oデバイスポートのタイプに割り当てられている。例えば、COMポートには、127.0.1.1から127.0.1.255の範囲のループバックアドレスが割り当てられ、パラレルポートには、127.0.2.1から127.0.2.255の範囲のループバックアドレスが割り当てられ、USBポートには、127.0.3.1から127.0.3.255の範囲のループバックアドレスが割り当てられる。
【0043】
TCP/IPプロトコルスタック230は、ソケットAPI220とネットワーク接続型I/Oデバイスドライバ250とを結びつけるプロトコルスタックである。TCP/IPプロトコルスタック230は、プロトコルを実装するソフトウェアからなっている。TCP/IPプロトコルスタック230は、従来のTCP接続を介してアプリケーション210がネットワーク接続されたI/Oデバイス132上のアプリケーションと通信できるようにする。TCP/IPプロトコルスタック230は、ソケットAPI220とネットワーク接続型I/Oデバイスドライバ250との間でソケットAPIコールを処理し、TCPセッションおよびIPデータグラムサービスを提供し、エラー処理およびデータバッファリングを行う。
【0044】
非ネットワーク型I/Oデバイスドライバ240は、エミュレーションモジュール225と非ネットワーク型I/Oデバイスポート120とを結びつけるソフトウェアである。非ネットワーク型I/Oデバイスドライバ240は、アプリケーション210が非ネットワーク型I/Oデバイス122と通信できるようにする。非ネットワーク型I/Oデバイスドライバ240は、エミュレーションモジュール225からIP非対応のI/Oアクセスコールを受け取り、当該コールを処理する。非ネットワーク型I/Oデバイスドライバ240は、例えば、COM、USB、パラレルポート、またはFireWire(登録商標)のデバイスドライバであってもよい。
【0045】
ネットワーク接続型I/Oデバイスドライバ250は、TCP/IPプロトコルスタック230とネットワーク接続型I/Oデバイスポート130とを結びつけるソフトウェアである。ネットワーク接続型I/Oデバイスドライバ250は、従来のTCP接続を介してアプリケーション210がネットワーク接続されたI/Oデバイス132と通信できるようにする。ある実施形態では、ネットワーク接続型I/Oデバイスドライバ250は、メディアアクセスコントロール(MAC)および論理リンク制御(LLC)サービスを提供する。
【0046】
<ソケットAPIコール・エミュレーションの方法>
図3は、本発明に係る一実施形態のコンピュータデバイス100上で、アプリケーション210から発信されたソケットAPIコール・エミュレーションの方法を示す図である。ソケットAPI220はアプリケーション210からソケットAPIコールを受け取る(S310)。エミュレーションモジュール225は、ソケットAPIコールに含まれる宛先IPアドレスを調べ、データ記憶部226に保存されたデータを参考にして、当該ソケットAPIコールが非ネットワーク型I/Oデバイスポート120に宛てられたものか否かを判定する(S320)。ここで、非ネットワーク型I/Oデバイスポート120は、データ記憶部226に保存されたマッチのためのアドレスによって示される。当該ソケットAPIコールが非ネットワーク型I/Oデバイスポート120に宛てられたものである場合、エミュレーションモジュール225は、非ネットワーク型I/Oデバイスポート120に関連する非ネットワーク型I/Oデバイスドライバ240へのソケットAPIコールに対応するIP非対応のI/Oアクセスコールを生成する。そして、さらなる処理が行われ、最終的にIP非対応のI/Oアクセスコールが非ネットワーク型I/Oデバイス122に配送される(S330)。IP非対応のI/Oアクセスコールは、該ソケットAPIコールと同じファンクション(機能)をアドレス指定するが、IPによるアドレス指定またはIPによる伝送機構は使用しない。当該ソケットAPIコールが非ネットワーク型I/Oデバイスポート120に宛てられたものではない場合、ソケットAPI220は、さらなる処理のために、IP対応のソケットAPIコールをTCP/IPプロトコルスタック230に配送する(S340)。
【0047】
ある実施形態では、非ネットワーク型I/Oデバイスポート120のIPアドレスを記憶するデータ記憶部226は、非ネットワーク型I/Oデバイスポート120に対応するIPアドレスおよびTCPポート番号の両方を含む。この実施形態では、ソケットAPI220がアプリケーション210からのソケットAPIコールを受け取ると、エミュレーションモジュール225は、ソケットAPIコールに含まれる宛先IPアドレスおよびTCPポート番号を調べ、データ記憶部226に保存されたデータを参考にして、当該ソケットAPIコールが非ネットワーク型I/Oデバイスポート120に宛てられたものか否かを判定する。ここで、非ネットワーク型I/Oデバイスポート120は、データ記憶部226に保存されたマッチのためのアドレスおよびポート番号によって示される。当該ソケットAPIコールが非ネットワーク型I/Oデバイスポート120に宛てられたものである場合、エミュレーションモジュール225は、非ネットワーク型I/Oデバイスポート120に関連する非ネットワーク型I/Oデバイスドライバ240へのソケットAPIコールに対応するIP非対応のI/Oアクセスコールをを生成する。そして、さらなる処理が行われ、最終的にIP非対応のI/Oアクセスコールが非ネットワーク型I/Oデバイス122に配送される。
【0048】
上述したように、本発明の実施形態のコンピュータデバイス100は、例えば、複合機(多機能周辺装置:MFP)などに適用される。本願出願人の提唱するシステム(Sharp OSA(登録商標))では、SOAP(Simple Object Access Protocol)をベースとして、PC(パーソナルコンピュータ)上で動作するアプリケーションと複合機の機能とを連携し、複合機がトータルアプリケーションシステムの一部となって動作することができる。これにより、複合機の機能とPCの機能とを適宜組み合わせた柔軟性のあるサービスの構築を容易に行うことができる(シャープ株式会社、[online]、[平成21年5月12日検索]、インターネット〈URL:http://www.sharp.co.jp/print/osa/index.html〉 参照)。本実施形態のコンピュータデバイス100は、このような複合機に適用することができる。
【0049】
具体的には、PC上で動作するアプリケーションと複合機の機能とを連携させた上記のシステムでは、複合機に内部実装されたアプリケーション(OSA(オープンシステムアーキテクチャー)アプリ)は、ソケットAPIによる機能呼び出し(ファンクションコール)を行なう。ここで、ファンクションコールとしては、複合機にUSB等でローカル接続された機器(非ネットワーク型I/Oデバイス)の機能を呼び出すもの、および、複合機にIP対応のネットワークで接続されたPC等の機器(ネットワーク接続型I/Oデバイス)の機能を呼び出すものが存在する。そこで、本発明の実施形態のコンピュータデバイス100を適用することで、ソケットAPI220は、IP対応のソケットAPIコールの宛先が、非ネットワーク型I/Oデバイス122であるか、ネットワーク接続型I/Oデバイス132であるかを判定することができる。そして、非ネットワーク型I/Oデバイス122宛てである場合は、当該ソケットAPIコールに対応するIP非対応のI/Oアクセスコールを使用して非ネットワーク型I/Oデバイスの機能をコールし、ネットワーク接続型I/Oデバイス132当てである場合は、当該ソケットAPIコールを使用してネットワーク接続型I/Oデバイスの機能をコールする。これにより、複合機に内部実装されたアプリケーションは、IP対応のソケットAPIコールを用いて種々のタイプのローカル接続された機器と通信することができる。そのため、通信機能に関してローカル接続のタイプ毎に個別のコードを作成する必要がなく、アプリケーション開発が容易になる。
【0050】
また本発明によれば、複合機に内部実装されたアプリケーションからファンクションコールを行い、当該複合機にローカル接続された機器(非ネットワーク型I/Oデバイス)を動作させる場合でも、ローカル接続された機器のデバイスドライバ(非ネットワーク型I/Oデバイスドライバ)として、当該複合機とネットワーク接続された上記PC上で動作するアプリケーションからファンクションコールを行って当該複合機にローカル接続された機器を動作させる場合と同じデバイスドライバを使用することができる。そのため、複合機に内部実装されたアプリケーションに対して新たにデバイスドライバを開発する必要がなく、アプリケーション開発が容易になる。
【0051】
図4〜6は、コンピュータデバイス上のソケットAPIコール・エミュレーションと連携して実行可能なアプリケーションの仮のコードを示す図である。上記仮のコードは、ソケットAPIがソケットAPIコール・エミュレーションの機能をサポートする場合に、どのようにアプリケーション上のソケットAPIインターフェースのコードが単純化されるかの具体例を説明するものである。この具体例では、コンピュータデバイスは複合機である。上記仮のコードは、複数のI/Oデバイスポートから複合機へ入力される印刷用データを処理するためのイベントリスナー(イベント監視)のコードである。上記複数のI/Oデバイスポートは、ネットワーク接続型I/Oデバイスポート(イーサネット(登録商標))、および2つの非ネットワーク型I/Oデバイスポート(COMおよびLPT)を含む。LPTは、ラインプリントターミナル(Line Print Terminal)の略であり、パラレルポートである。TCP/IPに基づくソケットAPIコールに関する共通のセットが、複数のI/Oデバイスポートから入力される印刷用データを読み取ることに利用されるために、コーディング効率が向上する。上述したいくつかの実施形態のように、非ネットワーク型I/Oデバイスポートに関連する非ネットワーク型I/Oデバイスドライバとアプリケーションとの間で動作可能なように結合されたソケットAPI上のエミュレーションモジュールが、ソケットAPIコール・エミュレーションを実行するので、共通のセットを使用することが可能になる。
【0052】
最初に図4を参照する。複数のI/Oデバイスポートに対応して、TCP/IPに基づくソケットが、socket()コールを用いて生成され、それぞれの宛先にbind()コールを用いて結びつけられる。COMポートは、ループバックIPアドレス127.0.1.1およびTCPポート番号9101に割り当てられる。LPTポートは、ループバックIPアドレス127.0.2.1およびTCPポート番号9102に割り当てられる。
【0053】
次に図5を参照する。上記TCP/IPに基づくソケットは、listen()コールを用いて監視ポートにされ、上記TCP/IPに基づくソケットは、複数のI/Oデバイスポートに入力される接続要求を待つ。接続要求は、例えばソケットAPIconnect()コール等である。複数のI/Oデバイスポートの一つが外部からの接続要求を受け取ると、accept()コールによって接続が受け入れられる。
【0054】
最後に図6を参照する。入力された印刷用データは、受け入れられた接続において、recv()コールを用いて読み取られ、処理される。その後、当該接続はclose()コールを用いてクローズされる。
【0055】
ここに記載した本発明の精神または本質的特徴から逸脱すること無しに、本発明を他の具体的形式で実施することができることは、当業者であれば理解できるであろう。それゆえ、上述の説明は、制限するためではなく説明するためになされたものである。本発明の範囲は請求項によって示されており、それらと同等の手段および同等の範囲による変更の全ての結果も、本発明の範囲に包含される。
【0056】
最後に、ソケットAPI220を含むソフトウェア200の各ブロックは、ハードウェアロジックによって構成してもよいし、次のようにCPUを用いてソフトウェアによって実現してもよい。
【0057】
すなわち、コンピュータデバイス100は、各機能を実現する制御プログラムの命令を実行するCPU(central processing unit)、上記プログラムを格納したROM(read only memory)、上記プログラムを展開するRAM(random access memory)、上記プログラムおよび各種データを格納するメモリ等の記憶装置(記録媒体)などを備えている。そして、本発明の目的は、上述した機能を実現するソフトウェア200のプログラムコード(実行形式プログラム、中間コードプログラム、ソースプログラム)をコンピュータで読み取り可能に記録した記録媒体を、上記コンピュータデバイス100に供給し、そのコンピュータデバイス100(またはCPUやMPU)が記録媒体に記録されているプログラムコードを読み出し実行することによっても、達成可能である。
【0058】
上記記録媒体としては、例えば、磁気テープやカセットテープ等のテープ系、フロッピー(登録商標)ディスク/ハードディスク等の磁気ディスクやCD−ROM/MO/MD/DVD/CD−R等の光ディスクを含むディスク系、ICカード(メモリカードを含む)/光カード等のカード系、あるいはマスクROM/EPROM/EEPROM/フラッシュROM等の半導体メモリ系などを用いることができる。
【0059】
また、コンピュータデバイス100に、上記プログラムコードを通信ネットワークを介して供給してもよい。この通信ネットワークとしては、特に限定されず、例えば、インターネット、イントラネット、エキストラネット、LAN、ISDN、VAN、CATV通信網、仮想専用網(virtual private network)、電話回線網、移動体通信網、衛星通信網等が利用可能である。また、通信ネットワークを構成する伝送媒体としては、特に限定されず、例えば、IEEE1394、USB、電力線搬送、ケーブルTV回線、電話線、ADSL回線等の有線でも、IrDAやリモコンのような赤外線、Bluetooth(登録商標)、802.11無線、HDR、携帯電話網、衛星回線、地上波デジタル網等の無線でも利用可能である。なお、本発明は、上記プログラムコードが電子的な伝送で具現化された、搬送波に埋め込まれたコンピュータデータ信号の形態でも実現され得る。
【産業上の利用可能性】
【0060】
本発明は、ネットワーク接続可能なパーソナルコンピュータ、パーソナルデータアシスタント(PDA)、サーバ装置、携帯電話、または複合機に利用することができる。
【符号の説明】
【0061】
100 コンピュータデバイス
110 ユーザインターフェース
120 非ネットワーク型I/Oデバイスポート
122 非ネットワーク型I/Oデバイス
130 ネットワーク接続型I/Oデバイスポート
132 ネットワーク接続されたI/Oデバイス
134 ネットワーク
140 演算装置
150 記憶装置
200 ソフトウェア
210 アプリケーション
220 ソケットAPI
225 エミュレーションモジュール
226 データ記憶部
230 TCP/IPプロトコルスタック
240 非ネットワーク型I/Oデバイスドライバ
250 ネットワーク接続型I/Oデバイスドライバ

【特許請求の範囲】
【請求項1】
非ネットワーク型I/Oデバイスを利用するアプリケーションを実行するアプリケーション実行部と、
上記アプリケーション実行部と接続可能なソケットAPIを実行するソケット実行部と、
上記ソケット実行部と接続可能であり、上記非ネットワーク型I/Oデバイスに対応する非ネットワーク型I/Oデバイスドライバを実行するドライバ実行部とを含み、
上記ソケット実行部は、上記アプリケーション実行部からソケットAPIコールを受け取ると、上記ソケットAPIコールに含まれるIPアドレスに基づき、上記ソケットAPIコールの宛先が上記非ネットワーク型I/Oデバイスであるか否かを判定し、上記ソケットAPIコールの宛先が上記非ネットワーク型I/Oデバイスであると判定した場合、上記ソケットAPIコールに対応するIP非対応のI/Oアクセスコールを、上記ドライバ実行部に配送することを特徴とするコンピュータデバイス。
【請求項2】
上記IPアドレスがループバックアドレスである場合、上記ソケット実行部は、上記ソケットAPIコールの宛先が上記非ネットワーク型I/Oデバイスであると判定することを特徴とする請求項1に記載のコンピュータデバイス。
【請求項3】
上記ソケット実行部は、上記IPアドレスが上記非ネットワーク型I/Oデバイスドライバに関連する非ネットワーク型I/Oデバイスポートに割り振られていると判定した場合、上記IP非対応のI/Oアクセスコールを、上記ドライバ実行部に配送することを特徴とする請求項1に記載のコンピュータデバイス。
【請求項4】
上記ソケット実行部と接続可能なTCP/IPプロトコルスタックを実行するプロトコル実行部を含み、
上記ソケット実行部は、上記IPアドレスが上記非ネットワーク型I/Oデバイスドライバに関連する非ネットワーク型I/Oデバイスポートに割り振られていないと判定した場合、上記ソケットAPIコールを上記プロトコル実行部に配送することを特徴とする請求項1または3に記載のコンピュータデバイス。
【請求項5】
上記非ネットワーク型I/Oデバイスドライバは、COM(RS−232)、USB、パラレルポート、またはFireWire(登録商標)のデバイスドライバであることを特徴とする請求項1から4のいずれか一項に記載のコンピュータデバイス。
【請求項6】
上記ソケット実行部は、上記ソケットAPIコールに含まれるTCPポート番号および上記IPアドレスに基づき、上記ソケットAPIコールの宛先が上記非ネットワーク型I/Oデバイスであるか否かを判定することを特徴とする請求項1に記載のコンピュータデバイス。
【請求項7】
非ネットワーク型I/Oデバイスを利用するアプリケーションを実行するアプリケーション実行部と、上記アプリケーション実行部と接続可能なソケットAPIを実行するソケット実行部と、上記ソケット実行部と接続可能であり上記非ネットワーク型I/Oデバイスに対応する非ネットワーク型I/Oデバイスドライバを実行するドライバ実行部とを含むコンピュータデバイスにおけるソケットAPIコール・エミュレーションの方法であって、
上記ソケット実行部が、上記アプリケーション実行部からソケットAPIコールを受け取る受領ステップと、
上記ソケット実行部が、上記ソケットAPIコールに含まれるIPアドレスに基づき、上記ソケットAPIコールの宛先が上記非ネットワーク型I/Oデバイスであるか否かを判定する判定ステップと、
上記ソケットAPIコールの宛先が上記非ネットワーク型I/Oデバイスであると判定した場合、上記ソケット実行部が、上記ソケットAPIコールに対応するIP非対応のI/Oアクセスコールを、上記ドライバ実行部に配送する配送ステップとを含むことを特徴とするソケットAPIコール・エミュレーションの方法。
【請求項8】
上記判定ステップにおいては、上記IPアドレスがループバックアドレスである場合、上記ソケット実行部は、上記ソケットAPIコールの宛先が上記非ネットワーク型I/Oデバイスであると判定することを特徴とする請求項7に記載のソケットAPIコール・エミュレーションの方法。
【請求項9】
上記配送ステップにおいては、上記IPアドレスが上記非ネットワーク型I/Oデバイスドライバに関連する非ネットワーク型I/Oデバイスポートに割り振られていると判定した場合、上記IP非対応のI/Oアクセスコールを、上記ドライバ実行部に配送することを特徴とする請求項7に記載のソケットAPIコール・エミュレーションの方法。
【請求項10】
上記コンピュータデバイスは、上記ソケット実行部と接続可能なTCP/IPプロトコルスタックを実行するプロトコル実行部を含み、
上記配送ステップにおいては、上記IPアドレスが上記非ネットワーク型I/Oデバイスドライバに関連する非ネットワーク型I/Oデバイスポートに割り振られていないと判定した場合、上記ソケット実行部は、上記ソケットAPIコールを上記プロトコル実行部に配送することを特徴とする請求項7または8に記載のソケットAPIコール・エミュレーションの方法。
【請求項11】
上記非ネットワーク型I/Oデバイスドライバは、COM(RS−232)、USB、パラレルポート、またはFireWire(登録商標)のデバイスドライバであることを特徴とする請求項7から10のいずれか一項に記載のソケットAPIコール・エミュレーションの方法。
【請求項12】
上記判定ステップにおいては、上記ソケット実行部は、上記ソケットAPIコールに含まれるTCPポート番号および上記IPアドレスに基づき、上記ソケットAPIコールの宛先が上記非ネットワーク型I/Oデバイスであるか否かを判定することを特徴とする請求項7に記載のソケットAPIコール・エミュレーションの方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2010−49676(P2010−49676A)
【公開日】平成22年3月4日(2010.3.4)
【国際特許分類】
【出願番号】特願2009−143613(P2009−143613)
【出願日】平成21年6月16日(2009.6.16)
【出願人】(000005049)シャープ株式会社 (33,933)
【Fターム(参考)】