(57)【要約】【課題】組込機器による通信をこれまでより効率的に実現する。【解決手段】通信の制御を代行する外部の代行サーバを介して他の装置と通信する組込機器であって、代行サーバと通信可能な通信デバイスと、他の装置との通信状態を記憶するための記憶部と、中央処理装置により実行されるタスクから他の装置との通信の制御要求を受けたことに応じ、通信デバイスと代行サーバとが通信可能でない状態において、制御要求に応じた制御を正常に行った後の状態に通信状態を更新する更新部と、制御要求に応じた通信状態の更新結果をタスクに返答する返答部と、通信デバイスが代行サーバと通信可能な状態において、代行サーバにおける他の装置との間の通信状態を記憶部に記憶された通信状態に遷移させるための指示を、通信デバイスを用いて代行サーバに対し送信する制御指示部とを備える組込機器。
2007123025.tif 000002
【特許請求の範囲】
【請求項１】
通信の制御を代行する外部の代行サーバを介して他の装置と通信する組込機器であって、
前記代行サーバと通信可能な通信デバイスと、
前記他の装置との通信状態を記憶するための記憶部と、
中央処理装置により実行されるタスクから前記他の装置との通信の制御要求を受けたことに応じ、前記通信デバイスと前記代行サーバとが通信可能でない状態において、前記制御要求に応じた制御を正常に行った後の状態に前記通信状態を更新する更新部と、
前記制御要求に応じた前記通信状態の更新結果を前記タスクに返答する返答部と、
前記通信デバイスが前記代行サーバと通信可能な状態において、前記代行サーバにおける前記他の装置との間の通信状態を前記記憶部に記憶された通信状態に遷移させるための指示を、前記通信デバイスを用いて前記代行サーバに対し送信する制御指示部と
を備える組込機器。
【請求項２】
前記制御指示部により送信された指示に応じ前記代行サーバが実行した制御の実行結果を、前記通信デバイスを用いて前記代行サーバから受信する受信部を更に備え、
前記更新部は、前記タスクから受けた前記制御要求が、前記制御要求に応じた制御の完了を待たずに前記タスクの処理を継続可能であるとして予め定められたノン・ブロッキング制御要求であることを条件に、前記通信デバイスと前記代行サーバとが通信可能でない状態においても前記通信状態を更新し、前記タスクから受けた前記制御要求が前記ノン・ブロッキング制御要求でないことを条件に、前記受信部による前記実行結果の受信に応じ前記通信状態を更新する
請求項１に記載の組込機器。
【請求項３】
前記更新部は、前記タスクから受けた前記制御要求が、通信に必要な資源を確保または解放する要求であることを条件に、当該制御要求が前記ノン・ブロッキング制御要求であると判断し、前記タスクから受けた前記制御要求が、前記他の装置との間でデータの送受信を要する制御要求であることを条件に、当該制御要求が前記ノン・ブロッキング制御要求でないと判断する
請求項２に記載の組込機器。
【請求項４】
前記更新部は、更に、前記タスクから受けた前記制御要求が、前記通信デバイスと前記他の装置との間の通信の属性を変更する要求であることを条件に、当該制御要求が前記ノン・ブロッキング制御要求であると判断する
請求項３に記載の組込機器。
【請求項５】
前記更新部は、前記タスクから受けた前記制御要求が、前記通信デバイスと前記他の装置とが通信可能か否かを検出する要求であることを条件に、当該制御要求が前記ノン・ブロッキング制御要求でないと判断する
請求項３に記載の組込機器。
【請求項６】
前記更新部は、前記タスクから受けた前記制御要求が、前記他の装置からの通信要求に対し通信許可の返答を行う要求であることを条件に、当該制御要求が前記ノン・ブロッキング制御要求でないと判断する
請求項３に記載の組込機器。
【請求項７】
前記代行サーバは、当該組込機器と前記他の装置との間のＴＣＰ／ＩＰによる通信の制御を代行するものであり、
前記記憶部は、それぞれのソケットの通信状態を当該ソケットの識別情報に対応付けて記憶し、
前記更新部は、新たなソケットを生成する制御要求に応じ、新たに生成するソケットの識別情報に対応付けて、ソケットが新たに生成された旨を示す生成状態を前記通信状態として前記記憶部に記憶し、
前記返答部は、前記識別情報を前記更新結果として前記タスクに返答し、
前記制御指示部は、前記通信デバイスが前記代行サーバと通信可能な状態において、前記通信状態が前記生成状態であることを条件に、新たにソケットを生成して前記識別情報に対応付けて管理する指示を前記代行サーバに対し送信する
請求項３に記載の組込機器。
【請求項８】
前記更新部は、前記他の装置から受ける通信要求を格納するバッファをソケットに割り当てる制御要求を当該ソケットの識別情報に対応付けて受信したことに応じ、当該識別情報に対応する前記通信状態をバッファの割当済状態に更新し、
前記返答部は、バッファの割当が成功した旨を前記タスクに返答し、
前記制御指示部は、前記通信デバイスが前記代行サーバと通信可能な状態において、前記通信状態が前記割当済状態であることを条件に、新たにソケットを生成して前記識別情報に対応付けて管理する指示、および、当該ソケットにバッファを割り当てる指示を前記代行サーバに対し送信する
請求項７に記載の組込機器。
【請求項９】
前記更新部は、前記通信デバイスと前記他の装置とがソケットを用いて通信可能か否かを検出する制御要求を当該ソケットの識別情報に対応付けて受信したことに応じ、当該識別情報に対応する前記通信状態を通信待ち状態に更新し、
前記制御指示部は、前記通信デバイスが前記代行サーバと通信可能な状態において、前記通信状態が前記通信待ち状態であることを条件に、新たにソケットを生成して前記識別情報に対応付けて管理する指示、当該ソケットに前記バッファを割り当てる指示、および、当該ソケットによる通信が可能か否かを検出する指示を前記代行サーバに対し送信し、  前記受信部が、前記代行サーバによる通信可能か否かの検出結果を受信した場合において、
前記返答部は、前記検出結果の受信に応じ前記検出結果を前記タスクに返答し、
前記更新部は、当該識別情報に対応する前記通信状態を前記割当済状態に戻す
請求項８に記載の組込機器。
【請求項１０】
前記更新部は、指定されたポート番号をソケットに割り当てる制御要求を当該ソケットの識別情報に対応付けて受信したことに応じ、当該識別情報に対応付けて前記ポート番号を前記記憶部に記憶し、
前記返答部は、ポート番号の割当が成功した旨を前記タスクに返答し、
前記制御指示部は、前記通信デバイスが前記代行サーバと通信可能な状態において、当該ソケットの識別情報に対応付けてポート番号が対応付けて記憶されていることを条件に、更に当該ポート番号を前記代行サーバに対し送信する
請求項９に記載の組込機器。
【請求項１１】
当該組込機器には、ソケット通信を実現するライブラリプログラムに代えて、前記更新部、前記返答部、前記制御指示部、および、前記受信部として前記中央処理装置を機能させるライブラリプログラムがインストールされており、
前記タスクは、インストールされた当該ライブラリプログラムのＡＰＩを呼び出すことにより前記制御要求を前記更新部に送信し、
前記更新部は、ｓｏｃｋｅｔシステムコール、ｂｉｎｄシステムコール、ｌｉｓｔｅｎシステムコール、および、ｃｌｏｓｅシステムコールの少なくとも何れか１つの呼び出しを前記タスクから受けたことを条件に、前記タスクから前記ノン・ブロッキング制御要求を受けたと判断し、ａｃｃｅｐｔシステムコール、ｓｅｌｅｃｔシステムコール、ｒｅｃｖシステムコール、および、ｓｅｎｄシステムコールの少なくとも何れか１つの呼び出しを前記タスクから受けたことを条件に、前記タスクから前記ノン・ブロッキング制御要求でない制御要求を受けたと判断する
請求項７に記載の組込機器。
【請求項１２】
組込機器による他の装置との通信の制御を代行する代行サーバであって、
前記組込機器から指定されたソケットの第１識別情報と、当該代行サーバが前記他の装置と通信するためのソケットの第２識別情報とを対応付けて記憶する記憶部と、
新たにソケットを生成して前記第１識別情報に対応付けて管理する指示を受信したことに応じて、当該代行サーバと前記他の装置との間の通信に用いるソケットを生成して第２識別情報を取得するソケット生成部と、
受信した前記第１識別情報と生成したソケットの前記第２識別情報とを対応付けて前記記憶部に記憶する識別情報管理部と
を備える代行サーバ。
【請求項１３】
前記ソケット生成部は、新たにソケットを生成して前記識別情報に対応付けて管理する指示を受信した場合であっても、既に当該識別情報が前記第１識別情報として前記記憶部に記憶されている場合には、新たにソケットを生成しない
請求項１２に記載の代行サーバ。
【請求項１４】
ソケットを用いてデータを送受信する指示を当該ソケットの第１識別情報に対応付けて受信したことに応じ、前記記憶部において当該第１識別情報に対応する第２識別情報により識別されるソケットを用いて前記他の装置とデータを送受信する送受信部を更に備える  請求項１２に記載の代行サーバ。
【請求項１５】
通信の制御を代行する外部の代行サーバを介して他の装置と通信する組込機器を制御する制御プログラムであって、
前記組込機器を、
前記代行サーバと通信可能な通信デバイスと、
前記他の装置との通信状態を記憶するための記憶部と、
中央処理装置により実行されるタスクから前記他の装置との通信の制御要求を受けたことに応じ、前記通信デバイスと前記代行サーバとが通信可能でない状態において、前記制御要求に応じた制御を正常に行った後の状態に前記通信状態を更新する更新部と、
前記制御要求に応じた前記通信状態の更新結果を前記タスクに返答する返答部と、
前記通信デバイスが前記代行サーバと通信可能な状態において、前記代行サーバにおける前記他の装置との間の通信状態を前記記憶部に記憶された通信状態に遷移させるための指示を、前記通信デバイスを用いて前記代行サーバに対し送信する制御指示部と
して機能させる制御プログラム。
【請求項１６】
通信の制御を代行する外部の代行サーバを介して他の装置と通信する組込機器を制御する方法であって、
前記組込機器は、
前記代行サーバと通信可能な通信デバイスと、
前記他の装置との通信状態を記憶するための記憶部と
を有し、
中央処理装置により実行されるタスクから前記他の装置との通信の制御要求を受けたことに応じ、前記通信デバイスと前記代行サーバとが通信可能でない状態において、前記制御要求に応じた制御を正常に行った後の状態に前記通信状態を更新するステップと、
前記制御要求に応じた前記通信状態の更新結果を前記タスクに返答するステップと、
前記通信デバイスが前記代行サーバと通信可能な状態において、前記代行サーバにおける前記他の装置との間の通信状態を前記記憶部に記憶された通信状態に遷移させるための指示を、前記通信デバイスを用いて前記代行サーバに対し送信するステップと
を備える方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、組込機器、代行サーバ、方法、および、プログラムに関する。特に、本発明は、通信の制御を外部の代行サーバによって代行させるための組込機器、代行サーバ、方法、および、プログラムに関する。
【背景技術】
【０００２】
近年、ソフトウェアに求められる機能は高度になってきている。また、携帯電話やデジタル家電などの組込機器の普及に伴って、ソフトウェアは多数の異なるプラットフォーム上で動作することが求められる場合もある。このようなソフトウェアを効率的に開発するために、従来、モデル駆動開発（ＭＭＤ：Ｍｏｄｅｌ  Ｄｒｉｖｅｎ  Ｄｅｖｅｌｏｐｍｅｎｔ）が研究されている。モデル駆動開発によれば、統一モデリング言語（ＵＭＬ：Ｕｎｉｆｉｅｄ  Ｍｏｄｅｌｅｄ  Ｌａｎｇｕａｇｅ）などで記述されたソフトウェアの仕様から、様々なプラットフォーム上で実際に動作するソフトウェアを自動的に生成することができる。【０００３】
モデル駆動開発を実現する技術として、従来、インターナショナル・ビジネス・マシーンズ・コーポレーションのＲａｔｉｏｎａｌ  Ｒｏｓｅ（Ｒ）ＲＴが用いられている。この技術において、開発者は、ソフトウェアの仕様の作成や仕様の修正を、汎用性の高いパーソナル・コンピュータ上で行う。そして、作成または修正された仕様に基づき生成されたソフトウェアは、通信回線を介して組込機器に送信されて実行される。更に、この技術では、実際のソフトウェアと仕様とを対比可能なデバッグ環境も提供される。例えば、開発者は、組込機器により実行されるプログラムの実行中の部分が、仕様のどの部分に対応するのかを、パーソナル・コンピュータの画面で確認することができる。【０００４】
【特許文献１】特開２００２−６３０８８号公報
【特許文献２】特開平９−２２３９１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、このような開発を行うためには、組込機器に通信機能を設けなければならない。通信機能を実現するためには、例えば、イーサネット（登録商標）などによって通信可能な通信デバイスと、その通信デバイスを制御するデバイスドライバとが必要となる。更に、開発用ソフトウェアによっては、汎用的な通信プロトコルであるＴＣＰ／ＩＰの制御用ソフトウェアが必要となる。しかしながら、組込機器によってはＴＣＰ／ＩＰによる通信機能を有していない場合がある。このような場合には、最終製品には採用されないデバイスドライバなどを別途開発する必要が生じ、開発コストの増大や開発期間の長期化を招くおそれがある。【０００６】
参考技術として、特許文献１および特許文献２を挙げる。特許文献１によると、ＴＣＰ／ＩＰなどのプロトコルによる通信を、他のプロトコルに変換することができる。これにより、シリアルインターフェイスなどの通信回線によって、イーサネットなどを用いずにＴＣＰ／ＩＰによる通信を実現できる。この技術を応用すれば組込機器にイーサネットなどの通信デバイスを不要とすることができる。しかしながら、ＴＣＰ／ＩＰによる制御用のソフトウェアは必要であり、組込機器などのメモリの必要容量を増大させてしまうおそれがある。【０００７】
特許文献２によると、ある装置の通信を他の装置に代理させることができる。これは、当該装置からリモートプロシジャーコール（ＲＰＣ：Ｒｅｍｏｔｅ  Ｐｒｏｃｅｄｕｒｅ  Ｃａｌｌ）によって、当該他の装置上の通信用のプロシジャーを呼び出すことによって実現される。しかしながら、リモートプロシジャーコールは、ＴＣＰ／ＩＰによる通信が確立されていることが前提となっている。即ち、この技術においても、ＴＣＰ／ＩＰによる制御用のソフトウェアは必要であり、組込機器などのメモリの必要容量を増大させてしまうおそれがある。また、通信回線の通信状況が不安定な場合には通信が切断されて再開不能となってしまう場合がある。【０００８】
そこで本発明は、上記の課題を解決することのできる組込機器、代行サーバ、方法、および、プログラムを提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明の第１の形態においては、通信の制御を代行する外部の代行サーバを介して他の装置と通信する組込機器であって、代行サーバと通信可能な通信デバイスと、他の装置との通信状態を記憶するための記憶部と、中央処理装置により実行されるタスクから他の装置との通信の制御要求を受けたことに応じ、通信デバイスと代行サーバとが通信可能でない状態において、制御要求に応じた制御を正常に行った後の状態に通信状態を更新する更新部と、制御要求に応じた通信状態の更新結果をタスクに返答する返答部と、通信デバイスが代行サーバと通信可能な状態において、代行サーバにおける他の装置との間の通信状態を記憶部に記憶された通信状態に遷移させるための指示を、通信デバイスを用いて代行サーバに対し送信する制御指示部とを備える組込機器を提供する。
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
【発明の効果】
【００１０】
本発明によれば、組込機器による通信をこれまでより効率的に実現することができる。
【発明を実施するための最良の形態】
【００１１】
以下、発明を実施するための最良の形態（以下、実施の形態と称す）を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。【００１２】
図１は、通信システム１０の全体構成を示す。通信システム１０は、携帯電話２０と、代行サーバ３０と、通信装置４０とを備える。携帯電話２０は、ソフトウェア開発やデバッグの対象となる組込機器の一例であり、シリアル・インターフェイスなどの第１通信回線２５を介して代行サーバ３０に接続されている。そして、携帯電話２０は、開発中や動作検証中のプログラムを実行し、その実行状態を通信装置４０に通知し、通信装置４０の画面上にその実行状態を表示させる。また、携帯電話２０は、通信装置４０から受けた指示に基づきプログラムの実行を中断したり再開したりする。なお、組込機器は、携帯電話に代えて、ＰＤＡ、デジタル家電または電子制御の自動車などであってもよい。【００１３】
代行サーバ３０は、第１通信回線２５を介して携帯電話２０に接続されている他、他の装置（例えば通信装置４０）と、イーサネット（登録商標）などに準拠した第２通信回線３５を介して接続されている。そして、代行サーバ３０は、携帯電話２０による通信装置４０との通信の制御を代行する。例えば、代行サーバ３０は、ＴＣＰ／ＩＰによる通信の制御機能を有していない携帯電話２０のために、携帯電話２０と通信装置４０との間のＴＣＰ／ＩＰによる通信の制御を代行する。通信装置４０は、携帯電話２０に搭載されるプログラムの開発・デバッグのためのプログラムを動作させる。そして、通信装置４０は、代行サーバ３０とＴＣＰ／ＩＰによる通信を行うことにより、携帯電話２０上で動作するプログラムの実行状態を携帯電話２０から取得し、または、携帯電話２０上で動作するプログラムの実行を中断または再開させる。【００１４】
このように、本実施の形態に係る通信システム１０は、ＴＣＰ／ＩＰなどの汎用な通信プロトコルによる通信機能が搭載されていない組込機器のために、組込機器の外部に設けられた代行サーバ３０によって、通信プロトコルに準拠した通信の制御を代行させることを目的とする。この結果、携帯電話２０には通信制御のためのプログラムを搭載する必要がないので、携帯電話２０のメモリの必要容量を削減したり、携帯電話２０上で動作するプログラムを開発する手間を軽減できる。【００１５】
図２は、携帯電話２０の機能構成を示す。携帯電話２０は、中央処理装置２２と、記憶部２４と、通信デバイス２６とを有する。中央処理装置２２は、予め携帯電話２０にインストールされたプログラムを実行する。記憶部２４は、このプログラムの実行のため、または、通信装置４０との通信状態を記憶するために設けられている。通信デバイス２６は、第１通信回線２５を介して代行サーバ３０と通信可能に接続されている。通信デバイス２６と代行サーバ３０との間の第１通信回線２５は、一時的に通信可能でない状態になる場合もある。例えば、利用者は、携帯電話２０におけるプログラムの実行中に、第１通信回線２５を携帯電話２０から一時的に取り外してもよい。【００１６】
中央処理装置２２は、予め携帯電話２０にインストールされたプログラムによって、タスク２００と、通信モジュール２１０として機能する。タスク２００は、ＴＣＰ／ＩＰのソケット通信を制御するためのＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）の呼び出しを含む。このＡＰＩは、例えば、ＢＳＤ（Ｂｅｒｋｅｌｅｙ  Ｓｏｆｔｗａｒｅ  Ｄｉｓｔｒｉｂｕｔｉｏｎ）のＵＮＩＸ（登録商標）などと互換性を持つ所定の規格を満たしてもよい。なお、タスク２００は、例えば、オペレーティングシステムによって定期的に実行権が与えられるプロセスまたはスレッドなどであってもよい。【００１７】
携帯電話２０には、ソケット通信を実現するライブラリプログラムに代えて、通信モジュール２１０として中央処理装置２２を機能させるライブラリプログラムがインストールされている。タスク２００は、ソケット通信を制御するためのＡＰＩに代えて、インストールされたこのライブラリプログラムのＡＰＩを呼び出すことにより、通信装置４０との通信の制御要求を通信モジュール２１０に送信する。なお、ソケット通信のＡＰＩとこのライブラリプログラムのＡＰＩとでは呼び出しのインターフェイスが同一であるから、通信モジュール２１０に適合させるためにプログラムを改造する必要はない。【００１８】
通信モジュール２１０は、タスク２００から制御要求を受けると、制御要求に応じた制御を実行すべき指示を、通信デバイス２６を用いて代行サーバ３０に対し送信する。但し、第１通信回線２５が通信可能でない状態において制御要求を受信した場合には通信モジュール２１０は以下の処理を行う。通信モジュール２１０は、受信した制御要求が予め定められたノン・ブロッキング制御要求であることを条件に、代行サーバ３０と通信せずに記憶部２４内の通信状態を更新する。そして、通信モジュール２１０は、通信状態の更新結果をタスク２００に返答する。そして、第１通信回線２５が通信可能な状態になったことを条件に、通信モジュール２１０は、代行サーバ３０による通信装置４０との通信状態を記憶部２４に記憶された通信状態に遷移させるための指示を代行サーバ３０に送信する。これにより、タスク２００は、第１通信回線２５が通信可能でない状態であっても、第１通信回線２５が通信可能となるのを待たずに処理を継続できる。【００１９】
図３は、記憶部２４のデータ構造の一例を示す。記憶部２４は、携帯電話２０が通信装置４０とソケット通信するためのそれぞれのソケットの通信状態を、当該ソケットの識別情報（例えば、ファイルディスクリプタなどと呼ばれる識別子）に対応付けて記憶する。更に、記憶部２４は、それぞれのソケットに対応付けて、当該ソケットに割り当てられたポート番号、当該ソケットの通信に用いる通信バッファのアドレス、および、当該ソケットによる通信が完了するまで処理を中断して待機しているタスクの識別番号を記憶していてもよい。【００２０】
一例として、識別情報が１のソケットは、当該ソケットが新たに生成された旨を示す生成状態（ＯＰＥＮ状態と記す）である。そして、このソケットにはポート番号およびバッファアドレスの何れも割り当てられていない。また、識別情報が５のソケットは、当該ソケットによるデータの受信を処理している状態（ＲＥＣＶ状態と記す）である。このソケットには、通信バッファのアドレス、および、この送受信が完了するまで処理を中断して待機しているタスクの識別番号が割り当てられている。【００２１】
図４は、通信モジュール２１０の機能構成を示す。通信モジュール２１０は、更新部２２０と、返答部２３０と、制御指示部２４０と、受信部２５０とを有する。更新部２２０は、中央処理装置２２により実行されるタスク２００から通信装置４０との通信の制御要求を受けたことに応じ、その制御要求が、その制御要求に応じた制御の完了を待たずにタスク２００の処理を継続可能であるとして予め定められたノン・ブロッキング制御要求であるかを判断する。例えば、更新部２２０は、タスク２００から受けた制御要求が、通信に必要な資源（メモリの記憶領域など）を確保または解放する要求であることを条件に、当該制御要求がノン・ブロッキング制御要求であると判断してもよい。【００２２】
更新部２２０は、ノン・ブロッキング制御要求であることを条件に、たとえ通信デバイス２６と代行サーバ３０とが通信可能でない状態であっても、その制御要求に応じた制御を正常に行った後の状態に記憶部２４の通信状態を更新する。一方で、更新部２２０は、タスク２００から受けた制御要求がノン・ブロッキング制御要求でないブロッキング制御要求であることを条件に、受信部２５０による制御の実行結果の受信に応じ、記憶部２４の通信状態を更新する。例えば、更新部２２０は、タスク２００から受けた制御要求が、通信装置４０との間でデータの送受信を要する制御要求であることを条件に、当該制御要求がブロッキング制御要求であると判断する。【００２３】
返答部２３０は、その制御要求に応じた通信状態の更新結果をタスク２００に返答する。即ち、ノン・ブロッキング制御要求については、その要求に応じた制御の実行を待たずに更新結果がタスク２００に返答される。一方、ブロッキング制御要求については、受信部２５０がその要求に応じた制御の実行結果を代行サーバ３０から受信したことに応じ、その実行結果がタスク２００に返答される。制御指示部２４０は、通信デバイス２６が代行サーバ３０と通信可能な状態において、代行サーバ３０における通信装置４０との間の通信状態を記憶部２４に記憶された通信状態に遷移させるための指示を、通信デバイス２６を用いて代行サーバ３０に対し送信する。【００２４】
受信部２５０は、制御指示部２４０により送信された指示に応じ代行サーバ３０が実行した制御の実行結果を、通信デバイス２６を用いて代行サーバ３０から受信する。実行結果は更新部２２０および返答部２３０に通知される。ブロッキング制御要求を受けていた場合において、更新部２２０は、この実行結果に基づき通信状態を更新すると共に、返答部２３０はこの実行結果をタスク２００に返答する。【００２５】
図５は、携帯電話２０と通信装置４０との間の通信の通信状態の状態遷移を示す図である。更新部２２０は、ノン・ブロッキング制御要求を受けたことに応じ、通信デバイス２６と代行サーバ３０とが通信可能でない状態であっても、記憶部２４に記憶された通信状態を図中の実線に沿って更新する。以下、ノン・ブロッキング制御要求に応じた通信状態の遷移について具体的に説明する。まず、ソケットが生成されていない場合には、そのソケットに対応する状態は存在しない。その状態を、便宜上そのソケットの空き状態とする。更新部２２０は、新たなソケットを生成する制御要求に応じ、新たに生成するソケットの識別情報に対応付けて、そのソケットが新たに生成された旨を示す生成状態（図５ではＯＰＥＮ状態）を通信状態として記憶部２４に記憶する。識別情報は、代行サーバ３０によって生成されるソケットの識別情報に関わらず、更新部２２０によって生成されるものであってもよい。なお、この制御要求は、ＢＳＤ Ｓｏｃｋｅｔ ＡＰＩにおけるｓｏｃｋｅｔシステムコールである。この制御要求はノン・ブロッキング制御要求なので、通信状態の更新は代行サーバ３０における制御の実行を待たずに行われる。【００２６】
次に、更新部２２０は、通信装置４０からの通信要求を受け入れられる状態とする制御要求を当該ソケットの識別情報に対応付けて受信したことに応じ、当該識別情報に対応する通信状態を、バッファの割当済状態（図５ではＬＩＳＴＥＮ状態）に更新する。この制御要求は、通信装置４０から受ける通信要求を格納するバッファをソケットに割り当てることを代行サーバ３０に要求する。一例として、この制御要求は、ＢＳＤ Ｓｏｃｋｅｔ ＡＰＩにおけるｌｉｓｔｅｎシステムコールである。この制御要求もまたノン・ブロッキング制御要求なので、通信状態の更新は制御の実行を待たずに行われる。ＯＰＥＮ状態、ＬＩＳＴＥＮ状態または後述のＣＯＮＮＥＣＴＥＤ状態において、更新部２２０は、ソケットを解放する制御要求を当該ソケットの識別情報に対応付けて受信したことに応じ、当該識別状態に対応する通信状態を空き状態に戻す。この制御は、例えば、ＢＳＤ Ｓｏｃ
ｋｅｔ ＡＰＩにおけるｃｌｏｓｅシステムコールである。この制御要求もまたノン・ブ
ロッキング制御要求なので、通信状態の更新は制御の実行を待たずに行われる。【００２７】
更新部２２０は、タスク２００から受けた制御要求が、通信デバイス２６と通信装置４０との間の通信の属性を変更する要求であることを条件に、その制御要求がノン・ブロッキング制御要求であると判断する。例えば、ＯＰＥＮ状態において、更新部２２０は、指定されたポート番号をソケットに割り当てる制御要求を当該ソケットの識別情報に対応付けて受信したことに応じ、当該識別情報に対応付けてそのポート番号を記憶部２４に記憶する。この制御要求は、例えば、ＢＳＤ Ｓｏｃｋｅｔ ＡＰＩにおけるｂｉｎｄシステムコールである。この制御要求もまたノン・ブロッキング制御要求なので、ポート番号の割当は代行サーバ３０における制御の実行を待たずに行われる。【００２８】
一方で、更新部２２０は、ブロッキング制御要求を受けたことに応じ、受信部２５０による制御の実行結果の受信に応じ、記憶部２４に記憶された通信状態を図中の点線に沿って更新する。以下、ブロッキング制御要求に応じた通信状態の遷移について具体的に説明する。更新部２２０は、タスク２００から受けた制御要求が、通信デバイス２６と通信装置４０とが通信可能か否かを検出する要求、通信装置４０からの通信要求に対し通信許可の返答を行う要求、または、データの送受信の要求であることを条件に、これらの要求がブロッキング制御要求であると判断する。例えば、更新部２２０は、ＬＩＳＴＥＮ状態において、通信デバイス２６と通信装置４０とが通信可能か否かを検出する制御要求（例えばｓｅｌｅｃｔシステムコール）を、当該ソケットの識別情報に対応付けて受信したことに応じ、当該識別情報に対応する通信状態を通信待ち状態（図５ではＬＩＳＴＥＮ＋ＳＥＬＥＣＴ状態）に更新する。ｓｅｌｅｃｔシステムコールは、複数のソケットの状態を調べるための要求を発行する。このシステムコールによると、それぞれのソケットからのデータの読出が可能か否か、それぞれのソケットへのデータの書込みが可能か否か、または、読出・書込みにエラーが生じているか否かを調べることができる。受信部２５０が代行サーバ３０によって実行された通信可能か否かの検出結果を受信した場合において、更新部２２０は、当該識別情報に対応する通信状態を割当済状態に戻す。このように、この制御要求はブロッキング制御要求なので、代行サーバ３０による制御の実行後に実行結果がタスク２００に通知される。【００２９】
また、更新部２２０は、ＬＩＳＴＥＮ状態において、通信装置４０からの通信要求に対し通信許可の返答を行う制御要求（例えばａｃｃｅｐｔシステムコール）を、当該ソケットの識別情報に対応付けて受信したことに応じ、当該識別情報に対応する通信状態を、通信を受け入れる通信受入状態（図５ではＡＣＣＥＰＴ状態）に更新する。そして、受信部２５０が代行サーバ３０によって実行された制御の実行結果を受信した場合において、更新部２２０は、当該識別情報に対応する通信状態を割当済状態に戻す。また、更新部２２０は、この制御によって新たにソケットが生成された場合には、記憶部２４に新たなソケットの識別情報を記憶させ、その識別情報に対応付けて接続済状態（図５ではＣＯＮＮＥＣＴＥＤ状態）を記憶させてもよい。この場合、更新部２２０は、新たに生成した識別情報と、代行サーバ３０によって生成されたソケットとを対応付けさせるべく、当該識別情報を代行サーバ３０に通知する。この制御要求はブロッキング制御要求なので、代行サーバ３０による制御の実行後に実行結果が返答される。【００３０】
また、更新部２２０は、ＣＯＮＮＥＣＴＥＤ状態において、ソケットを用いたデータの送受信を要する制御要求（例えばｓｅｌｅｃｔシステムコール、ｒｅｃｖシステムコール、または、ｓｅｎｄシステムコール）を、当該ソケットの識別情報に対応付けて受信したことに応じ、ブロッキング制御要求を受けたと判断する。そして、更新部２２０は、当該識別情報に対応する通信状態を通信待ち状態（図５ではＳＥＬＥＣＴ状態、ＲＥＣＶ状態、または、ＳＥＮＤ状態）に更新する。そして、受信部２５０が代行サーバ３０によって実行されたデータの送受信結果を受信した場合において、更新部２２０は、当該識別情報に対応する通信状態を接続済状態に戻す。このように、この制御要求はブロッキング制御要求なので、代行サーバ３０による制御の実行後に実行結果がタスク２００に通知される。【００３１】
図６は、携帯電話２０の通信状態とそれに対応して通信装置４０に対し送信する指示とを示す。図６を参照して、制御指示部２４０による処理の具体例を説明する。制御指示部２４０は、通信デバイス２６と代行サーバ３０とが通信可能な状態において、代行サーバ３０における通信装置４０との間の通信状態を記憶部２４に記憶された通信状態に遷移させる指示を代行サーバ３０に送る。これを実現するために、まず、制御指示部２４０は、それぞれのソケットに対応する通信状態を中央処理装置２２から検索する。そして、制御指示部２４０は、検索された通信状態に予め対応付けられた指示を代行サーバ３０に送信する。図６は、この処理における通信状態と指示との対応付けを示している。即ち、あるソケットについてＯＰＥＮ状態が検索されたことに応じ、制御指示部２４０は、ｓｏｃｋｅｔシステムコールを実行すべき指示を代行サーバ３０に対し送信する。また、他のソケットについて通信状態がＬＩＳＴＥＮ状態であることを条件に、制御指示部２４０は、新たにソケットを生成して識別情報に対応付けて管理する指示（たとえばｓｏｃｋｅｔシステムコールを実行する指示）、および、通信装置４０から受ける通信要求を格納するバッファをそのソケットに割り当てる指示（たとえばｌｉｓｔｅｎシステムコールを実行する指示）を代行サーバ３０に対し送信する。また、他のソケットについてＳＥＬＥＣＴ状態が検索されたことに応じ、制御指示部２４０は、ｓｏｃｋｅｔシステムコールとｓｅｌｅｃｔシステムコールとを順次この順に実行すべき指示を代行サーバ３０に対し送信する。更に他のソケットについてＬＩＳＴＥＮ＋ＳＥＬＥＣＴ状態が検索されたことに応じ、制御指示部２４０は、ｓｏｃｋｅｔシステムコールとｂｉｎｄシステムコールとｌｉｓｔｅｎシステムコールとｓｅｌｅｃｔシステムコールとを順次この順に実行すべき指示を代行サーバ３０に対し送信する。【００３２】
図７は、代行サーバ３０の機能構成を示す。代行サーバ３０は、中央処理装置３２と、記憶部３４と、ＬＡＮインターフェイス３６と、シリアルインターフェイス３８とを有する。記憶部３４は、携帯電話２０から指定されたソケットの第１識別情報（例えばｆｄと呼ぶ）と、代行サーバ３０が通信装置４０と通信するためのソケットの第２識別情報（例えばハンドルと呼ぶ）とを対応付けて記憶する。このように第１識別情報および第２識別情報は異なってもよいが、対応する第１識別情報および第２識別情報は、共に、代行サーバ３０によって生成された同一のソケットを識別する。即ち、代行サーバ３０によって生成されたあるソケットは、携帯電話２０上で動作するタスク２００によっては第１識別情報によって識別され、代行サーバ３０上で動作する通信モジュール３１０によっては第２識別情報によって識別される。【００３３】
ＬＡＮインターフェイス３６は、イーサネット（登録商標）などの第２通信回線３５を介して通信装置４０と通信する。ＬＡＮインターフェイス３６は、携帯電話２０と通信装置４０との通信制御の結果として必要な通信を通信装置４０との間で行う。一方、シリアルインターフェイス３８は、第１通信回線２５を介して携帯電話２０と通信する。第１通信回線２５は、たとえば、シリアル回線、パラレル回線、または、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）などである。シリアルインターフェイス３８は、通信制御の指示を携帯電話２０から受信し、または、通信制御の実行結果を携帯電話２０に送信する。【００３４】
中央処理装置３２は、予めインストールされたプログラムによって、ソケット生成部３００と、通信モジュール３１０と、ＩＤ管理部３２０と、送受信部３３０として機能する。通信モジュール３１０は、例えば、Windows(登録商標)オペレーティングシステムのな
どの、ソケット通信を実現するためのライブラリプログラムによって実現される。そして、通信モジュール３１０は、代行サーバ３０と通信装置４０との間の通信を制御する。ソケット生成部３００は、新たにソケットを生成して第１識別情報に対応付けて管理する指示を受信したことに応じて、代行サーバ３０と通信装置４０との間の通信に用いるソケットを生成して第２識別情報を取得する。ソケットの生成は、通信モジュール３１０に対しシステムコールの呼び出しを行うことによって実現される。【００３５】
ＩＤ管理部３２０は、シリアルインターフェイス３８が受信した第１識別情報とソケット生成部３００が取得した第２識別情報とを対応付けて記憶部３４に記憶させる。送受信部３３０は、ソケットを用いてデータを送受信する指示を当該ソケットの第１識別情報に対応付けてシリアルインターフェイス３８から受信したことに応じ、記憶部３４においてその第１識別情報に対応する第２識別情報を検索する。そして、送受信部３３０は、検索された第２識別情報により識別されるソケットを用いて通信装置４０とデータを送受信する。代行サーバ３０と通信装置４０との間のデータの送受信は、通信モジュール３１０に対しシステムコールの呼び出しを行うことによって実現される。【００３６】
なお、本実施の形態において代行サーバ３０と通信装置４０とは別体に設けられた装置として示したが、同一の情報処理装置が代行サーバ３０および通信装置４０のそれぞれとして機能してもよい。この場合、送受信部３３０は、代行サーバ３０内で動作する他のタスクとの間でＴＣＰ／ＩＰによる通信を行う。このように、代行サーバ３０による制御の対象は、代行サーバ３０内の他のタスクと携帯電話２０との間の通信であってもよい。【００３７】
図８は、携帯電話２０および代行サーバ３０による処理の第１例を示す。タスク２００は、新たなソケットを生成する制御要求を通信モジュール２１０に送る（Ｓ８００）。この制御要求は、たとえばｓｏｃｋｅｔシステムコールを呼び出すことによって実現される。更新部２２０は、この制御要求を受けると、通信デバイス２６と代行サーバ３０とが通信可能か否かに関わらず、新たに生成するソケットの第１識別情報（ｆｄ）を生成する（Ｓ８１０）。次に、更新部２２０は、生成したこの第１識別情報に対応付けて、ソケットが新たに生成された旨を示す生成状態（ＯＰＥＮ状態）を通信状態として記憶部２４に記憶する（Ｓ８２０）。次に、返答部２３０は、この第１識別情報を、通信状態の更新結果としてタスク２００に返答する（Ｓ８２５）。ＢＳＤ Ｓｏｃｋｅｔ ＡＰＩの規格では、ｓｏｃｋｅｔシステムコールが失敗すると−１がリターンされ、ｓｏｃｋｅｔシステムコールが成功するとソケットの識別情報がリターンされることが定められている。このため、ソケットの第１識別情報を返答することは、通信状態の更新が成功した旨を返答したこととなる。更新結果の返答を受けて、タスク２００は、アプリケーションプログラムによって定められた次の処理を行う（Ｓ８３０）。【００３８】
通信デバイス２６と代行サーバ３０とが通信可能な状態においては、または、通信デバイス２６と代行サーバ３０とが通信可能な状態になると、続いて次の処理が行われる。制御指示部２４０は、記憶部２４に記憶された通信状態が生成状態（ＯＰＥＮ状態）であることを条件に、新たにソケットを生成してその第１識別情報に対応付けて管理する指示を代行サーバ３０に対し送信する（Ｓ８４０）。例えば、制御指示部２４０は、実行すべきｓｏｃｋｅｔシステムコールを識別するＡＰＩ番号と、生成したソケットに対応付けて管理すべき第１識別情報（ｆｄ）とを送信してもよい。更に、制御指示部２４０は、タスク２００からシステムコールの呼び出しを受けた場合に指定された引数を代行サーバ３０に送信してもよい。この指示を受けて、ソケット生成部３００は、代行サーバ３０と通信装置４０との間の通信に用いるソケットを生成してそのソケットの第２識別情報を生成する（Ｓ８５０）。そして、ＩＤ管理部３２０は、受信した第１識別情報と生成した第２識別情報とを対応付けて管理する。【００３９】
以上、ｓｏｃｋｅｔシステムコールの例のように、ノンブロッキング制御要求を受けた場合においては、更新部２２０は、その制御要求に応じた制御の完了を待たずに通信状態を更新する。そして、返答部２３０は、その通信状態の更新結果をタスク２００に返答する。これにより、タスク２００は、携帯電話２０と代行サーバ３０との間の第１通信回線２５が通信可能でない場合であっても、その語の処理を継続できる。なお、ｓｏｃｅｋｔシステムコールはノン・ブロッキング制御要求の一例であり、ｌｉｓｔｅｎシステムコールについても図８の例と同様である。即ち、通信モジュール２１０が、ソケットにバッファを割り当てるためのｌｉｓｔｅｎシステムコールの呼び出しを受けると、携帯電話２０と代行サーバ３０との間の第１通信回線２５が通信可能でない場合であっても、更新部２２０は通信状態を割当済状態（ＬＩＳＴＥＮ状態）に更新し、返答部２３０は、バッファの割当が成功した旨をタスク２００に返答する。このように、リソースの割当要求に対しては実際の制御を通信開始まで遅らせることで、携帯電話２０と代行サーバ３０とが通信不能な場合であってもタスク２００の処理を継続させることができる。【００４０】
図９は、携帯電話２０および代行サーバ３０による処理の第２例を示す。タスク２００は、通信デバイス２６と通信装置４０とがソケットを用いて通信可能か否かを検出する制御要求をそのソケットの第１識別情報に対応付けて通信モジュール２１０に送信する（Ｓ９００）。この制御要求は、たとえばｓｅｌｅｃｔシステムコールを呼び出すことによって実現される。更新部２２０は、この制御要求を受けると、その第１識別情報に対応するソケットの通信状態を通信待ち状態に更新する（Ｓ９１０）。そして、更新部２２０は、通信デバイス２６と代行サーバ３０とが通信可能となるまでタスク２００の処理を中断させて待機する（Ｓ９２０）。この場合、更新部２２０は、その第１識別情報に対応付けて、待機しているタスク２００を識別する識別情報を記憶部２４に対応付けて記憶してもよい。【００４１】
通信デバイス２６と代行サーバ３０とが通信可能な状態において、返答部２３０は、通信状態が通信待ち状態であることを条件に、次に示す複数の指示を代行サーバ３０に送る（Ｓ９３０）。その指示とは、新たにソケットを生成して第１識別情報に対応付けて管理する指示（例えばｓｏｃｋｅｔシステムコールを実行する旨の指示）、通信要求を格納するバッファをそのソケットに割り当てる指示（例えばｌｉｓｔｅｎシステムコールを実行する旨の指示）、および、そのソケットを用いて通信可能か否かを検出する指示（例えばｓｅｌｅｃｔシステムコールを実行する指示）である。返答部２３０は、それぞれのシステムコールを識別するＡＰＩ番号と、制御対象となるソケットの第１識別情報とを対応付けて代行サーバ３０に送信してもよい。【００４２】
これらの指示を受けて、ソケット生成部３００は、通信の制御を行う（Ｓ９４０）。まず、ソケット生成部３００は、代行サーバ３０と通信装置４０との間の通信に用いるソケットを生成してそのソケットの第２識別情報を生成する（Ｓ９４０）。そして、ＩＤ管理部３２０は、その第２識別情報を第１識別情報に対応付けて記憶部３４に記憶する。なお、ソケット生成部３００は、新たにソケットを生成して識別情報に対応付けて管理する指示を受信した場合であっても、既にその識別情報が第１識別情報として記憶部３４に記憶されている場合には、新たにソケットを生成しなくてもよい。その場合、ＩＤ管理部３２０および送受信部３３０は、既に記憶されている第１識別情報に対応する第２識別情報により識別されるソケットについて、その他の処理を行う。【００４３】
ソケット生成部３００は、第２識別情報により識別されるソケットに、通信要求を格納するバッファを割り当てる。そして、送受信部３３０は、そのソケットを用いて通信装置４０とデータを送受信する。例えば、送受信部３３０は、通信装置４０と通信することにより、そのソケットを用いた通信が可能か否かを検出する。検出が完了すると検出結果が通信モジュール２１０に通知される。受信部２５０が、代行サーバ３０による通信可能か否かの検出結果を受信した場合において、返答部２３０は、その検出結果をタスク２００に返答する（Ｓ９５０）。また、更新部２２０は、第１識別情報に対応する通信状態を割当済状態に戻す。これを受けて、タスク２００は、その次の処理を継続する（Ｓ９６０）。【００４４】
以上、図９を参照して説明したように、データの送受信などを要するブロッキング制御要求については、当該要求に応じた制御の完了に応じてその結果がタスクに返答される。即ち、タスク２００は送受信が完了するまで処理を中断する。通信モジュール２１０は、最近に受けたシステムコールがｓｅｌｅｃｔのみであっても、以前に受けていたｓｏｃｋｅｔシステムコールおよびｌｉｓｔｅｎシステムコールに対応する制御を代行サーバ３０に指示する。これにより、携帯電話２０における通信状態と代行サーバ３０における通信状態の整合を保つことができる。【００４５】
図１０は、携帯電話２０および代行サーバ３０による処理の第３例を示す。図１０を参照して、ソケット通信を行うアプリケーションプログラムの処理の典型例を説明する。タスク２００が通信モジュール２１０に対しｓｏｃｋｅｔシステムコールの呼び出しを行うと（Ｓ１０００）、更新部２２０はソケットの第１識別情報を生成し（Ｓ１０１０）、返答部２３０はその第１識別情報をタスク２００に返答する（Ｓ１０２０）。タスク２００が、指定したポート番号をソケットに割り当てるｂｉｎｄシステムコールの呼び出しを行うと（Ｓ１０３０）、更新部２２０は、そのポート番号をそのソケットの第１識別情報に対応付けて記憶部２４に記憶する。そして、返答部２３０は、ポート番号の割当が成功した旨をタスク２００に返答する（Ｓ１０４０）。【００４６】
タスク２００が通信モジュール２１０に対しｌｉｓｔｅｎシステムコールの呼び出しを行うと（Ｓ１０５０）、更新部２２０は通信状態を割当済状態に更新し、返答部２３０はバッファの割当が成功した旨をタスク２００に返答する（Ｓ１０５５）。次に、タスク２００が、通信装置４０からの通信要求に対し通信許可の返答を行うａｃｃｅｐｔシステムコールの呼び出しを行うと（Ｓ１０６０）、更新部２２０は、新たに生成するソケットの第１識別情報を生成して記憶部２４に記憶させる。また、更新部２２０は、その第１識別情報に対応する通信状態を通信受入状態（ＡＣＣＥＰＴ状態）に更新し、携帯電話２０と代行サーバ３０とが通信可能となるまでタスク２００の処理を中断する。
このように、ａｃｃｅｐｔシステムコールなどのブロッキング制御要求が発行されるまではタスク２００の処理は中断せずに実行される。【００４７】
携帯電話２０と代行サーバ３０とが通信可能な状態において、制御指示部２４０は、次に示す複数の指示を代行サーバ３０に送る（Ｓ１０６５）。その指示とは、新たにソケットを生成して第１識別情報に対応付けて管理する指示（例えばｓｏｃｋｅｔシステムコールを実行する旨の指示）、通信装置４０から受ける通信要求を格納するバッファをそのソケットに割り当てる指示（例えばｌｉｓｔｅｎシステムコールを実行する旨の指示）、および、通信装置４０からの通信要求に対し通信許可の返答を行う指示（例えばａｃｃｅｐｔシステムコールを実行する旨の指示）である。制御指示部２４０は、第１識別情報に対応付けてポート番号が対応付けて記憶されていることを条件に、当該ポート番号を割り当てるべき指示をそのポート番号に対応付けて代行サーバ３０に対し更に送信してもよい。【００４８】
また、制御指示部２４０は、ａｃｃｅｐｔシステムコールによって新たに生成するソケットに対応付けて管理すべき第１識別情報（ｎｅｗｆｄ）を生成する。具体的には、制御指示部２４０は、記憶部２４の中で空き状態に対応付けられているエントリを検索する。そして、制御指示部２４０は、そのエントリに対応するソケットの識別情報を取得する。例えば、図３の３行目に例示するエントリは空き状態に対応付けられている。このエントリは、第１識別情報として２を有するエントリの次の行に位置する。このため、制御指示部２４０は、２に１を加えた３を第１識別情報（ｎｅｗｆｄ）として生成し、記憶部２４に記憶させる。そして、制御指示部２４０は、新たに生成した第１識別情報（ｎｅｗｆｄ）と、代行サーバ３０によって生成されたソケットとを対応付けさせるべく、当該第１識別情報（ｎｅｗｆｄ）を代行サーバ３０に通知する。【００４９】
これらの指示を受けて、ソケット生成部３００は、ｓｏｃｋｅｔシステムコール、ｂｉｎｄシステムコール、ｌｉｓｔｅｎシステムコール、および、ａｃｃｅｐｔシステムコールを呼び出す（Ｓ１０７０）。また、代行サーバ３０の識別情報管理部３２０は、通知を受けた第１識別情報（ｎｅｗｆｄ）と、新たに生成するソケットの第２識別情報とを対応付けて記憶部３４に記憶する。これらのシステムコールの実行結果は通信モジュール２１０に返信される（Ｓ１０７５）。これを受けて、更新部２２０は、第１識別情報（ｆｄ）に対応する通信状態を割当済状態（ＬＩＳＴＥＮ状態）に戻し、第１識別情報（ｎｅｗｆｄ）に対応する通信状態を接続済状態に更新する。返答部２３０は、これらの制御の実行結果として第１識別情報（ｎｅｗｆｄ）をタスク２００に返答する（Ｓ１０８０）。これによりタスク２００は処理の中断を解除して次の処理を行うことができる。【００５０】
以上、本発明の実施の形態によれば、携帯電話２０および代行サーバ３０間の第１通信回線２５が有効でない場合であっても、ソケットに関する資源の確保・解放など、実際の通信を要しない制御については、制御が成功したものとしてタスク２００の実行を継続させることができる。そして、通信が実際に開始される場合に初めてタスク２００の実行を停止させ、資源の確保・解放などの処理を行う。これにより、第１通信回線２５の切断が起こりうる場合であっても、タスク２００によるＴＣＰ／ＩＰの通信を継続させることができる。この結果、第１通信回線２５としてはイーサネット（登録商標）などではなく、シリアルインターフェイスやパラレルインターフェイスなどを採用することができ、更に第１通信回線２５を一時的に切断することもできる。これにより、携帯電話２０の動作状況に影響を与えないために、通常は携帯電話２０を代行サーバ３０と切断した状態で動作させ、必要な場合にのみ代行サーバ３０に接続してデバッグすることもできる。【００５１】
図１１は、代行サーバ３０として機能する情報処理装置６００のハードウェア構成の一例を示す。情報処理装置６００は、ホストコントローラ１０８２により相互に接続されるＣＰＵ１０００、ＲＡＭ１０２０、及びグラフィックコントローラ１０７５を有するＣＰＵ周辺部と、入出力コントローラ１０８４によりホストコントローラ１０８２に接続される通信インターフェイス１０３０、ハードディスクドライブ１０４０、及びＣＤ−ＲＯＭドライブ１０６０を有する入出力部と、入出力コントローラ１０８４に接続されるＲＯＭ１０１０、フレキシブルディスクドライブ１０５０、及び入出力チップ１０７０を有するレガシー入出力部とを備える。【００５２】
ホストコントローラ１０８２は、ＲＡＭ１０２０と、高い転送レートでＲＡＭ１０２０をアクセスするＣＰＵ１０００及びグラフィックコントローラ１０７５とを接続する。ＣＰＵ１０００は、ＲＯＭ１０１０及びＲＡＭ１０２０に格納されたプログラムに基づいて動作し、各部の制御を行う。例えばＣＰＵ１０００は、図７を参照して説明した中央処理装置３２として機能する。グラフィックコントローラ１０７５は、ＣＰＵ１０００等がＲＡＭ１０２０内に設けたフレームバッファ上に生成する画像データを取得し、表示装置１０８０上に表示させる。これに代えて、グラフィックコントローラ１０７５は、ＣＰＵ１０００等が生成する画像データを格納するフレームバッファを、内部に含んでもよい。【００５３】
入出力コントローラ１０８４は、ホストコントローラ１０８２と、比較的高速な入出力装置である通信インターフェイス１０３０、ハードディスクドライブ１０４０、及びＣＤ−ＲＯＭドライブ１０６０を接続する。通信インターフェイス１０３０は、ネットワークを介して外部の装置と通信する。例えば通信インターフェイス１０３０は、図７を参照して説明したＬＡＮインターフェイス３６として機能する。ハードディスクドライブ１０４０は、情報処理装置６００が使用するプログラム及びデータを格納する。ＣＤ−ＲＯＭドライブ１０６０は、ＣＤ−ＲＯＭ１０９５からプログラム又はデータを読み取り、ＲＡＭ１０２０又はハードディスクドライブ１０４０に提供する。ＲＡＭ１０２０は、図７を参照して説明した記憶部３４として機能してもよい。【００５４】
また、入出力コントローラ１０８４には、ＲＯＭ１０１０と、フレキシブルディスクドライブ１０５０や入出力チップ１０７０等の比較的低速な入出力装置とが接続される。入出力チップ１０７０は、例えばシリアルインターフェイス３８などとして機能してもよい。ＲＯＭ１０１０は、情報処理装置６００の起動時にＣＰＵ１０００が実行するブートプログラムや、情報処理装置６００のハードウェアに依存するプログラム等を格納する。フレキシブルディスクドライブ１０５０は、フレキシブルディスク１０９０からプログラム又はデータを読み取り、入出力チップ１０７０を介してＲＡＭ１０２０またはハードディスクドライブ１０４０に提供する。入出力チップ１０７０は、フレキシブルディスク１０９０や、例えばパラレルポート、シリアルポート、キーボードポート、マウスポート等を介して各種の入出力装置を接続する。【００５５】
情報処理装置６００に提供されるプログラムは、フレキシブルディスク１０９０、ＣＤ−ＲＯＭ１０９５、又はＩＣカード等の記録媒体に格納されて利用者によって提供される。プログラムは、入出力チップ１０７０及び/又は入出力コントローラ１０８４を介して
、記録媒体から読み出され情報処理装置６００にインストールされて実行される。また携帯電話２０を制御する制御プログラムは、入出力チップ１０７０を介して携帯電話２０に供給され、携帯電話２０にインストールされた実行されてもよい。プログラムが情報処理装置６００等に働きかけて行わせる動作は、図１から図１０において説明した代行サーバ３０または携帯電話２０おける動作と同一であるから、説明を省略する。【００５６】
以上に示したプログラムは、外部の記憶媒体に格納されてもよい。記憶媒体としては、フレキシブルディスク１０９０、ＣＤ−ＲＯＭ１０９５の他に、ＤＶＤやＰＤ等の光学記録媒体、ＭＤ等の光磁気記録媒体、テープ媒体、ＩＣカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けたハードディスク又はＲＡＭ等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムを情報処理装置６００に提供してもよい。【００５７】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【図面の簡単な説明】
【００５８】
【図１】図１は、通信システム１０の全体構成を示す。
【図２】図２は、携帯電話２０の機能構成を示す。
【図３】図３は、記憶部２４のデータ構造の一例を示す。
【図４】図４は、通信モジュール２１０の機能構成を示す。
【図５】図５は、携帯電話２０と通信装置４０との間の通信の通信状態の状態遷移を示す図である。
【図６】図６は、携帯電話２０の通信状態とそれに対応して通信装置４０に対し送信する指示とを示す。
【図７】図７は、代行サーバ３０の機能構成を示す。
【図８】図８は、携帯電話２０および代行サーバ３０による処理の第１例を示す。
【図９】図９は、携帯電話２０および代行サーバ３０による処理の第２例を示す。
【図１０】図１０は、携帯電話２０および代行サーバ３０による処理の第３例を示す。
【図１１】図１１は、代行サーバ３０として機能する情報処理装置６００のハードウェア構成の一例を示す。
【図１】
2007123025.tif 000003
【図２】
2007123025.tif 000004
【図３】
2007123025.tif 000005
【図４】
2007123025.tif 000006
【図５】
2007123025.tif 000007
【図６】
2007123025.tif 000008
【図７】
2007123025.tif 000009
【図８】
2007123025.tif 000010
【図９】
2007123025.tif 000011
【図１０】
2007123025.tif 000012
【図１１】
2007123025.tif 000013
【国際調査報告】
2007123025.tif 000014
2007123025.tif 000015
2007123025.tif 000016
2007123025.tif 000017