(57)【要約】【課題】  第一のネットワーク装置に備えられたプロトコルスタックと第二のネットワーク装置に備えられたプロトコルスタックが重複ポート番号に対して同時にデータをネットワーク上に送出してしまうことを防ぐ。【解決手段】  第一のネットワーク装置より接続インターフェイスを介して送信依頼データが第二のネットワーク装置に転送された際に、送信依頼データの使用ポート番号が第二のネットワーク装置の使用するポート番号と重複していた場合には、送信依頼データを破棄し、送信依頼元へ送信エラーを通知する。【選択図】  図２
2006285903.tif 000002
【特許請求の範囲】
【請求項１】
第一のネットワーク装置と接続インターフェイスを介して接続可能な第二のネットワーク装置であって、
前記第一のネットワーク装置から前記接続インターフェイスを介して転送された送信依頼データもしくは前記第二のネットワーク装置に備えられたプロトコルスタックから転送された送信依頼データを、前記第二のネットワーク装置に備えられた物理インターフェイスよりネットワークに送信する送信依頼データ送信手段と、
前記物理インターフェイスより受信した受信データを前記第一のネットワーク装置と前記第二のネットワーク装置に備えられたプロトコルスタックのいずれかもしくは両方に転送する受信データ転送手段と、
を備えることを特徴とする第二のネットワーク装置において、
前記第二のネットワーク装置に備えられたプロトコルスタックが現在使用中であるポート情報を記憶するポート情報記憶手段と、
前記第一のネットワーク装置より前記接続インターフェイスを介して送信依頼データが転送された際に、前記送信依頼データから送信元ポート情報を取得する送信元ポート情報取得手段と、
前記送信元ポート情報取得手段で得られた送信元ポート情報が前記ポート情報記憶手段で記憶しているポート情報と重複していないかどうかを判断するポート情報重複判断手段と、
前記ポート情報重複判断手段でポート情報の重複が検出された場合に、前記送信依頼データを破棄し、送信依頼元に送信エラーを通知する手段と、
を備えることを特徴とするポート情報重複回避方法。
【請求項２】
第一のネットワーク装置と接続インターフェイスを介して接続可能な第二のネットワーク装置であって、
前記第一のネットワーク装置から前記接続インターフェイスを介して転送された送信依頼データもしくは前記第二のネットワーク装置に備えられたプロトコルスタックから転送された送信依頼データを、前記第二のネットワーク装置に備えられた物理インターフェイスよりネットワークに送信する送信依頼データ送信手段と、
前記物理インターフェイスより受信した受信データを前記第一のネットワーク装置と前記第二のネットワーク装置に備えられたプロトコルスタックのいずれかもしくは両方に転送する受信データ転送手段と、
を備えることを特徴とする第二のネットワーク装置において、
前記第二のネットワーク装置に備えられたプロトコルスタックが現在使用中であるポート情報を記憶するポート情報記憶手段と、
前記第一のネットワーク装置より前記接続インターフェイスを介して送信依頼データが転送された際に、前記送信依頼データから送信元ポート情報を取得する送信元ポート情報取得手段と、
前記送信元ポート情報取得手段で得られた送信元ポート情報が前記ポート情報記憶手段で記憶しているポート情報と重複していないかどうかを判断するポート情報重複判断手段と、
前記ポート情報重複判断手段でポート情報の重複が検出された場合に、前記送信依頼データを破棄し、送信依頼元に代替ポート番号を通知する手段と、
を備えることを特徴とするポート情報重複回避方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第一のネットワーク装置と接続インターフェイスを介して接続可能な第二のネットワーク装置において、前記第一のネットワーク装置に備えられたプロトコルスタックと前記第二のネットワーク装置に備えられたプロトコルスタックとの間で送信時に使用する通信ポートに重複が生じていないかを判断し、重複が生じていた場合にはその重複を回避する方法に関するものである。
【背景技術】
【０００２】
ビジネス・オフィス環境をサポートするためのネットワークなどの大規模ネットワーク環境においては、しばしば、ネットワーク機能を備えた印刷装置など、異なる機能能力を有する、異なるタイプおよび世代の多数のネットワーク・デバイスが含まれることがある。新しい技術が出現し、改善された機能性が新しいモデルまたは世代のネットワーク・デバイスにおいて実施されるにつれて、ネットワーク内で使用可能な機能は、どのネットワーク・デバイスが利用されているかに応じて大幅に変化する可能性がある。たとえば、ネットワーク環境におけるいくつかのより新しい印刷装置はセキュア・プリンティングをサポートすることができるのに対して、そのネットワーク環境に存在するより古い印刷装置はセキュア・プリンティングをサポートしていないという状態が生じ得る。
【０００３】
新しい技術および改良をネットワーク環境全体に渡って実施し、それにより同じ機能能力のセットを、すべてのネットワーク・ユーザがすべてのネットワーク・デバイスについて使用可能にすることが、一般には望ましい。さもないと、一部のネットワーク・ユーザに割り当てられたネットワーク・デバイスが他のより新しいネットワーク・デバイスによってサポートされた新しい機能性をサポートしないような場合には、そのネットワーク・ユーザはセキュア・プリンティングおよび電子メール印刷などの新しい有用な機能を利用できなくなるであろう。
【０００４】
この問題に対する１つの問題解決手法は、単純にすべてのレガシー・ネットワーク・デバイスを、所望の新しい機能能力を有する新しいネットワーク・デバイスで置き換えることである。しかしながら、この問題解決手法を実施する場合の労力および費用は多大であり、新しい機能能力を必要とする新しいエンタープライズ・アプリケーションが頻繁に実施されるような場合には現実的な方法ではない。
【０００５】
上記問題に対するもう１つの問題解決手法は、新しいファームウェアを各レガシー・ネットワーク・デバイスにダウンロードすることによってレガシー・ネットワーク・デバイスを修正することである。しかし、この問題解決手法においても、ネットワーク・アドミニストレータまたはサービス担当者が物理的に各レガシー・ネットワーク・デバイスにアクセスし、次いで適切なバージョンのファームウェアをダウンロードして、そのレガシー・デバイスが他のネットワーク・デバイスと整合の取れた機能性をサポートするようにすることが必要であり、著しい労力が要求されてしまう。また、多くの場合、レガシー・デバイスにハードウェアおよびデザイン上の制限があるため、新しい機能性を実施するために新しいバージョンのファームウェアをレガシー・デバイスにダウンロードすることは可能ではない。
【０００６】
この問題に対するその他の問題解決手法として、接続インターフェイスを介してレガシー・ネットワーク・デバイスと接続可能な、レガシー・ネットワーク・デバイスのための所望の追加機能性をサポートするネットワーク・モジュールを用いるという手法が考えられる。
【０００７】
上記ネットワーク・モジュールの具体例のひとつとして、接続インターフェイスを介して印刷装置に装着可能な、インテリジェント型ネットワークカードモジュールが挙げられる（例えば、特許文献１）。
【０００８】
この場合、印刷装置本体とネットワークカードモジュールは個々にCPUを持ったインテリジェントな形態であり、通常ネットワークカードモジュール側にネットワーク経由での各種プリントサービスの統括制御を行うプリントサーバ機能を備えており、印刷装置とネットワークカードモジュールは接続インターフェイスを介して通信を行ない所望のサービスを実装している。
【０００９】
このことは逆に負荷の重い機能をネットワークカードモジュールに追い出すことが可能となり、相対的に印刷装置本体のCPUや周辺パフォーマンスを下げることが可能となり、印刷装置本体のコスト削減をもたらしている。
【特許文献１】特開2002-259075号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
上記ネットワークカードモジュールでは、ネットワークカードモジュールに備えられたプロトコルスタックと印刷装置に備えられたプロトコルスタックが、それぞれ非同期にネットワークカードモジュールに備えられた物理インターフェイスを介してネットワーク上に存在するホストコンピュータ等のクライアントとTCP/IPやその他の通信プロトコルを使用して通信を行う。これを可能にするためネットワークカードモジュールは、物理インターフェイスよりデータを受信した際に、その受信データをネットワークカードモジュールに備えられたプロトコルスタックと印刷装置に備えられたプロトコルスタックのいずれか適切な方に振り分ける機能を有する。前記振り分け機能は、ネットワークカードモジュールに備えられたプロトコルスタックと物理インターフェイスを制御するドライバとの間の層に位置し、具体的には以下の処理を行う。まず、物理インターフェイスのドライバより受信データを渡されると、その受信データのヘッダ情報を先読みして、送信先ネットワーク・アドレスや送信先ポート番号などの送信先ネットワーク情報を取得する。次に、ネットワークカードモジュールに備えられたプロトコルスタックがオープン中であるソケットのソケット情報を取得し、前記送信先ネットワーク情報と一致するネットワーク・アドレスやポート番号などのネットワーク情報でオープン中のソケットが存在するかどうか検索する。検索の結果、一致するソケットが存在する場合は、その受信データをネットワーク・モジュール自身に備えられているプロトコルスタックに振り分ける。一致するソケットが存在しない場合には、受信データを接続インターフェイスを介して印刷装置に転送する。
【００１１】
以上の処理を行う前記振り分け機能では、ネットワークカードモジュールに備えられたプロトコルスタックと印刷装置に備えられたプロトコルスタックとの間で通信ポート番号の重複が生じている場合には、重複ポート番号に対する受信データは常にネットワークカードモジュールに備えられたプロトコルスタックに振り分ける。すなわち、受信に関して常にネットワークカードモジュールに備えられたプロトコルスタックを優先させたシステムを実現している。
【００１２】
しかしながら、ネットワークカードモジュールに備えられたプロトコルスタックと印刷装置に備えられたプロトコルスタックが重複ポート番号に対して同時にデータ送信を行った場合、どちらのデータもネットワーク上に送出されてしまうという問題点が考えられる。また、印刷装置に備えられたプロトコルスタックから重複ポート番号を使用して送信されたデータに対する応答データが前記重複ポート番号に対して来た場合、この応答データは前記振り分け機能によってネットワークカードモジュールに備えられたプロトコルスタックに振り分けられる。そのため、例えばTCP/IPプロトコルにおけるユーザデータグラムプロトコル(UDP)などのコネクションレス型プロトコルを使用した通信の場合、ネットワークカードモジュールに実装されたアプリケーション・プログラムに不要な受信データが渡されることとなる。また、伝送制御プロトコル(TCP)などのコネクション型プロトコルを使用した通信の場合であっても、ネットワークカードモジュールに備えられたプロトコルスタックに不要なデータが渡されることとなる。いずれも場合であっても、ネットワークカードモジュールで不要なデータの受信処理による作業負荷が増大する可能性が考えられる。
【課題を解決するための手段】
【００１３】
本発明は上記問題点に鑑みてなされたものであり、
第一のネットワーク装置と接続インターフェイスを介して接続可能な第二のネットワーク装置であって、
前記第一のネットワーク装置から前記接続インターフェイスを介して転送された送信依頼データもしくは前記第二のネットワーク装置に備えられたプロトコルスタックから転送された送信依頼データを、前記第二のネットワーク装置に備えられた物理インターフェイスよりネットワークに送信する送信依頼データ送信手段と、
前記物理インターフェイスより受信した受信データを前記第一のネットワーク装置と前記第二のネットワーク装置に備えられたプロトコルスタックのいずれかもしくは両方に転送する受信データ転送手段と、
を備えることを特徴とする第二のネットワーク装置において、
前記第二のネットワーク装置に備えられたプロトコルスタックが現在使用中であるポート情報を記憶するポート情報記憶手段と、
前記第一のネットワーク装置より前記接続インターフェイスを介して送信依頼データが転送された際に、前記送信依頼データから送信元ポート情報を取得する送信元ポート情報取得手段と、
前記送信元ポート情報取得手段で得られた送信元ポート情報が前記ポート情報記憶手段で記憶しているポート情報と重複していないかどうかを判断するポート情報重複判断手段と、
前記ポート情報重複判断手段でポート情報の重複が検出された場合に、前記送信依頼データを破棄し、送信依頼元に送信エラーを通知する手段と、
から構成されるポート情報重複回避方法である。
【発明の効果】
【００１４】
本発明によれば、前記第一のネットワーク装置より前記接続インターフェイスを介して送信依頼データが前記第二のネットワーク装置に転送された際に、前記送信依頼データの使用ポート番号が前記第二のネットワーク装置の使用するポート番号と重複していた場合には、前記送信依頼データを破棄し、送信依頼元へ送信エラーを通知することにより、前記第一のネットワーク装置に備えられたプロトコルスタックと前記第二のネットワーク装置に備えられたプロトコルスタックが重複ポート番号に対して同時にデータをネットワーク上に送出してしまうことを防ぐことができる。またそのため、前記第一のネットワーク装置に備えられたプロトコルスタックから重複ポート番号を使用して送信されたデータに対する応答データが前記重複ポート番号に対して来ることが無くなり、前記応答データが前記第二のネットワーク装置に備えられた受信データの振り分け機能によって前記第二のネットワーク装置に備えられたプロトコルスタックに振り分けられることも無くなる。結果として、前記第二のネットワーク装置における不要なデータの受信処理に要する作業負荷を軽減させることが可能となる。
【発明を実施するための最良の形態】
【００１５】
（実施例１）
図１は、本発明の実施形態に関わる印刷システムのハードウェア構成を説明するブロック図である。1000はプリンタで、内部で大きくネットワークプリンタサーバ1500とプリンタコントローラ1600からなる異なる制御系を司る機器で構成されている。ネットワークプリントサーバ1500において、１はネットワークプリントサーバ用CPUで、書き換え可能なFlashROM3に記憶された制御プログラムに基づいてシステムバス４に接続されるネットワークコントローラ(LANC5)を介してローカルエリアネットワーク(LAN2000)に接続されたホストコンピュータ等の複数の外部装置(不図示)と所定のネットワーク通信プロトコルを用いて、前記外部装置から送られる印刷データやプリンタ制御命令等の各種データ送受信要求を統括的に制御し、拡張インターフェイスコントローラ(EXPC7)を介して接続されるプリンタコントローラ1600に対して適切なデータ転送制御を行う。またFlashROM3には、図3，4のフローチャートで示されるようなポート情報重複判断・重複回避のプログラムも記憶されている。
【００１６】
RAM2はCPU1の主メモリ、ワークエリア等の一時記憶領域として用いられる。
【００１７】
LED6はネットワークプリントサーバの動作状態を示す表示部として用いられており、例えばネットワークコントローラ(LANC5)とローカルエリアネットワーク(LAN2000)の電気的な接続状態(LINK)やネットワーク通信モード(10Baseや100Base、全二重、半二重)等の各種動作状態をLEDの点滅パターンや色で示すことが可能となっている。
【００１８】
さらにネットワークプリントサーバ1500とプリンタコントローラ1600を繋ぐ拡張インターフェイス17は、図示しないコネクタで構成されておりネットワークプリントサーバ1500のみが着脱し、同じ構成を持つ別のプリンタ1000にネットワークプリントサーバ1500を装着することも可能な構成となっている。
【００１９】
プリンタコントローラ1600において、8はプリンタコントローラ用CPUで、ROM9に記憶された制御プログラム等あるいはディスクコントローラ(DKC15)を介して接続された外部メモリ10に記憶された制御プログラムやリソースデータ(資源情報)等に基づいてシステムバス１１に接続される各種デバイスとのアクセスを統括的に制御し、拡張インターフェイスコントローラ(EXPC13)を介して接続されるネットワークプリントサーバ1500から受信される印刷データを基にラスタコントローラ12によって出力画像情報を生成し、プリントエンジン16に対して画像信号を出力する。
【００２０】
14はCPU8の主メモリ、ワークエリア等として機能するRAMで、図示しない増設ポートに接続されるオプションRAMによりメモリ容量を拡張することができるように構成されている。
【００２１】
18は操作パネル（操作部）でプリンタ1000の動作モード等の設定や印刷データの取り消し等の操作を行うためのボタンおよびプリンタ1000の動作状態を示す液晶パネルやLED等の表示部が配されている。
【００２２】
なお、本図で示したプリンタエンジン16は既知の印刷技術を利用するものであり、好適な実施系として例えば電子写真方式(レーザービーム方式)やインクジェット方式、昇華(熱転写)方式等が挙げられる。
【００２３】
図２は、本発明の実施形態に好適な印刷システムにおけるプリンタ1000内の制御機器であるネットワークプリントサーバ1500およびプリンタコントローラ1600の各記憶デバイスに記憶された制御プログラム内のソフトウェア構成を説明するブロック図である。
【００２４】
なお上記各制御プログラムは各制御機器のCPUによってプログラムが解析され処理される。
【００２５】
1501はネットワークプリントサーバ1500の基本的なデータの入出力制御を統括するオペレーティングシステムである。さらに前記オペレーティングシステム1501内にはプログラム/データ記憶部1509との入出力制御を行うファイルシステム1505、プリンタコントローラ1600と拡張インターフェイス１７を介して通信制御を行う拡張インターフェイスドライバ1506、ローカルエリアネットワーク(LAN2000)の通信媒体を介して不図示のホストコンピュータ等の外部装置と通信を行うネットワークインターフェイスドライバ1507、TCP/IPプロトコルでの通信制御を行うプロトコルスタック1508、中間モジュール1510を内包している。
【００２６】
中間モジュール1510は、プロトコルスタック1508と拡張インターフェイスドライバ1506、ネットワークインターフェイスドライバ1507の中間に位置し、プロトコルスタック1508から渡された送信依頼データ、もしくは、拡張インターフェイス17及び拡張インターフェイスドライバ1506を介してプリンタコントローラ1600から渡された送信依頼データを、ネットワークインターフェイスドライバ1507より送信する手段と、ネットワークインターフェイスドライバ1507より渡された受信データをプロトコルスタック1508とプリンタコントローラ1600のいずれかもしくは両方に振り分けるための振り分け先判断手段と、判断結果に基づいて受信データをプロトコルスタック1508とプリンタコントローラ1600のいずれかもしくは両方に振り分ける手段とを備える。また、中間モジュール1510は、本発明の主題である送信ポート番号の重複検出及び重複回避手段を更に備えている。
【００２７】
1502はアプリケーションプログラムインターフェイス(API)であり、ネットワークプリントサーバ1500で動作するユーザアプリケーション1503やプリンタ1000やユーザアプリケーションの登録・管理を行う管理アプリケーション等のアプリケーションプログラムに対して前記オペレーティングシステムが備える各種機能を提供する。また前記アプリケーションプログラムインターフェイス1502で提供される機能は、印刷データの送受信機能を提供するデータ転送API、ビットマップ画像や表示メッセージ等のリソースデータの入出力制御を行うリソース制御API、プリンタ1000の再起動や設定値の初期化や設定等の制御を行うプリンタ制御API、印刷ジョブの取り消しや再印刷指示などを制御するジョブ制御API、ネットワークプリントサーバ1500の再起動や設定値の初期化や設定、およびアプリケーションプログラムの起動、登録、削除を行うプリントサーバ制御APIを備える。
【００２８】
1601はプリンタコントローラ1600の各種処理制御を統括するオペレーティングシステムであり、内部にプリントエンジンとの通信制御を行うプリントエンジン制御部1603およびネットワークプリントサーバ1500から参照されるビットマップ画像やエラーメッセージ等の機種依存リソースおよびネットワークプリントサーバ上で動作する機種依存アプリケーションプログラム等を記憶する機種依存リソース/プログラム記憶部との入出力制御を行うファイルシステム1604、TCP/IPプロトコルでの通信制御を行うプロトコルスタック1605を内包している。
【００２９】
1602は拡張インターフェイス制御部であり、拡張インターフェイス17を介してネットワークプリントサーバ1500との通信制御を行う。さらに前記拡張インターフェイス制御部は、制御種別毎に印刷データの入出力を制御するデータ転送論理インターフェイス、機種依存リソース/プログラム記憶部９に記憶された各種データの入出力を制御するリソース制御論理インターフェイス、プリンタ1000の再起動や設定値の初期化や設定等の制御を行うプリンタ制御論理インターフェイス、印刷ジョブの取り消しや再印刷指示などを制御するジョブ制御論理インターフェイスを備えており、各論理インターフェイスを介してネットワークプリントサーバ1500から要求された命令をオペレーティングシステム1601に対して転送し、その処理結果をネットワークプリントサーバ1500に対して返信する。
【００３０】
図3は、本発明に係るネットワークプリントサーバ1500上で動作する送信ポート番号の重複検出・回避処理機能の一実施形態を示すフローチャートである。なお、S301〜S310は各処理ステップを示し、ネットワークプリントサーバ1500において、ネットワークプリントサーバ1500に備えられたプロトコルスタック1508もしくはプリンタコントローラ1600のいずれかから送信依頼データが渡された場合の中間モジュール1510の処理フローに対応する。なお各ステップに対応する制御手順はネットワークプリントサーバ1500のFlashROM3に記憶されている。また、プリンタコントローラ使用ポートリストはプリンタコントローラ1600がデータ送信に使用しているポート番号を登録するためにネットワークプリントサーバ1500のRAM2上に確保された有限な領域である。
【００３１】
S301において、渡された送信依頼データが、プリンタコントローラ1600から拡張インターフェイス17を介して渡されたものであるかどうかを判断する。
【００３２】
送信依頼データがプリンタコントローラ1600から渡されたものでない場合は、ネットワークプリントサーバ1500に備えられたプロトコルスタック1508から渡されたものであると判断し、S302に進んで、送信依頼データのヘッダ情報を読み出し、送信元ポート番号を取得する。次に、S303でプリンタコントローラ使用ポートリストを検索し、取得した送信元ポート番号と同じポート番号が登録されていないかどうかを判断する。
【００３３】
同じポート番号が登録されていた場合は、そのポート番号はプリンタコントローラ1600が使用中であると判断して、S304に進み、送信依頼データは破棄し、送信依頼元であるネットワークプリントサーバ1500に備えられたプロトコルスタック1508に対して送信エラーを通知した後処理を終了する。
【００３４】
S303において同じポート番号が登録されていない場合は、S310に進み、送信依頼データをLAN2000を介して不図示のホストコンピュータ等の外部装置に対して送信した後処理を終了する。
【００３５】
S301で、送信依頼データがプリンタコントローラ1600から渡されたものであった場合は、S305で送信依頼データのヘッダ情報を読み出し、送信元ポート番号を取得する。
【００３６】
次にS306で、プリンタコントローラ使用ポートリストを検索し、S305で取得した送信元ポート番号と同じポート番号が登録されていないかどうかを確認する。
【００３７】
同じポート番号が登録されていない場合は、S307に進み、ネットワークプリントサーバ1500に備えられたプロトコルスタック1508が使用中のソケットのソケット情報を検索して、送信元ポート番号と同じポート番号を使用中のソケットが存在していないかどうかを判断する。
【００３８】
同じポート番号を使用中のソケットが存在していた場合は、そのポート番号はネットワークプリントサーバ1500に備えられたプロトコルスタック1508が使用中であると判断して、S308に進み、送信依頼データは破棄し、送信依頼元であるプリンタコントローラ1600に対して拡張インターフェイス17を介して送信エラーを通知した後処理を終了する。
【００３９】
S307において同じポート番号を使用中のソケットが存在しない場合は、S309で送信元ポート番号をプリンタコントローラ使用ポートリストに登録する。次にS310に進み、送信依頼データをLAN2000を介して不図示のホストコンピュータ等の外部装置に対して送信した後処理を終了する。
【００４０】
S306で、取得した送信元ポート番号と同じポート番号がプリンタコントローラ使用ポートリストに登録されていた場合は、プリンタコントローラ1600が使用中のポート番号であると判断して、S310に進み、送信依頼データをLAN2000を介して不図示のホストコンピュータ等の外部装置に対して送信した後処理を終了する。
【００４１】
（実施例２）
図４は、本発明に係るネットワークプリントサーバ1500上で動作する送信ポートの重複検出および重複回避処理を行う機能の第二の実施形態を示すフローチャートである。なお、S401〜S412は各処理ステップを示し、ネットワークプリントサーバ1500に備えられたプロトコルスタック1508もしくはプリンタコントローラ1600のいずれかから送信依頼データが渡された場合の中間モジュール1510の処理フローに対応する。なお各ステップに対応する制御手順はネットワークプリントサーバ1500のFlashROM3に記憶されている。また、プリンタコントローラ使用ポートリストはプリンタコントローラ1600がデータ送信に使用しているポート番号を登録するためにネットワークプリントサーバ1500のRAM2上に確保された有限な領域である。
【００４２】
S401において、渡された送信依頼データがプリンタコントローラ1600から拡張インターフェイス17を介して渡されたものであるかどうかを判断する。
【００４３】
送信依頼データがプリンタコントローラ1600から渡されたものでない場合は、ネットワークプリントサーバ1500に備えられたプロトコルスタック1508から渡されたものであると判断し、S402に進んで、送信依頼データのヘッダ情報を読み出し、送信元ポート番号を取得する。
【００４４】
次にS403で、プリンタコントローラ使用ポートリストを検索し、取得した送信元ポート番号と同じポート番号が登録されていないかどうかを判断する。
【００４５】
同じポート番号が登録されていた場合は、S404に進み、ネットワークプリントサーバ1500に備えられたプロトコルスタック1508より代替ポート番号を取得する。次にS405に進み、送信依頼データは破棄し、送信依頼元であるネットワークプリントサーバ1500に備えられたプロトコルスタック1508に対して代替ポート番号を通知した後処理を終了する。
【００４６】
S403で同じポート番号が登録されていない場合は、S412に進み、送信依頼データをLAN2000を介して不図示のホストコンピュータ等の外部装置に対して送信した後処理を終了する。
【００４７】
S401で、送信依頼データがプリンタコントローラ1600から渡されたものであった場合は、S406に進み、送信依頼データのヘッダ情報を読み出し、送信元ポート番号を取得する。
【００４８】
次にS407で、プリンタコントローラ使用ポートリストを検索し、取得した送信元ポート番号と同じポート番号が登録されていないかどうかを判断する。
【００４９】
同じポート番号が登録されていない場合は、S408に進み、ネットワークプリントサーバ1500に備えられたプロトコルスタック1508が使用中のソケットのソケット情報を検索して、S406で取得した送信元ポート番号と同じポート番号を使用中のソケットが存在していないかどうかを判断する。同じポート番号が登録されていた場合は、S409に進み、ネットワークプリントサーバ1500に備えられたプロトコルスタック1508より代替ポート番号を取得する。次にS410に進み、送信依頼データは破棄し、送信依頼元のプリンタコントローラ1600に拡張インターフェイス17を介して代替ポート番号を通知したした後、処理を終了する。
【００５０】
S408で同じポート番号が登録されていない場合は、S411に進み、プリンタコントローラ使用ポートリストにポート番号を登録する。次にS412で、送信依頼データをLAN2000を介して不図示のホストコンピュータ等の外部装置に対して送信した後処理を終了する。
【００５１】
S410でプリンタコントローラ使用ポートリストに同じポート番号が登録されていた場合は、直ちにS412に進み、送信依頼データをLAN2000を介して不図示のホストコンピュータ等の外部装置に対して送信した後処理を終了する。
【００５２】
（実施例３）
実施例２において、送信依頼データにポート番号の重複が生じていた際には、ネットワークプリントサーバ1500に備えられたプロトコルスタック1508より代替ポート番号を取得し、その代替ポート番号を送信依頼データの送信元であるネットワークプリントサーバ1500に備えられたプロトコルスタック1508もしくはプリンタコントローラ1600に通知している。
【００５３】
しかしながら、ネットワークプリントサーバ1500に備えられたプロトコルスタック1508に対して代替ポートの取得を要求した場合に、空きポート番号が存在しないなどの理由で代替ポート番号が取得できない可能性も考えられる。また、代替ポート番号が取得できた場合であっても、その代替ポート番号はすでにプリンタコントローラ1600によって使用中である可能性も考えられる。
【００５４】
図５は、図４で示した代替ポート番号取得処理に上記問題点の対処法を追加したフローチャートである。なお、S501〜S505は各処理ステップを示し、ネットワークプリントサーバ1500において、ネットワークプリントサーバ1500に備えられたプロトコルスタック1508もしくはプリンタコントローラ1600のいずれかから渡された送信依頼データにポート番号の重複が生じていた場合の中間モジュール1510の処理フローに対応する。また、S501〜S505は図４における処理ステップS404〜S405およびS409〜S410の派生となる処理ステップである。なお各ステップに対応する制御手順はネットワークプリントサーバ1500のFlashROM3に記憶されている。また、プリンタコントローラ使用ポートリストはプリンタコントローラ1600がデータ送信に使用しているポート番号を登録するためにネットワークプリントサーバ1500のRAM2上に確保された有限な領域である。
【００５５】
中間モジュール1510は、ネットワークプリントサーバ1500に備えられたプロトコルスタック1508もしくはプリンタコントローラ1600のいずれかから渡された送信依頼データにポート番号の重複が生じていた場合に、まず、S501において、ネットワークプリントサーバ1500に備えられたプロトコルスタック1508に代替ポート番号の取得要求を行い、S502で、代替ポートを取得できたかどうか判断する。空きポート番号が無いなどの理由で代替ポート番号を取得できなかった場合は、S503に進み、送信依頼データを破棄し、送信依頼データの送信元であるネットワークプリントサーバ1500に備えられたプロトコルスタック1508もしくはプリンタコントローラ1600に送信エラーを通知した後処理を終了する。
【００５６】
S502において、代替ポート番号を取得できた場合は、S504に進み、取得した代替ポート番号がプリンタコントローラ使用ポートリストに登録されているポート情報と重複しないかを判断する。重複していない場合は、S505に進み、送信依頼データを破棄し、送信依頼データの送信元であるネットワークプリントサーバ1500に備えられたプロトコルスタック1508もしくはプリンタコントローラ1600に代替ポート番号を通知して処理を終了する。
【００５７】
S504において、取得した代替ポート番号がプリンタコントローラ使用ポートリストに登録されているポート情報と重複している場合は、S501に戻り、S501〜S505の処理を繰り返す。
【００５８】
（実施例４）
実施例１〜３において、ネットワークプリンタサーバ1500はプリンタ1000から物理的に切り離されて存在する別個の機器であって、プリンタ1000は内部にプリンタコントローラ1600からなる制御系を司る機器を備えており、ネットワークプリンタサーバ1500において、図１で示される拡張インターフェイスコントローラ(EXPC7)はシステムバス４に接続される第二のネットワークコントローラであり、図２で示される拡張インターフェイスドライバ1506はオペレーティングシステム1501が内包する第二のネットワークインターフェイスドライバであり、プリンタコントローラ1600において、図１で示される拡張インターフェイスコントローラ(EXPC13)はシステムバス11に接続されるネットワークコントローラであり、図１及び図２で示される拡張インターフェイス17は第二のローカルエリアネットワークであって、ネットワークプリントサーバ1500とプリンタコントローラ1600とは前記第二のローカルエリアネットワークにともに接続されていても良い。
【００５９】
（実施例５）
実施例１〜４において、プリンタコントローラ1600から拡張インターフェイス17を介して渡された送信依頼データをLAN2000を介して不図示のホストコンピュータ等の外部装置に送信する際に、中間モジュール1510は送信依頼データが使用しているポート番号をプリンタコントローラ使用ポートリストに登録している。そして、ネットワークプリントサーバ1500に備えられたプロトコルスタック1508からの送信依頼データがあった場合には、送信依頼データの使用するポート番号がプリンタコントローラ使用ポートリストに登録済みのポート番号と重複していないかどうかを判断している。これにより、プリンタコントローラ1600が使用中のポート番号を、ネットワークプリントサーバ1500に備えられたプロトコルスタック1508が重複して使用してしまう状況を回避している。
【００６０】
しかしながら、この手段では、一度プリンタコントローラ1600が送信に使用してプリンタコントローラ使用ポートリストに登録されたポート番号に関しては、例えその後プリンタコントローラ1600がそのポート番号を使用した通信を終了したとしても、当該ポート番号はプリンタコントローラ使用ポートリストに残ったままである。そのため、一度プリンタコントローラ使用ポートリストに登録されたポート番号は、その後ネットワークプリントサーバ1500に備えられたプロトコルスタック1508からは使用できないことになる。
【００６１】
但し、ネットワークプリントサーバ1500では、プリンタコントローラ1600がどのポート番号を使用しているのかという情報は、プリンタコントローラ1600から拡張インターフェイス17を介して送信依頼データが渡された時点でしか知ることは出来ない。そのため、一度プリンタコントローラ1600が送信に使用してプリンタコントローラ使用ポートリストに登録されたポート番号に関して、プリンタコントローラ1600がそのポート番号を使用した通信を終了した時点でプリンタコントローラ使用ポートリストから削除するという方法を実現することは出来ない。
【００６２】
そこでこの対処法として、プリンタコントローラ使用ポートリストにタイムアウト機能を設けるという方法が考えられる。プリンタコントローラ使用ポートリストに登録されたポート番号に関して、一定期間以内に再度プリンタコントローラ1600から拡張インターフェイス17を介して送信依頼データが無い場合には、当該ポート番号をプリンタコントローラ使用ポートリストから削除する。
【００６３】
この方法によれば、一度プリンタコントローラ1600が送信に使用してプリンタコントローラ使用ポートリストに登録されたポート番号であっても、そのポートを使用した送信依頼データが一定期間以上の間プリンタコントローラ1600から拡張インターフェイス17を介して渡されない場合には、ネットワークプリントサーバ1500に備えられたプロトコルスタック1508が当該ポート番号を使用出来るようになる。
【図面の簡単な説明】
【００６４】
【図１】本発明の実施形態に関わる印刷システムのハードウェア構成ブロック図
【図２】本発明の実施形態に関わる印刷システムソフトウェア構成ブロック図
【図３】本発明に係る送信ポート番号の重複検出および重複回避方法の一実施形態を示すフローチャート
【図４】本発明に係る送信ポート番号の重複検出および重複回避方法の第二の実施形態を示すフローチャート
【図５】第二の実施の形態における代替ポート番号取得処理のその他の実施形態を示すフローチャート
【符号の説明】
【００６５】
１０００  プリンタ
１５００  ネットワークプリントサーバ
１６００  プリンタコントローラ
２０００  ローカルエリアネットワーク
１  CPU
２  RAM
３  フラッシュROM
４  システムバス
５  LANコントローラ
６  LED
７  拡張インターフェイスコントローラ
８  CPU
９  ROM
１０  外部メモリ
１１  システムバス
１２  ラスタコントローラ
１３  拡張インターフェイスコントローラ
１４  RAM
１５  ディスクコントローラ
１６  プリントエンジン
１７  拡張インターフェイスバス
１８  操作パネル
【図１】
2006285903.tif 000003
【図２】
2006285903.tif 000004
【図３】
2006285903.tif 000005
【図４】
2006285903.tif 000006
【図５】
2006285903.tif 000007