(57)【要約】      （修正有）【課題】一般的なウィンドウアプリケーションのようなソフトウェアで通信を行う場合、頻繁にポートの追加変更が行われる。そのため、開発する側がＴＣＰ／ＩＰの通信ポートを意識的に決め、登録していたのでは、設定に非常に手間がかかってしまい実用できない。ポートを意識することなく目的のアプリケーションとアクセスでき、インターネットを経由する状況でも手軽にアプリケーション間通信ができるようにする。【解決手段】ポートの変わりに識別子として、サーバ名（アプリケーション名）を指定する。通信時に特定の動的ポートを確保し、サーバ側で空いているポートを自動的に割り当て、通信時識別子を持ったデータストリームを送受信する。クライアント側では、識別子（サーバ名）とアドレスを指定するだけで、ポートを意識することなく、接続が確立する。【選択図】図１
2006228176.tif 000002
【特許請求の範囲】
【請求項１】
通信プロトコルＴＣＰ／ＩＰを使ったソフトウェアを開発するためのプログラム方式およびインターネットを経由するプロセス間通信の規格。
【発明の詳細な説明】
【発明の詳細な説明】
【技術分野】
【０００１】  通信プロトコルＴＣＰ／ＩＰを使ったソフトウェア用プログラム。通信手続きの自動化、汎用化。インターネットを経由したプロセス間通信の確立。
【背景技術】
【０００２】  ＴＣＰ／ＩＰプロトコルは、通信を行うために通信先のアドレスと、一つのポートを必要とする。従来の方法では、アドレスとポートが通信のための要素となっている。通信を確立するためには、ポートを意識的に定義しなければならない。
また、プロセス間通信を意識したソフトウェアの開発には向いていない。単機能的なクライアントサーバであり、アプリケーション全体の制御をするほど統合化されていない。
【発明が解決しようとする課題】
【０００３】  ＴＣＰ／ＩＰの通信ポートをソフトウェア開発者が意識することなく、動的、自動的に確保すること。プロセス間通信を視野に入れたデータ送受信をモデル化すること。ＴＣＰ／ＩＰ通信用プログラムの開発を容易にすること。通信を取り入れたアプリケーションの可能性を広げること。
【課題を解決するための手段】
【０００４】  一般的なアプリケーションのようなソフトウェアで通信を行う場合、頻繁にポートの追加変更が行われる。そのため、ＴＣＰ／ＩＰの通信ポートを開発する側が意識的に決め、登録していたのでは、設定に非常に手間がかかってしまい実用できない。ポートを意識することなく目的のアプリケーションとアクセスするために、本発明では、ポートの変わりに識別子として、サーバ名（アプリケーション名）を指定する。本プログラムを利用したアプリケーションは、通信時に特定の動的ポートを確保しており、サーバ側では、空いているポートを自動的に確保し、通信時識別子としてサーバ名（アプリケーション名）を持ったデータストリームを送受信する。クライアント側では、識別子のサーバ名とアドレスをパラメータとして指定するだけで、ポートを意識することなく、接続が確立する。一つのアプリケーションが複数のプロセスを持っている場合は、基本的に最初のプロセスが選択されるが、ほかのプロセスを選ぶことにも対応する。
また、様々なアプリケーションとプロセス間通信を行うため、送受信データには規格化されたデータ構造体のみ使われる。このデータ構造体に識別子のサーバ名（アプリケーション名）やステータス、送り出すコマンド、メッセージが付加される。標準的なコマンドの実行は本プログラム内部でデフォルト化しているため、どのアプリケーションでも共通して利用が可能であり、ユーザが定義可能。
更に、ウィンドウアプリケーションの様なバックラウンドで作業が必要なプログラムのために、本プログラムでは、サーバ、クライアントの作業をスレッド化している。
【発明を実施するための最良の形態】
【０００５】  クライアント側では、本プログラムで用意された、初期化ファンクションにインターネットアドレス（ホスト名）および識別子のサーバ名（アプリケーション名）を与えることにより、サーバと接続する。サーバ側では、初期化ファンクションに識別子のサーバ名を指定するだけで、クライアントを受け付けることができるようになる。データの送受信には、規格化された独自のデータ構造体のみを送受信し、ほかのデータ構造の場合は、基本的にエラーとして処理される（特別に規格外データの受信を指示した場合を除く）。
通信プロトコルは、ＴＣＰ／ＩＰのＳＴＲＥＡＭ（ＴＣＰ）型を利用し、基本的に１つのサーバにつき１つのクライアントの接続を許可する（ただし、複数も可能であるが、安全性を考えては基本的に１クライアントとする）。通信の切断／接続も自動で対応し、連続した切断接続にも安定したアクセスができる。
クライアント／サーバのデータ待ち状態における処理は、スレッド、要求待ちのどちらにも対応できる。スレッドの場合は、ハンドラーに通信要求が出力される。
【実施例】
【０００６】  本プログラムを利用することにより、容易に通常のウィンドウアプリケーションがサーバとして動作したり、クライアントとして動作できるようになる。
サーバとクライアントを同時にあわせ持つ変わったアプリケーションの開発も可能であり、クライアントからのメッセージをルーティングして他のサーバへメッセージを送ることも可能となる。
セキュリティの面でもデフォルトでは、多数のクライアントを受け入れないようになっており、不明なデータ構造体も受け入れないため、比較的固いアプリケーションの開発が可能である。
本プログラムは、発案者がすでに開発済であるウィンドウアプリケーション開発ライブラリーに取り込まれているため、プロセス内のメッセージとのリンクにも優れ、手続きの自動化等アプリケーション全体の開発や制御をより容易にしている。
【発明の効果】
【０００７】  ＴＣＰ／ＩＰを用いた通信が困難な通常のウィンドウアプリケーションで、不特定なポートを利用する状況でも簡単にクライアント／サーバ機能を持ったアプリケーションが開発できるようになった。アプリケーション（サーバ）を作るたびにポートを割り振る手続きが必要なく、非常に簡単にサーバを作ることができるようになった。また、余分なポートを登録する必要がないため、ポート数を圧迫することがなくなった。要素（識別子）がサーバ名（アプリケーション名）であるため、目的のプロセスが探しやすく、ポートの重複に悩むことなくプロセス間通信ができるようになった。ポート番号の割り振りがより複雑になる、リアルタイムなプロトコルの接続・切断状況においてもアプリケーション側でポートを意識することなくアクセスが可能となった。ウィンドウアプリケーションの様なバックグラウンドで処理が必要なプログラムにもプロセスが途絶えることなくクライアントと通信できるようになった。
従来のやり方では、考えられないような複雑な通信機能を持ったアプリケーションの開発もできるようになった。
プログラム開発手続きも自動化されているため、開発が簡単になった。インターネットを経由した状況でもアプリケーションのリモート操作が容易になった。
【図面の簡単な説明】
【図１】本発明のシステム構成図である。
【図２】本発明のプログラム処理の流れ図である。
【符号の説明】
１  本発明のプログラム本体（ＴＣＰ／ＩＰ通信用ライブラリー）
２  サーバ側アプリケーション例
３  クライアント側アプリケーション例
４  動的に確保された通信ポート
【図１】
2006228176.tif 000003
【図２】
2006228176.tif 000004