(57)【要約】【課題】  ポートを使用する際に、使用したいポート番号が実際に使用できるかどうか、アプリケーションから判断出来ない場合がある。【解決手段】  通信インタフェースの所定のポート番号への接続に成功した場合、接続する所定のポート番号を変更し、所定のポート番号への接続に失敗した場合、当該接続に失敗したポート番号をオープンするための処理を行う。【選択図】  図１
2013196122.tif 000002
【特許請求の範囲】
【請求項１】
通信装置の制御方法であって、
通信インタフェースの所定のポート番号に接続するための接続工程と、
前記接続工程において所定のポート番号への接続に成功した場合、前記接続工程において接続する所定のポート番号を変更する変更工程、
前記接続工程において所定のポート番号への接続に失敗した場合、当該接続に失敗したポート番号をオープンするための処理を行うオープン工程と、
を有することを特徴とする制御方法。
【請求項２】
前記オープン工程におけるオープン処理が成功した場合、オープンしたポート番号を通信相手装置に通知する通知工程を有することを特徴とする請求項１に記載の制御方法。
【請求項３】
前記オープン工程におけるオープン処理が失敗した場合、前記接続工程において接続する所定のポート番号を変更する工程を有することを特徴とする請求項１または請求項２に記載の制御方法。
【請求項４】
前記接続工程において接続を試みる宛先のアドレスは、前記通信インタフェースに割り当てられたアドレスであることを特徴とする請求項１乃至請求項３の何れか１項に記載の制御方法。
【請求項５】
前記接続工程において接続を試みる宛先のアドレスはループバックアドレスであることを特徴とする請求項１乃至請求項３の何れか１項に記載の制御方法。
【請求項６】
通信装置であって、
通信インタフェースの所定のポート番号に接続するための接続手段と、
前記接続手段による接続処理において所定のポート番号への接続に成功した場合、前記接続手段において接続する所定のポート番号を変更する変更手段と、
前記接続手段において所定のポート番号への接続に失敗した場合、当該接続に失敗したポート番号をオープンするための処理を行うオープン手段と、
を有することを特徴とする通信装置。
【請求項７】
前記オープン手段によるオープン処理が成功した場合、オープンしたポート番号を通信相手装置に通知する通知手段を有することを特徴とする請求項６に記載の通信装置。
【請求項８】
前記オープ手段によるオープン処理が失敗した場合、前記接続手段により接続する所定のポート番号を変更する手段を有することを特徴とする請求項６または請求項７に記載の通信装置。
【請求項９】
前記接続手段により接続を試みる宛先のアドレスは、前記通信インタフェースに割り当てられたアドレスであることを特徴とする請求項６乃至請求項８の何れか１項に記載の通信装置。
【請求項１０】
前記接続手段により接続を試みる宛先のアドレスはループバックアドレスであることを特徴とする請求項６乃至請求項８の何れか１項に記載の通信装置。
【請求項１１】
請求項１乃至請求項５の何れか１項に記載の通信装置の制御方法をコンピュータに実行させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信に使用するポート番号を決定する際の通信装置の制御方法及び該制御方法を実行する通信装置に関する。
【背景技術】
【０００２】
通信装置同士が通信するためのプロトコルとして、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）がある。多くの一般的なプログラム環境において、ＴＣＰの動作はＯＳの一部として実装される。また、ユーザランドで動作するアプリケーションはＯＳ（Ｏｐｅｒａｔｉｏｎ  Ｓｙｓｔｅｍ）が用意するＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）を使用することでＴＣＰを用いた通信処理を行う。例えばＵＮＩＸ（商標登録）では、Ｓｏｃｋｅｔと呼ばれるＡＰＩでこの機能を実現している。
またＴＣＰでは、ＴＣＰ通信を行う装置上で動作する送受信アプリケーションを識別するために、ポート番号と呼ばれる１６ビットの識別子を使用する。異なるアプリケーション間で同一のポート番号が使用されることを防ぐために、ＴＣＰを実装するＯＳでは通常ポート番号の重複利用が発生していないかを確認する重複チェックを行っている。例えばＵＮＩＸ（商標登録）では、アプリケーションがポート番号を指定するｂｉｎｄ関数において重複チェックを行っており、すでに他のアプリケーションがポート番号を使用している場合は、当ｂｉｎｄ関数呼び出しがエラーで返るようになっている。これによってアプリケーションは、自らが使用したいポート番号が実際に使用できるかどうか確認することが可能になる。また、使用できない場合には別のポート番号を使用するといったような対処を行うことができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１１−１７５４３９
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、開発プラットフォームによっては、上記のような重複チェックの機構が用意されていない場合がある。また用意されていても、詳細な動作仕様がアプリケーション開発者に開示されないような開発環境も存在する。このような環境において、アプリケーションは使用したいポート番号が実際に使用できるかどうか確認することが出来ず、実際には使用できないポート番号を使用できるものとして誤認してしまう懸念があった。
本発明は上記課題に鑑みてなされたものであり、ポート番号の重複チェック機能の動作が明確でない状況においても、特定のポート番号が使用できるかどうか確認できるようにすることを目的とするものである。
【課題を解決するための手段】
【０００５】
本願発明は、通信装置の制御方法であって、通信インタフェースの所定のポート番号に接続するための接続工程と、前記接続工程において所定のポート番号への接続に成功した場合、前記接続工程において接続する所定のポート番号を変更する変更工程、前記接続工程において所定のポート番号への接続に失敗した場合、当該接続に失敗したポート番号をオープンするための処理を行うオープン工程と、を有することを特徴とする。
【発明の効果】
【０００６】
本発明によれば、ポート番号の重複チェック機能の動作が明確でない状況においても、特定のポート番号が使用できるかどうかを確認することが可能になる。
【図面の簡単な説明】
【０００７】
【図１】本発明の一実施形態に係わる通信装置のハードウェア構成の一例を示す図である。
【図２】本発明の一実施形態に係わる通信装置の機能ブロック構成の一例を示す図である。
【図３】本発明の一実施形態に係わる通信装置の動作フローを表すフローチャートである。
【図４】本発明の一実施形態に係わる通信装置の動作を表すシーケンスチャートである。
【発明を実施するための形態】
【０００８】
以下、本実施形態に係る通信装置について、図面を参照しながら詳細に説明する。
【０００９】
図１は、本実施形態における通信装置１００のハードウェア構成図である。
【００１０】
表示部１０１はユーザに対する各種表示を行う。操作部で１０２は、通信装置１００をユーザが操作するための操作ボタン、スイッチ等を有する。表示部１０１、操作部１０２は、タッチパネルにより構成することもできる。記憶部１０３は無線通信ネットワーク情報、データ送受信情報、通信機器情報など各種データを記憶、管理する。電源部１０４は通信装置１００の各部に電力を供給し、外部電源からの電力、内蔵バッテリの電力を供給する。時計部１０５は時間を計測する。制御部１０６はＲＯＭ１０７、ＲＡＭ１０８に記憶される制御プログラムに従って通信装置１００を制御する。ＲＯＭ１０７は制御命令つまりコンピュータプログラムが格納されている。ＲＡＭ１０８は制御部１０６のワークエリアとして利用される。制御部１０６はＲＯＭ１０７、ＲＡＭ１０８に記憶される制御プログラムを実行することにより、後述の図３、図４の説明での各部を構成する。
【００１１】
アンテナ１１１は無線ＬＡＮ通信を行うためのアンテナである。無線ＬＡＮアンテナ制御部１０９はアンテナ１１１を制御する。通信インタフェース部（通信ＩＦ）１１０はネットワークの検索、構築、接続、管理など通信処理を行う。なお、本実施形態では、通信ＩＦ１１０はＩＥＥＥ８０２．１１規格準拠の無線ＬＡＮインタフェースとして説明する。
【００１２】
図２は、通信装置１００を機能的に表した通信装置２００の機能ブロック図である。
【００１３】
通信装置２００の機能ブロックは、ＲＯＭ１０７にプログラムとして記憶され、制御部１０６によって実行されるソフトウェア構成である。なお、通信端末の機能ブロックに含まれる一部乃至全部がハードウェア化されていてもよい。図２のブロック構成は一例であり、ＴＣＰ処理部２３０とＩＰ処理部２４０を１つのブロックで構成したり、ＴＣＰ処理部２３０を複数のブロックに分散したりするなど、各ブロックの役割構成は図２の例示に限定されるものではない。
【００１４】
サーバ処理部２１０は、通信相手である外部通信装置と通信を行う際のサーバ機能を実現する処理部である。後述する図３の処理は、サーバ処理部２１０の処理に含まれる。ＴＣＰ処理部２３０は、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）の通信処理を実現する処理部である。ＩＰ処理部２４０はＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）の通信処理を実現する処理部である。Ｓｏｃｋｅｔインタフェース２２０はＴＣＰ処理部２３０、ＩＰ処理部２４０の通信プロトコル処理部に対するインタフェースを実現する。なお、本実施形態ではＴＣＰ処理部２３０およびＩＰ処理部２４０はＯＳ（オペレーションシステム）の一部として実装される。またサーバ処理部２１０は、アプリケーションとして実装される。Ｓｏｃｋｅｔインタフェース２２０はアプリケーションとＯＳの間に位置するインタフェースである。
【００１５】
図３は、通信装置１００の制御部１０６がＲＯＭ１０７、ＲＡＭ１０８に記憶される制御プログラムを実行して実施され、無線ＬＡＮ通信による外部通信装置との通信処理を開始した際の動作フローチャートである。通信装置１００の制御部１０６は、図３の処理を実行し、オープンできたポート番号を使ってデータ通信を開始する。
【００１６】
なお、図３の説明は制御部１０６が実施するものとして説明するが、図３の処理は通信インタフェース部（無線ＬＡＮインタフェース部）１１０が実施してもよい。また、図３の処理は、図４で説明するように図２の機能ブロックが実施する処理でもある。
【００１７】
本処理を開始すると通信装置１００の制御部１０６のアドレス取得部は、無線ＬＡＮインタフェースに割り当てられたＩＰアドレスを取得する（Ｓ３０１）。続いて制御部１０６の設定部は、外部通信装置との通信で使用するポート番号（ｎ）を仮に設定する（Ｓ３０２）。本実施例においては、まず所定のポート番号としてｎを４９１５２番に仮設定する。次に、制御部１０６の接続部はＳ３０１で取得したＩＰアドレスのＳ３０２で決めたポート番号宛にＴＣＰの接続処理を試みる（Ｓ３０３）。制御部１０６の判定部は、ＴＣＰの接続処理が成功した場合（Ｓ３０４でＹｅｓ）、通信装置１００はポート番号ｎが使用できないものと判定する。そして、制御部１０６の切断部は、ポートｎに対する接続を切断する（Ｓ３０５）。切断部がポートｎに対する接続を切断した後、制御部１０６の設定部は接続対象とするポート番号を別のポート番号に変更し、該変更後のポート番号の使用を試みる。具体的には、ｎに１を加算し、新たなｎの値を外部通信装置との通信で使用するポート番号（ｎ）を仮に設定する（Ｓ３０６）。新たなｎの値が設定値として定める最大値を超えなければ（Ｓ３０７でＮｏ）、制御部１０６の接続部は再度Ｓ３０１で取得したＩＰアドレスのＳ３０６で加算したポート番号宛にＴＣＰの接続処理を試みる（Ｓ３０３）。Ｓ３０６でｎを加算した結果ｎの値が設定値として定める最大値を超える場合（Ｓ３０７でＹｅｓ）、制御部１０６の設定部は、通信装置１００は使用できるポート番号が存在しないと判断し、エラーとして（Ｓ３０８）本処理を終了する。
【００１８】
Ｓ３０３の接続処理の結果、ＴＣＰの接続処理に失敗した場合（Ｓ３０４でＮｏ）、制御部１０６の判定部はＴＣＰの接続処理に失敗したポート番号ｎが使用可能であると判定する。そして、制御部１０６のポート制御部はＴＣＰの接続処理に失敗したポート番号ｎを外部通信装置からの待ち受け用ポートとしてオープンする（Ｓ３０９）。オープン処理に成功した場合（Ｓ３１０でＹｅｓ）、制御部１０６の通知部はオープンしたポート番号ｎを外部通信装置に通知して（Ｓ３１１）、本処理を成功終了する。本実施例では、通信装置１００は無線ＬＡＮインタフェースからポート番号ｎの情報を含んだマルチキャストパケットを送信することで、待ち受け用ポート番号ｎを外部装置に通知する。
【００１９】
また、Ｓ３０９のオープン処理に失敗した場合は（Ｓ３１０でＮｏ）、制御部１０６のポート制御部はープン処理に失敗したポート番号ｎが使用できないものと判定する。その後、制御部１０６の設定部はＳ３０３の接続処理に失敗した場合と同様に、別のポート番号の使用を試みる。
【００２０】
次に図４を用いて、通信装置１００において、アプリケーションが待ち受けポートをオープンする際の動作フローの一例を示す。
【００２１】
前提として、通信装置１００のアプリケーション（サーバ処理部２１０）が処理を開始する前に、ＩＰ処理部２４０のアドレス割り当て処理により無線ＬＡＮインタフェースにＩＰアドレス１９２．１６８．０．１が割り当てられる（Ｓ４０１）。また、ＴＣＰ処理部２３０のポートオープン処理により上記ＩＰアドレスの４９１５２番ポートが既にオープンされている（Ｓ４０２）ものとする。なお、Ｓ４０１でＩＰアドレスを設定する方法はどのような方法であってもかまわない。例えばＤＨＣＰ（Ｄｙｎａｍｉｃ  Ｈｏｓｔ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）を用いて設定しても良いし、ユーザ操作によって指定されたＩＰアドレスを設定しても良い。同様に、Ｓ４０２で４９１５２番ポートをオープンする方法も、どのような方法であってもかまわない。例えばＯＳがオープンしたものでも良いし、他のアプリケーションがオープンしたものでも良い。また、アプリケーション（サーバ処理部２１０）とＴＣＰ処理部２３０間の通信、アプリケーション（サーバ処理部２１０）とＩＰ処理部２４０間の通信は、Ｓｏｃｋｅｔインタフェース２２０を介して行われる。
【００２２】
上記前提の状態で、アプリケーション（サーバ処理部２１０）が接続待ち受け処理を開始すると（Ｓ４０３）、アプリケーションはＯＳのＩＰ処理部２４０に対し、ＯＳから無線ＬＡＮインタフェースに割り当てられたＩＰアドレスの通知を要求する（Ｓ４０４）。ＯＳのＩＰ処理部２４０は、アプリケーション（サーバ処理部２１０）に無線ＬＡＮインタフェースに割り当てられたＩＰアドレスを通知することにより、アプリケーションは無線ＬＡＮインタフェースに割り当てられたＩＰアドレスを取得する（Ｓ４０５）。
【００２３】
続いてアプリケーション（サーバ処理部２１０）は、ＯＳのＴＣＰ処理部２３０に対して、Ｓ４０５で取得したＩＰアドレスの４９１５２番ポート宛にＴＣＰの接続を試みる（Ｓ４０６）。Ｓ４０２ですでに４９１５２番ポートはオープンしているので、Ｓ４０６の接続処理は成功し、接続処理に成功したことがＴＣＰ処理部２３０からアプリケーション（サーバ処理部２１０）に通知される（Ｓ４０７）。アプリケーション（サーバ処理部２１０）はＳ４０７の通知を受けて、４９１５２番ポートは使用できないと判断し、Ｓ４０６、Ｓ４０７で確立した接続を切断する（Ｓ４０８、Ｓ４０９）。続いてアプリケーション（サーバ処理部２１０）は、ポート番号を変更し（図３のＳ３０６、Ｓ３０７）、新ポート番号を４９１５３番にする。そして、ＴＣＰ処理部２３０に対して、Ｓ４０５で取得したＩＰアドレスの４９１５３番ポート宛に、ＴＣＰの接続を試みる（Ｓ４１０）。
【００２４】
通信装置１００において４９１５３番ポートはまだ使用されていないので（オープンされていない状態）、Ｓ４１０の接続処理は失敗し、ＴＣＰ処理部２３０は接続失敗をアプリケーション（サーバ処理部２１０）に通知する（Ｓ４１１）。アプリケーション（サーバ処理部２１０）はＳ４１１の通知を受けて、４９１５３番ポートが使用できると判断し、ＴＣＰ処理部２３０に対して、４９１５３番ポートのオープンを試みる（Ｓ４１２）。ＯＳのＴＣＰ処理部２３０はＳ４１２の要求を受けて４９１５３番ポートをオープンし、処理の結果（成功）をアプリケーション（サーバ処理部２１０）に通知する（Ｓ４１４）。
【００２５】
アプリケーション（サーバ処理部２１０）はポートのオープンに成功すると、オープンしたポート番号を外部通信装置に通知する（Ｓ４１５）。ポート番号の外部通信装置への通知は、アプリケーション（サーバ処理部２１０）からの指示に従い、ＴＣＰ処理部２３０、ＩＰ処理部２４０の通知のためのプロトコルデータを通信フレームに追加する。そして、プロトコルデータの追加後に、通信インタフェース部１１０を介して通信相手である外部通信装置に送信される。
【００２６】
Ｓ４１５の通知を受けて、外部通信装置は接続先のポート番号（４９１５３番）を認識する。外部通信装置はＳ４１５で受信したポート番号にＴＣＰの接続を行う（Ｓ４１６）。通信装置１００は、通信インタフェース部１１０を介して受信したパケットをＩＰ処理部２４０、ＴＣＰ処理部２３０で順に処理する。そして、接続を受け入れたことをＴＣＰ処理部２３０がアプリケーション（サーバ処理部２１０）に通知することで外部通信装置とのポート番号（４９１５３番）を利用した接続が行われる（Ｓ４１６）。
【００２７】
これ以降通信装置１００と外部通信装置間でデータ通信（Ｓ４１７）が可能になる。
【００２８】
以上が本発明の代表的な実施形態の一例であるが、本発明は、上記及び図面に示す実施形態に限定することなく、その要旨を変更しない範囲内で適宜変形して実施できるものである。
【００２９】
上記実施形態において、通信装置１００は無線ＬＡＮインタフェースを用いて外部通信装置と通信するものとしたが、本発明はこれを限定するものではない。例えば通信装置１００は有線ＬＡＮのインタフェースも具備し、有線ＬＡＮのインタフェースを用いて外部通信装置と通信するものとしても良い。その場合、図３に示すＳ３０１、Ｓ３０３、Ｓ３０９、Ｓ３１１の各処理は、すべて有線ＬＡＮインタフェースに対して実行される。
【００３０】
また、上記実施形態においては、外部通信装置と通信するインタフェースのＩＰアドレスを取得し（Ｓ３０１）、取得したＩＰアドレスに対して接続を試みる（Ｓ３０３）としたが、接続を試みる宛先アドレスはループバックアドレスでも良い。
【００３１】
また、上記実施形態において接続を試みるポート番号（ｎ）の初期値を４９１５２としたが、本発明はこれを限定するものではない。ポート番号の仕様として規定される範囲の値であれば、任意の値をｎの初期値としてかまわない。
【００３２】
また、ポート番号が使用できないと判断した後、次に接続を試みるポート番号はｎに１を加えた値であるとし（Ｓ３０６）、ｎが設定値を超えるまで接続処理を繰り返すものとしたが、本発明はこれを限定するものではない。例えば、Ｓ３０６で指定する次に接続を試みるポート番号は、一定範囲内でランダムに決定されるものでも良い。また、Ｓ３０７で示す終了条件は、例えばＳ３０３の接続処理を試行した回数で判定しても良いし、図３の処理を開始してからの経過時間を基に判定するとしても良い。
【００３３】
また、オープンに成功したポート番号ｎを外部通信装置に通知する際（Ｓ３１１）、通信装置１００は無線ＬＡＮインタフェースからマルチキャストパケットを送信することでこれを通知するとしたが、本発明はこれを限定するものではない。例えば、ブロードキャストパケットやユニキャストパケットで通知してもかまわない。さらには無線ＬＡＮ以外のインタフェース（赤外線通信、Ｂｌｕｅｔｏｏｔｈ（商標登録）、ＮＦＣ（Ｎｅａｒ  Ｆｉｅｌｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ）、３ＧＰＰが策定する携帯電話通信方式（３Ｇ、ＬＴＥ）など）を用いて通知するとしてもかまわない。
【００３４】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００３５】
１００  本発明を実施する通信装置
１０１  表示部
１０２  操作部
１０３  記憶部
１０４  電源部
１０５  時計部
１１６  制御部
１０７  ＲＯＭ
１０８  ＲＡＭ
１０９  無線ＬＡＮアンテナ制御部
１１０  通信インタフェース部
１１１  無線ＬＡＮアンテナ
【図１】
2013196122.tif 000003
【図２】
2013196122.tif 000004
【図３】
2013196122.tif 000005
【図４】
2013196122.tif 000006