(57)【要約】【課題】  スキャンデータファイルを外部に高速で送信すること。【解決手段】  スキャナ１０は、スキャンデータファイルを記憶するスキャンデータ記憶領域２６を有する。スキャナ１０は、ＰＣ４０に対して複数の通信セッションを確立する。スキャナ１０は、上記の複数の通信セッションを利用して、スキャンデータ記憶領域２６に記憶されている１つのスキャンデータファイルに含まれるスキャンデータをＰＣ４０に並行的に送信する。スキャナ１０は、複数のデータ送信タスクを並行的に実行することによって、上記のスキャンデータをＰＣ４０に並行的に送信することを実現する。【選択図】  図１
2009199281.tif 000002
【特許請求の範囲】
【請求項１】
データファイルを記憶することが可能であるデータファイル記憶手段と、
１つの外部装置に対して複数の通信セッションを確立する通信セッション確立手段と、
通信セッション確立手段によって確立された前記複数の通信セッションを利用して、データファイル記憶手段に記憶されている１つのデータファイルに含まれるデータを前記外部装置に並行的に送信する送信手段と
を備えるデータ送信装置。
【請求項２】
前記送信手段は、複数のデータ送信タスクを並行的に実行し、
前記複数のデータ送信タスクのそれぞれは、前記通信セッション確立手段によって確立された異なる１つの通信セッションを利用して前記データを前記外部装置に送信するタスクである
ことを特徴とする請求項１に記載のデータ送信装置。
【請求項３】
前記送信手段は、前記複数のデータ送信タスクを並行的に実行する間に前記複数のデータ送信タスクのそれぞれによって送信されるべきデータサイズを均等化する
ことを特徴する請求項２に記載のデータ送信装置。
【請求項４】
前記送信手段は、第１データ送信タスクを開始した後に前記第１データ送信タスクと第２データ送信タスクを並行的に実行することが可能であり、
前記送信手段は、前記第１データ送信タスクによって送信された前記データの送信済データサイズを特定し、前記データの総データサイズ及び当該送信済データサイズに基づいて前記データの未送信データサイズを特定し、当該未送信データサイズを分割することによって個別未送信データサイズを特定し、当該送信済データサイズに当該個別未送信データサイズを加算することによって前記第２データ送信タスクによって送信されるべき前記データの送信開始位置を決定する
ことを特徴とする請求項２又は３に記載のデータ送信装置。
【請求項５】
データ送信装置自身に設定されている１つのＩＰアドレスを利用して前記外部装置が複数の通信セッションを確立することが可能であるのか否かを判断する第１判断手段をさらに備え、
前記通信セッション確立手段は、
第１判断手段によって肯定的な判断が得られたことを条件として、データ送信装置自身に設定されている１つのＩＰアドレスを利用して前記外部装置に対して前記複数の通信セッションを確立し、
第１判断手段によって否定的な判断が得られたことを条件として、データ送信装置自身に設定されている複数のＩＰアドレスを利用して前記外部装置に対して前記複数の通信セッションを確立する
ことを特徴とする請求項１から４のいずれか一項に記載のデータ送信装置。
【請求項６】
前記通信セッション確立手段は、データ送信装置自身に設定されている１つのＩＰアドレスを利用して前記外部装置に対して前記複数の通信セッションを確立することが可能である
ことを特徴とする請求項１から５のいずれか一項に記載のデータ送信装置。
【請求項７】
前記通信セッション確立手段は、データ送信装置自身に設定されている複数のＩＰアドレスを利用して前記外部装置に対して前記複数の通信セッションを確立することが可能である
ことを特徴とする請求項１から６のいずれか一項に記載のデータ送信装置。
【請求項８】
データ送信装置のアイドル時間が所定値より大きいのか否かを判断する第２判断手段をさらに備え、
前記送信手段は、第２判断手段によって肯定的に判断されたことを条件として、前記複数の通信セッションを利用して前記データを前記外部装置に並行的に送信する
ことを特徴とする請求項１から７のいずれか一項に記載のデータ送信装置。
【請求項９】
前記送信手段は、前記データを前記外部装置に送信することによって、前記データと同じデータを含むファイルを前記外部装置の共有フォルダ内に作成する
ことを特徴とする請求項１から８のいずれか一項に記載のデータ送信装置。
【請求項１０】
前記送信手段は、複数のデータ送信タスクを並行的に実行し、
前記複数のデータ送信タスクのそれぞれは、前記通信セッション確立手段によって確立された異なる１つの通信セッションを利用して前記データを前記外部装置に送信するタスクであり、
前記複数のデータ送信タスクのそれぞれについて、当該データ送信タスクによって送信されるべき前記データの送信開始位置を記憶する送信開始位置記憶手段をさらに備え、
前記送信手段は、送信開始位置記憶手段に記憶されている各送信開始位置に基づいて、前記複数のデータ送信タスクを実行する
ことを特徴とする請求項１から９のいずれか一項に記載のデータ送信装置。
【請求項１１】
前記送信手段は、複数のデータ送信タスクを並行的に実行し、
前記複数のデータ送信タスクのそれぞれは、前記通信セッション確立手段によって確立された異なる１つの通信セッションを利用して前記データを前記外部装置に送信するタスクであり、
前記複数のデータ送信タスクのそれぞれについて、当該データ送信タスクによって送信されるべき前記データの送信予定サイズを記憶する送信予定サイズ記憶手段をさらに備え、
前記送信手段は、送信予定サイズ記憶手段に記憶されている各送信予定サイズに基づいて、前記複数のデータ送信タスクを実行する
ことを特徴とする請求項１から１０のいずれか一項に記載のデータ送信装置。
【請求項１２】
前記送信手段は、複数のデータ送信タスクを並行的に実行し、
前記複数のデータ送信タスクのそれぞれは、前記通信セッション確立手段によって確立された異なる１つの通信セッションを利用して前記データを前記外部装置に送信するタスクであり、
前記複数のデータ送信タスクのそれぞれについて、当該データ送信タスクによって送信された前記データの送信済データサイズを記憶する送信済データサイズ記憶手段をさらに備え、
前記送信手段は、送信済データサイズ記憶手段に記憶されている各送信済データサイズに基づいて、前記複数のデータ送信タスクを実行する
ことを特徴とする請求項１から１１のいずれか一項に記載のデータ送信装置。
【請求項１３】
スキャン対象物をスキャンしてスキャンデータを作成するスキャンデータ作成手段をさらに備え、
前記データファイル記憶手段は、スキャンデータ作成手段によって作成されたスキャンデータを含むスキャンデータファイルを記憶することが可能であり、
前記送信手段は、前記複数の通信セッションを利用して、前記データファイル記憶手段に記憶されている１つのスキャンデータファイルに含まれるスキャンデータを前記外部装置に並行的に送信する
ことを特徴とする請求項１から１２のいずれか一項に記載のデータ送信装置。
【請求項１４】
データ送信装置に搭載されるコンピュータに、以下の各処理、即ち、
データファイルを記憶するデータファイル記憶処理と、
１つの外部装置に対して複数の通信セッションを確立する通信セッション確立処理と、
通信セッション確立処理で確立された前記複数の通信セッションを利用して、データファイル記憶処理で記憶された１つのデータファイルに含まれるデータを前記外部装置に並行的に送信する送信処理と
を実行させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを外部に送信するデータ送信装置に関する。
【背景技術】
【０００２】
下記の特許文献１には、スキャン装置によって作成されたスキャンデータを外部に送信するスキャナが開示されている。
【０００３】
【特許文献１】特開２００６−６０４９９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
データを外部に高速で送信する技術が求められている。本明細書では、データを外部に高速で送信することができる技術を開示する。
【課題を解決するための手段】
【０００５】
本明細書によって開示されるデータ送信装置は、データファイル記憶手段と通信セッション確立手段と送信手段とを備える。データファイル記憶手段は、データファイルを記憶することが可能である。通信セッション確立手段は、１つの外部装置に対して複数の通信セッションを確立する。なお、通信セッション確立手段は、１つのＩＰアドレスを利用して１つの外部装置に対して複数の通信セッションを確立してもよいし、複数のＩＰアドレスを利用して１つの外部装置に対して複数の通信セッションを確立してもよい。また、上記の「外部装置」という用語は、最も広義に解釈されるべきものであり、データ送信装置と別体に構成されているあらゆるデバイスを含む概念である。「外部装置」の例として、パーソナルコンピュータ、サーバ、プリンタ、携帯端末（携帯電話、パーソナルデジタルアシスタント（ＰＤＡ））等を挙げることができる。送信手段は、通信セッション確立手段によって確立された複数の通信セッションを利用して、データファイル記憶手段に記憶されている１つのデータファイルに含まれるデータを外部装置に並行的に送信する。「並行的に送信する」とは、上記のデータに含まれる第１データと第２データを外部装置に同時に送信することを必ずしも意味しているのではない。「並行的に送信する」とは、第１データを送信し、そのレスポンスを待たずに第２データを送信することも含む概念である。なお、一つのＣＰＵを利用することによって上記のデータを並行的に送信してもよいし、複数のＣＰＵを利用することによって上記のデータを並行的に送信してもよい。
【０００６】
上記のデータ送信装置によると、複数の通信セッションを利用して１つのデータファイルを並行的に送信することができるために、１つの通信セッションを利用して１つのデータファイルを送信する場合と比べて、外部装置に向けてデータファイルを高速で送信することができる。従来のデータ送信装置の中には、複数の通信セッションを並行的に確立することができるものが存在する。しかしながら、このようなデータ送信装置は、複数の通信セッションを利用して複数のデータファイルを送信することができるが、１つの通信セッションを利用して送信されるのは１つのデータファイルである。このような従来のデータ送信装置では、複数の通信セッションを利用して１つのデータファイルを送信する手法は採用されていない。本明細書によって開示されるデータ送信装置は、従来にない新規な手法を利用してデータファイルを高速で外部に送信することができる。
【０００７】
複数の通信セッションを利用して１つのデータファイルに含まれるデータを外部に並行的に送信するために、以下の手法を採用してもよい。即ち、上記の送信手段は、複数のデータ送信タスクを並行的に実行してもよい。複数のデータ送信タスクのそれぞれは、通信セッション確立手段によって確立された異なる１つの通信セッションを利用して上記のデータを外部装置に送信するタスクである。
【０００８】
上記の送信手段は、複数のデータ送信タスクを並行的に実行する間に複数のデータ送信タスクのそれぞれによって送信されるべきデータサイズを均等化してもよい。この構成によると、複数のデータ送信タスクを並行的に実行する間に各データ送信タスクが送信するデータサイズが等しくなる。複数のデータ送信タスクを並行的に実行する間に各データ送信タスクが送信するデータサイズが異なる場合と比べて、データファイルを高速で送信することができる。
【０００９】
送信手段は、第１データ送信タスクを開始した後に第１データ送信タスクと第２データ送信タスクを並行的に実行することが可能であってもよい。この場合、送信手段は、以下の各処理を実行してもよい。
（１）第１データ送信タスクによって送信された上記のデータの送信済データサイズを特定する。
（２）上記のデータの総データサイズ及び当該送信済データサイズに基づいて上記のデータの未送信データサイズを特定する（例えば総データサイズから送信済データサイズを減算することによって未送信データサイズを特定してもよい）。
（３）当該未送信データサイズを分割することによって個別未送信データサイズを特定する。なお、「分割」とは、必ずしも二等分を意味しているのではない。このために、未送信データサイズを分割することによって、異なる２つの個別未送信データサイズが得られることがある。この場合、下記の（４）では、どちらかの個別未送信データサイズを利用して送信開始位置を決定してもよい。
（４）当該送信済データサイズに当該個別未送信データサイズを加算することによって第２データ送信タスクによって送信されるべき上記のデータの送信開始位置を決定する。
この構成によると、第１データ送信タスクと第２データ送信タスクを並行的に実行する間に各データ送信タスクが送信するデータサイズを分割することができる。
【００１０】
また、上記のデータ送信装置は、データ送信装置自身に設定されている１つのＩＰアドレスを利用して前記外部装置が複数の通信セッションを確立することが可能であるのか否かを判断する第１判断手段をさらに備えていてもよい。この場合、通信セッション確立手段は、（１）第１判断手段によって肯定的な判断が得られたことを条件として、データ送信装置自身に設定されている１つのＩＰアドレスを利用して外部装置に対して複数の通信セッションを確立し、（２）第１判断手段によって否定的な判断が得られたことを条件として、データ送信装置自身に設定されている複数のＩＰアドレスを利用して外部装置に対して複数の通信セッションを確立してもよい。この構成によると、１つのＩＰアドレスを利用して複数の通信セッションを確立することが優先される。この結果、少ない数のＩＰアドレスを利用して複数の通信セッションを確立することができる。
【００１１】
通信セッション確立手段は、データ送信装置自身に設定されている１つのＩＰアドレスを利用して外部装置に対して複数の通信セッションを確立することが可能であってもよい。一方において、通信セッション確立手段は、データ送信装置自身に設定されている複数のＩＰアドレスを利用して外部装置に対して複数の通信セッションを確立することが可能であってもよい。
【００１２】
複数の通信セッションを利用してデータを送信する場合、データ送信装置は多くの処理を行なう必要がある。データ送信装置のアイドル時間が少ない場合に多くの処理が行なわれる状況を作り出すと、データ送信タスクが遅くなってしまう。この場合、複数の通信セッションを利用してデータを送信しているにもかかわらず、１つの通信セッションのみを利用してデータを送信する場合と比べて、データを送信するための時間が長くなる可能性がある。このような事象が生じるのを避けるために、上記のデータ送信装置は、データ送信装置のアイドル時間が所定値より大きいのか否かを判断する第２判断手段をさらに備えていてもよい。この場合、送信手段は、第２判断手段によって肯定的に判断されたことを条件として、複数の通信セッションを利用して上記のデータを外部装置に並行的に送信してもよい。
【００１３】
また、送信手段は、上記のデータを外部装置に送信することによって、上記のデータと同じデータを含むファイルを外部装置の共有フォルダ内に作成してもよい。一方において、本明細書によって開示される技術は、このような形態のデータ送信に限られない。
【００１４】
上記のデータ送信装置は、複数のデータ送信タスクを並行的に実行するために、様々な情報を記憶してもよい。以下では、データ送信装置によって記憶される情報の一例を列挙しておく。
【００１５】
上記のデータ送信装置は、複数のデータ送信タスクのそれぞれについて、当該データ送信タスクによって送信されるべき上記のデータの送信開始位置を記憶する送信開始位置記憶手段をさらに備えていてもよい。この場合、送信手段は、送信開始位置記憶手段に記憶されている各送信開始位置に基づいて、複数のデータ送信タスクを実行してもよい。
【００１６】
上記のデータ送信装置は、複数のデータ送信タスクのそれぞれについて、当該データ送信タスクによって送信されるべき上記のデータの送信予定サイズを記憶する送信予定サイズ記憶手段をさらに備えていてもよい。この場合、送信手段は、送信予定サイズ記憶手段に記憶されている各送信予定サイズに基づいて、複数のデータ送信タスクを実行してもよい。
【００１７】
上記のデータ送信装置は、複数のデータ送信タスクのそれぞれについて、当該データ送信タスクによって送信された上記のデータの送信済データサイズを記憶する送信済データサイズ記憶手段をさらに備えていてもよい。この場合、送信手段は、送信済データサイズ記憶手段に記憶されている各送信済データサイズに基づいて、複数のデータ送信タスクを実行してもよい。
【００１８】
上記のデータ送信装置は、スキャン対象物をスキャンしてスキャンデータを作成するスキャンデータ作成手段をさらに備えていてもよい。この場合、データファイル記憶手段は、スキャンデータ作成手段によって作成されたスキャンデータを含むスキャンデータファイルを記憶することが可能であってもよい。送信手段は、複数の通信セッションを利用して、データファイル記憶手段に記憶されている１つのスキャンデータファイルに含まれるスキャンデータを外部装置に並行的に送信してもよい。この構成によると、スキャンデータファイルを外部装置に高速で送信することができる。
【００１９】
また、本明細書では、新規なコンピュータプログラムを開示する。このコンピュータプログラムは、データ送信装置に搭載されるコンピュータに、以下の各処理を実行させる。
・データファイルを記憶するデータファイル記憶処理。
・１つの外部装置に対して複数の通信セッションを確立する通信セッション確立処理。
・通信セッション確立処理で確立された複数の通信セッションを利用して、データファイル記憶処理で記憶された１つのデータファイルに含まれるデータを外部装置に並行的に送信する送信処理。
このコンピュータプログラムを利用すると、データを高速で外部に送信することができるデータ送信装置を実現することができる。
【発明を実施するための最良の形態】
【００２０】
ここでは、以下の実施例に記載の技術の特徴の一部をまとめておく。
（形態１）複数のデータ送信タスクのそれぞれでは、所定サイズのデータを読み出して送信する処理を繰り返してもよい。
（形態２）データ送信装置は、複数のデータ送信タスクのそれぞれについて、当該データ送信タスクによってどの位置までデータが送信されたのかを示すデータ送信位置を記憶してもよい。なお、このデータ送信位置は、データ送信タスクによって次に送信されるべきデータ位置を示す情報に等しい情報である。
（形態３）データ送信装置は、第１データ送信タスクによって送信されるべき総データサイズから第１データ送信タスクによって送信された送信済データサイズを減算することによって未送信データサイズを特定し、当該未送信データサイズが所定値より大きいのか否かを判断してもよい。データ送信装置は、肯定的な判断結果が得られたことを条件として、第１データ送信タスクと第２データ送信タスクを並行的に実行してもよい。
（形態４）データ送信装置は、ＣＩＦＳ（Ｃｏｍｍｏｎ  Ｉｎｔｅｒｎｅｔ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）のプロトコルを利用してデータを送信する。
【実施例】
【００２１】
図面を参照して実施例を説明する。図１は、本実施例のスキャナシステム２を示す。スキャナシステム２は、スキャナ１０とＰＣ４０等を備える。図１では１つのＰＣ４０のみが示されているが、実際は複数のＰＣが存在している。各デバイス１０，４０は、ＬＡＮやインターネット回線等の通信回線３６を介して相互に通信可能に接続されている。
【００２２】
（スキャナの構成）
スキャナ１０は、操作装置１２と表示装置１４とスキャン装置１６と原稿トレイ１８と制御装置２０と記憶装置２２とネットワークインターフェイス３２等を有する。操作装置１２は、複数のキーによって構成される。ユーザは、操作装置１２を操作することによって、様々な情報や指示をスキャナ１０に入力することができる。表示装置１４は、様々な情報を表示することができる。スキャン装置１６は、原稿トレイ１８に載置された原稿をスキャンすることによってスキャンデータを作成する。制御装置２０は、記憶装置２２に記憶されているプログラム（図示省略）に従って、様々な処理を実行する。制御装置２０が実行する処理の内容については、後で詳しく説明する。
【００２３】
記憶装置２２は、ＲＯＭ、ＥＥＰＲＯＭ、ＲＡＭ等によって構成されている。記憶装置２２は、送信先デバイスＵＲＬ記憶領域２４とスキャンデータ記憶領域２６と送信管理データ記憶領域２８とその他の記憶領域３０とを有する。各記憶領域２４，２６，２８等に記憶されるべき情報について順に説明する。
【００２４】
送信先デバイスＵＲＬ記憶領域２４は、スキャンデータが送信されるべきデバイスを特定する情報を記憶することができる。図２は、送信先デバイスＵＲＬ記憶領域２４の記憶内容の一例を示す。送信先デバイスＵＲＬ記憶領域２４は、複数の組合せデータ７０，７２を記憶することができる。各組合せデータ７０，７２は、名称６０と共有フォルダＵＲＬ６２とが対応づけられたデータである。名称６０は、デバイスのユーザを特定する名称を示す。共有フォルダＵＲＬ６２は、デバイスに設定されている共有フォルダのＵＲＬを示す。なお、上記の「共有フォルダ」は、外部からアクセス可能なフォルダを意味している。即ち、共有フォルダが存在する場合、その共有フォルダに格納されているファイルに外部からアクセスしたり、その共有フォルダに新たなファイルを外部から格納させたりすることができる。共有フォルダのＵＲＬは、その共有フォルダを有するデバイスのＩＰアドレスを含んでいる。例えば、組合せデータ７０の共有フォルダＵＲＬ６２である「１９２．１６８．０．２／ｃｏｍｍｏｎ」は、「１９２．１６８．０．２」というＩＰアドレスを含んでいる。なお、ここでは、ＵＲＬに含まれるべきスキーム文字列（例えばｆｉｌｅ：／／）を図示省略している。以下でも、スキーム文字列を省略してＵＲＬを記載することがある。
【００２５】
ユーザは、送信先デバイスＵＲＬ記憶領域２４に各組合せデータ７０，７２を記憶させることができる。例えば、ユーザは、操作装置１２を操作することによって、各組合せデータ７０，７２を送信先デバイスＵＲＬ記憶領域２４に記憶させることができる。また、例えば、ユーザは、外部装置（スキャナ１０以外のデバイス）に各組合せデータ７０，７２を入力し、その外部装置からスキャナ１０に向けて各組合せデータ７０，７２を送信させることができる。この場合、スキャナ１０は、上記の外部装置から送信された各組合せデータ７０，７２を送信先デバイスＵＲＬ記憶領域２４に記憶することができる。
【００２６】
スキャンデータ記憶領域２６は、スキャン装置１６によって作成されたスキャンデータを記憶することができる。図３は、スキャンデータ記憶領域２６の記憶内容の一例を示す。なお、図３に示される符号２６ａは、スキャナ１０のホスト名を示す。スキャンデータ記憶領域２６は、複数のスキャンデータファイルを記憶することができる。図３の例では、スキャンデータ記憶領域２６は、２つのスキャンデータファイル８０，９０を記憶している。スキャンデータファイル８０は、ファイル名８２とスキャンデータ８４とが対応づけられたものである。ファイル名８２は、スキャンデータファイル８０が作成された日時を示す文字列「２００８０１０１−０１０１００」を含んでいる。この文字列の場合、２００８年１月１日１時１分００秒にスキャンデータファイル８０が作成されたことを意味している。また、ファイル名８２は、拡張子を示す文字列「．ｐｄｆ」を含んでいる。この文字列の場合、ＰＤＦ形式のスキャンデータであることを意味している。スキャンデータファイル８０と同様に、スキャンデータファイル９０は、ファイル名９２とスキャンデータ９４とが対応づけられたものである。
【００２７】
図４は、送信管理データ記憶領域２８の記憶内容の一例を示す。送信管理データ記憶領域２８は、複数の送信管理データ１００を記憶することができる（ただし図４の例では１つの送信管理データ１００のみが示されている）。送信管理データ１００は、ＩＰアドレス１０２と接続ＩＤ１０４とデータ送信開始位置１０６と全バイト数１０８と送信済バイト数１１０とを含んでいる。各項目１０２〜１１０がどのように設定されるのかについては、後で詳しく説明する。
【００２８】
記憶領域３０は、上記の各記憶領域２４，２６，２８に記憶されるべき情報以外の情報を記憶することができる。記憶領域３０に記憶される情報の内容については、必要に応じて後で説明する。
【００２９】
ネットワークインターフェイス３２は、通信回線３６に接続されている。スキャナ１０は、ネットワークインターフェイス３２及び通信回線３６を介して、ＰＣ４０と通信可能である。
【００３０】
（ＰＣの構成）
ＰＣ４０は、操作装置４２と表示装置４４と制御装置４６と記憶装置４８とネットワークインターフェイス５４等を有する。操作装置４２は、キーボードやマウスによって構成される。ユーザは、操作装置４２を操作することによって、様々な情報や指示をＰＣ４０に入力することができる。表示装置４４は、様々な情報を表示することができる。制御装置４６は、記憶装置４８に記憶されているプログラム（図示省略）に従って、様々な処理を実行する。
【００３１】
記憶装置４８は、ＲＯＭ、ＥＥＰＲＯＭ、ＲＡＭ、ハードディスク装置等によって構成されている。記憶装置４８は、共有フォルダ５０とその他の記憶領域５２とを有する。ユーザは、操作装置４２を操作することによって、ＰＣ４０内に共有フォルダ５０を作成することができる。共有フォルダ５０は、他のデバイスからアクセス可能なフォルダである。逆に言うと、共有フォルダとして設定されていないフォルダは、他のデバイスからアクセス不能である。本実施例では、上記の図２の組合せデータ７０に含まれる共有フォルダＵＲＬ６２（１９２．１６８．０．２／ｃｏｍｍｏｎ）は、ＰＣ４０の共有フォルダ５０に対応する。記憶領域５２は、様々な情報を記憶することができる。
【００３２】
ネットワークインターフェイス５４は、通信回線３６に接続されている。ＰＣ４０は、ネットワークインターフェイス５４及び通信回線３６を介して、スキャナ１０と通信可能である。
【００３３】
（スキャナが実行する処理）
続いて、スキャナ１０が実行する処理の内容について説明する。以下の各処理は、スキャナ１０の制御装置２０によって実行される。図５〜図７は、スキャナ１０のＳＣＡＮ  ＴＯ処理のフローチャートを示す。ユーザは、スキャナ１０の操作装置１２を操作することによって、送信先デバイスＵＲＬ記憶領域２４（図２参照）に記憶されている複数の組合せデータ７０，７２の中から少なくとも１つの組合せデータを指定することができる。これにより、スキャンデータの送信先が指定されることになる。制御装置２０は、ユーザによって指定された組合せデータ（即ち送信先に関する情報）を記憶領域３０に記憶する。なお、本実施例では、図２の組合せデータ７０（１９２．１６８．０．２／ｃｏｍｍｏｎ）がユーザによって指定されたものとする。即ち、ＰＣ４０の共有フォルダ５０がユーザによって指定されたものとする。ユーザは、スキャンデータの送信先を指定した後に操作装置１２を操作することによって、スキャンをスタートすることを指示することができる。これにより、制御装置２０は、スキャンデータファイルを作成する処理を実行する（Ｓ１０）
【００３４】
Ｓ１０では、制御装置２０は、ファイル名を作成する。このファイル名は、スキャンデータファイルのファイル名として使用される。制御装置２０は、現在の日時を示す文字列と拡張子を示す文字列とを含むファイル名（図２のファイル名８２，９２参照）を作成する。なお、この段階では、スキャンデータはまだ作成されていない。次いで、制御装置２０は、スキャン装置１６を駆動し、原稿トレイ１８に載置されている原稿をスキャンさせる。これにより、スキャンデータが生成される。以上の処理を実行することによって、制御装置２０は、ファイル名とスキャンデータとが対応づけられているスキャンデータファイルを作成することができる。制御装置２０は、スキャンデータファイルをスキャンデータ記憶領域２６に記憶させる。
【００３５】
次いで、制御装置２０は、スキャナ１０に設定されている１つのＩＰアドレスとユーザによって指定された送信先（本実施例ではＰＣ４０）との間で複数の通信セッションを並行的に確立することができるのか否かをチェックする（Ｓ１２）。本実施例のスキャナ１０は、１つのＩＰアドレスを利用して複数の通信セッションを並行的に確立することができる。従って、Ｓ１２では、ＰＣ４０がそのような機能を有しているのか否かがチェックされる。スキャナ１０とＰＣ４０との間で通信セッションが確立されるまでの処理を順に説明する。
（１）制御装置２０は、ＳＹＮパケットをＰＣ４０に送信する。
（２）ＰＣ４０からＳＹＮ／ＡＣＫパケットが返信される。
（３）制御装置２０は、ＡＣＫパケットをＰＣ４０に送信する。これにより、ＴＣＰ／ＩＰの接続が確立される。
（４）本実施例の制御装置２０は、ＣＩＦＳ（Ｃｏｍｍｏｎ  Ｉｎｔｅｒｎｅｔ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）を利用することができる。ＴＣＰ／ＩＰの接続が確立されると、制御装置２０は、ＣＩＦＳを利用して通信セッションを確立する。制御装置２０は、ＣＩＦＳのネゴシエートＲＥＱをＰＣ４０に送信する。
（５）ＰＣ４０からネゴシエートＲＥＳＰが返信される。
（６）制御装置２０は、セッションＲＥＱをＰＣ４０に送信する。
（７）ＰＣ４０からセッションＲＥＳＰが返信される。これにより、スキャナ１０の１つのＩＰアドレスとＰＣ４０との間で通信セッションが確立される。なお、ＣＩＦＳは、通信セッションを確立する過程において複数の認証方式をサポートしている。本実施例の通信セッション確立手法はあくまで一例であり、他の手法を利用してもよい。
【００３６】
制御装置２０は、上記の（１）〜（７）によって通信セッション（以下では第１通信セッションと呼ぶ）が確立されると、次の処理を実行する。即ち、制御装置２０は、第１通信セッションと同じＩＰアドレス（自身のＩＰアドレス）を利用して、上記の（１）〜（７）の処理を再び実行する。これにより、別の通信セッション（以下では第２通信セッションと呼ぶ）が確立される。第１通信セッションが確立されている状態で第２通信セッションも確立された場合、制御装置２０は、Ｓ１２のチェック結果として「ＹＥＳ」を記憶領域３０に記憶しておく。一方において、第２通信セッションが確立された際に第１通信セッションが切断された場合、制御装置２０は、Ｓ１２のチェック結果として「ＮＯ」を記憶領域３０に記憶しておく。制御装置２０は、Ｓ１２のチェック結果が得られると、第１通信セッション及び第２通信セッションを切断する。
【００３７】
続いて、制御装置２０は、送信管理データ１００（図４参照）を作成する（Ｓ１４）。制御装置２０は、送信管理データ記憶領域２８に所定サイズの記憶領域を確保し、確保された記憶領域に１つの送信管理データ１００を作成する。Ｓ１４では、送信管理データ１００のＩＰアドレス１０２として、自身に設定されているいずれかのＩＰアドレス（データ送信に利用することができるＩＰアドレス）を書き込む。Ｓ１４の段階では、送信管理データ１００の他の項目１０４〜１１０に何も書き込まれない。次いで、制御装置２０は、Ｓ１４で作成された送信管理データ１００の項目１０６〜１１０を書き込む（Ｓ１６）。制御装置２０は、データ送信開始位置１０６に「０」を書き込む。制御装置２０は、全バイト数１０８に「Ｓ１０で作成されたスキャンデータの全バイト数」を書き込む。また、制御装置２０は、送信済バイト数１１０に「０」を書き込む。Ｓ１６では、接続ＩＤ１０４に何も書き込まれない。
【００３８】
制御装置２０は、ＰＣ４０に対する接続確立処理を実行する（Ｓ１８）。この接続確立処理では、Ｓ１４で送信管理データ１００のＩＰアドレス１０２として書き込まれたＩＰアドレスが利用される。制御装置２０は、上記の（１）〜（７）の処理を実行することによって通信セッションを確立する。上記の（７）のセッションＲＥＳＰには、接続ＩＤが含まれている。制御装置２０は、ここで得られた接続ＩＤを送信管理データ１００の接続ＩＤ１０４に書き込む。なお、接続ＩＤ１０４は、データ送信の際に付加されるとともに、データ送信に対するレスポンスにも付加される。この結果、制御装置２０は、受信されたレスポンスがいずれのデータ送信に対するレスポンスであるのかを特定することができる。Ｓ１８を行なうと、送信管理データ１００の全ての項目１０２〜１１０に情報が書き込まれることになる。なお、Ｓ１８を終えると、制御装置２０は、経過時間測定タイマとアイドル時間測定タイマの両方をスタートする。これらのタイマの数値は、後の処理（図６のＳ４０及びＳ４２）で利用される。
【００３９】
次いで、制御装置２０は、データ送信タスクを起動する処理を実行する（Ｓ２０）。図８は、データ送信タスクのフローチャートを示す。図５のＳ２０でデータ送信タスクが起動されると、図８の処理が実行される。これと同時に、制御装置２０は、図５のＳ２２以降の処理も実行する。即ち、制御装置２０は、図５〜図７の処理と図８の処理とを並行的に実行することができる。この結果として、複数のデータ送信タスクが並行的に実行されることがある。この場合、複数のデータ送信タスクのそれぞれについて送信管理データ１００が作成される。即ち、１つのデータ送信タスクに対して１つの送信管理データ１００が作成される。以下では、各データ送信タスクに対応する送信管理データ１００のことを「対応する送信管理データ」と呼ぶ。以下では、図８のデータ送信タスクについて詳しく説明する。
【００４０】
制御装置２０は、データ送信位置を記憶領域３０に記憶する（Ｓ９０）。このデータ送信位置は、データ送信タスク毎に記憶される。即ち、複数のデータ送信タスクが並行的に実行される場合、それぞれのデータ送信タスクに対応するデータ送信位置が記憶される。なお、本実施例では、データ送信位置が記憶領域３０に記憶されるが、送信管理データ１００の一つの項目として記憶されてもよい。Ｓ９０では、対応する送信管理データ１００のデータ送信開始位置がデータ送信位置として記憶される。例えば、Ｓ１４〜Ｓ１８で作成された送信管理データの場合、Ｓ９０では、データ送信位置として「０」が記憶される。Ｓ９０を終えると、Ｓ９２に進む。
【００４１】
Ｓ９２では、制御装置２０は、ユーザによって指定された送信先の共有フォルダ（本実施例ではＰＣ４０の共有フォルダ５０）内に、図５のＳ１０で作成されたファイル名と同じファイルが存在するのか否かを判断する。なお、以下では、このファイルのことを「対象ファイル」と呼ぶ。否定的に判断された場合、制御装置２０は、対象ファイルを作成することを指示するコマンド（ＣＲＥＡＴＥ）をＰＣ４０に送信する。この結果、ＰＣ４０の共有フォルダ５０内に対象ファイルが作成される。この時点では、対象ファイルはスキャンデータを含んでいない。一方において、肯定的に判断された場合、制御装置２０は、対象ファイルをオープンすることを指示するコマンド（ＯＰＥＮ）をＰＣ４０に送信する。なお、この際に、制御装置２０は、対象ファイルの共有モードを「書き込み共有可能」に設定しておく。これにより、複数のデータ送信タスクが対象ファイルにスキャンデータを同時に書き込むことが可能になる。
【００４２】
次いで、制御装置２０は、図５のＳ１０で作成されたスキャンデータを所定バイト分だけ読み込む処理を実行する（Ｓ９４）。Ｓ９４では、制御装置２０は、Ｓ９０で記憶されたデータ送信位置に対応する位置からスキャンデータを読み込む。例えば、Ｓ９０で記憶されたデータ送信位置が「０」である場合、スキャンデータの先頭から読み込む。また、例えば、Ｓ９０で記憶されたデータ送信位置が「１０００」である場合、スキャンデータの１０００バイト目から読み込む。制御装置２０は、読み込んだスキャンデータをバッファ（記憶領域３０）に格納する。
【００４３】
続いて、制御装置２０は、バッファ内のスキャンデータを対象ファイルに書き込む処理を実行する（Ｓ９６）。具体的に言うと、制御装置２０は、バッファ内のスキャンデータを対象ファイルに書き込むことを指示するコマンドをＰＣ４０に送信する。これにより、対象ファイルにスキャンデータが書き込まれる。
【００４４】
次いで、制御装置２０は、データ送信位置を更新する。即ち、制御装置２０は、Ｓ９６で送信されたスキャンデータ（Ｓ９４で読み込んだスキャンデータ）のデータサイズ分だけデータ送信位置をインクリメントする。例えば、データ送信位置として「０」が記憶されており、Ｓ９６で送信されたスキャンデータのデータサイズが「１０００」である場合、制御装置２０は、データ送信位置を「１０００」に更新する。また、制御装置２０は、対応する送信管理データ１００の送信済バイト数１１０を更新する。即ち、制御装置２０は、Ｓ９６で送信されたスキャンデータ（Ｓ９４で読み込んだスキャンデータ）のデータサイズ分だけ送信済バイト数１１０をインクリメントする。例えば、送信済バイト数１１０として「１０００」が記憶されており、Ｓ９６で送信されたスキャンデータのデータサイズが「１０００」である場合、制御装置２０は、送信済バイト数１１０を「２０００」に更新する。
【００４５】
制御装置２０は、対応する送信管理データ１００の送信済バイト数１１０が全バイト数１０８に一致したのか否かを判断する（Ｓ１００）。ここでＮＯの場合、制御装置２０は、Ｓ９４に戻ってスキャンデータを読み出す処理を再び実行する。例えば、データ送信位置として「１０００」が記憶されている場合、制御装置２０は、スキャンデータの１０００バイト目から読み出してバッファ（記憶領域３０）に格納する。次いで、制御装置２０は、バッファ内のスキャンデータを対象ファイルに書き込む処理を実行し（Ｓ９６）、データ送信位置と送信済バイト数１１０を更新する処理を実行する（Ｓ９８）。Ｓ１００でＹＥＳと判断されるまで、Ｓ９４〜Ｓ１００の処理が繰り返される。
【００４６】
Ｓ１００でＹＥＳの場合、制御装置２０は、対象ファイルをクローズすることを指示するコマンド（ＣＬＯＳＥ）をＰＣ４０に送信する（Ｓ１０２）。さらに、制御装置２０は、図５〜図７のＳＣＡＮ  ＴＯ処理（即ち別タスクとして実行されているＳＣＡＮ  ＴＯタスク）に対して送信完了を通知する（Ｓ１０４）。これにより、データ送信タスクが終了する。
【００４７】
続いて、図５のＳ２２以降の処理について説明する。Ｓ２２では、制御装置２０は、Ｓ２０又は後述する図７のＳ７４で起動された全てのデータ送信タスクから送信完了が通知されたのか否かを判断する。この送信完了通知は、上記の図８のＳ１０４において通知される。ここでＮＯの場合、図６のＳ４０に進む。
【００４８】
Ｓ４０では、制御装置２０は、所定時間が経過したのか否かを判断する。この処理は、図５のＳ１８でスタートされた経過時間測定タイマの数値を参照することによって行なわれる。ここで利用される「所定時間」は、未送信のデータサイズ、及び／又は、インターフェイスの全帯域に基づいて設定（算出）されてもよい。一方において、「所定時間」は固定値であってもよい。ここでＹＥＳの場合、Ｓ４２に進む。
【００４９】
Ｓ４２では、制御装置２０は、ＣＰＵのアイドル時間が所定値を超えているのか否かを判断する。この処理は、図５のＳ１８でスタートされたアイドル時間測定タイマの数値を参照することによって行なわれる。ここで利用される「所定値」は、アイドル時間測定タイマの数値に所定の割合（例えば５０％）を乗じることによって得られる値を採用する。なお、上記の「アイドル時間」という用語は、ＣＰＵが他の処理をどれだけ実行することができるのかを示す数値（即ちＣＰＵの余剰能力を示す数値）と言い換えることもできる。Ｓ４０又はＳ４２でＮＯの場合、Ｓ２２に戻って完了通知を監視する。
【００５０】
Ｓ４２でＹＥＳの場合、制御装置２０は、最初に作成された送信管理データ１００を選択する（Ｓ４４）。即ち、制御装置２０は、Ｓ１４〜Ｓ１８で作成された送信管理データ１００を選択する。なお、Ｓ４４では、制御装置２０は、経過時間測定タイマとアイドル時間測定タイマの両方をリスタートする。Ｓ４４を終えると、Ｓ４６に進む。
【００５１】
Ｓ４６では、制御装置２０は、Ｓ４４で選択された送信管理データ１００の全バイト数１０８から送信済バイト数１１０を減算することによって送信残りバイト数を算出する。制御装置２０は、送信残りバイト数が所定値より大きいのか否かを判断する。ここで利用される「所定値」は、固定値であってもよいし、変動値であってもよい。後者の場合、例えば、スキャンデータの全バイト数に基づいて「所定値」が決定されてもよい（例えば全バイト数の１０％等）。Ｓ４６でＮＯの場合、図７のＳ７６に進む。
【００５２】
一方において、Ｓ４６でＹＥＳの場合、制御装置２０は、スキャナ１０に設定されている１つのＩＰアドレスとＰＣ４０との間で複数の通信セッションを並行的に確立することが可能であるのか否かを判断する（Ｓ４８）。この処理は、図５のＳ１２のチェック結果（記憶領域３０に記憶されている）が「ＹＥＳ」であるのか否かを判断することによって行なわれる。Ｓ４８でＮＯの場合、Ｓ５０に進む。一方において、Ｓ４８でＹＥＳの場合、Ｓ５４に進む。
【００５３】
Ｓ５０では、制御装置２０は、自身に設定されている他のＩＰアドレスを使用することができるのか否かを判断する。ここでＮＯの場合、図７のＳ７６に進む。一方において、Ｓ５０でＹＥＳの場合、制御装置２０は、新しい送信管理データを作成する（Ｓ５２）。制御装置２０は、送信管理データ記憶領域２８に所定サイズの記憶領域を確保し、確保された記憶領域に新しい送信管理データ１００を作成する。Ｓ５２では、送信管理データ１００のＩＰアドレス１０２として、Ｓ５０でＹＥＳと判断されたＩＰアドレスを書き込む。Ｓ５２では、送信管理データ１００の他の項目１０４〜１１０に何も書き込まれない。Ｓ５２を終えると、図７のＳ７０に進む。
【００５４】
Ｓ５４では、制御装置２０は、新しい送信管理データを作成する。制御装置２０は、送信管理データ記憶領域２８に所定サイズの記憶領域を確保し、確保された記憶領域に新しい送信管理データ１００を作成する。Ｓ５４では、送信管理データ１００のＩＰアドレス１０２として、Ｓ４４又は後述する図７のＳ７８で選択された送信管理データ１００のＩＰアドレスを書き込む。Ｓ５４では、送信管理データ１００の他の項目１０４〜１１０に何も書き込まれない。Ｓ５４を終えると、図７のＳ７０に進む。
【００５５】
図７のＳ７０では、制御装置２０は、Ｓ４４又は後述するＳ７８で選択された送信管理データ１００の全バイト数１０８を更新する。また、制御装置２０は、Ｓ５２又はＳ５４で新たに作成された送信管理データ１００のデータ送信開始位置１０６と全バイト数１０８と送信済バイト数１１０とを書き込む。まず、Ｓ７０の処理の方法論を一般的な記述を利用して説明する。次いで、具体的な例を挙げてＳ７０の処理を説明する。
【００５６】
制御装置２０は、Ｓ４４又はＳ７８で選択された送信管理データ１００の全バイト数１０８から送信済バイト数１１０を減算することによって送信残りバイト数を算出する。次いで、制御装置２０は、送信残りバイト数を二等分する。制御装置２０は、Ｓ４４又はＳ７８で選択された送信管理データ１００の全バイト数１０８から送信残りバイト数の二等分を減算する。これにより、Ｓ４４又はＳ７８で選択された送信管理データ１００の全バイト数１０８が更新される。また、制御装置２０は、Ｓ５２又はＳ５４で新たに作成された送信管理データ１００のデータ送信開始位置１０６として、Ｓ４４又はＳ７８で選択された送信管理データ１００に対応するデータ送信位置に送信残りバイト数の二等分を加算した値を書き込む。制御装置２０は、Ｓ５２又はＳ５４で新たに作成された送信管理データ１００の全バイト数１０８として、送信残りバイト数の二等分の値を書き込む。さらに、制御装置２０は、Ｓ５２又はＳ５４で新たに作成された送信管理データ１００の送信済バイト数１１０として「０」を書き込む。
【００５７】
図９は、上記のＳ７０の方法論を説明するための具体例を示す。図９の符号２００ａは、Ｓ４４で選択された送信管理データを示す。送信管理データ２００ａは、全バイト数が「１５０００」であり、送信済バイト数が「３０００」である。制御装置２０は、「１５０００」から「３０００」を減算することによって「１２０００」を算出する（送信残りバイト数を算出する）。次いで、制御装置２０は、「１２０００」を二等分することによって「６０００」を算出する。制御装置２０は、送信管理データ２００ａの全バイト数である「１５０００」から「６０００」を減算することによって「９０００」を算出する。制御装置２０は、送信管理データ２００ａの全バイト数として「９０００」を書き込む。これにより、送信管理データ２００ａから更新された送信管理データ２００ｂが生成される。
【００５８】
図９の符号２１０ａは、Ｓ５２又はＳ５４で新たに作成された送信管理データを示す。制御装置２０は、送信管理データ２００ａに対応するデータ送信位置である「３０００」に送信残りバイト数の二等分である「６０００」を加算することによって「９０００」を算出する。制御装置２０は、送信管理データ２１０ａのデータ送信開始位置として「９０００」を書き込む。制御装置２０は、送信管理データ２１０ａの全バイト数として送信残りバイト数の二等分である「６０００」を書き込む。また、制御装置２０は、送信管理データ２１０ａの送信済バイト数として「０」を書き込む。
【００５９】
例えば、Ｓ７８で選択された送信管理データが図９の符号２１０ｂで示される送信管理データである場合、制御装置２０は、以下のように処理を実行する。送信管理データ２１０ｂは、全バイト数が「６０００」であり、送信済バイト数が「１０００」である。制御装置２０は、「６０００」から「１０００」を減算することによって「５０００」を算出する（送信残りバイト数を算出する）。次いで、制御装置２０は、「５０００」を二等分することによって「２５００」を算出する。制御装置２０は、送信管理データ２１０ｂの全バイト数である「６０００」から「２５００」を減算することによって「３５００」を算出する。制御装置２０は、送信管理データ２１０ｂの全バイト数として「３５００」を書き込む。これにより、送信管理データ２１０ｂから更新された送信管理データ２１０ｃが生成される。
【００６０】
図９の符号２２０は、送信管理データ２１０ｂがＳ７８で選択された場合に、Ｓ５２又はＳ５４で新たに作成された送信管理データを示す。制御装置２０は、送信管理データ２１０ｂに対応するデータ送信位置である「１００００」に送信残りバイト数の二等分である「２５００」を加算することによって「１２５００」を算出する。制御装置２０は、送信管理データ２２０のデータ送信開始位置として「１２５００」を書き込む。制御装置２０は、送信管理データ２２０の全バイト数として送信残りバイト数の二等分である「２５００」を書き込む。また、制御装置２０は、送信管理データ２２０の送信済バイト数として「０」を書き込む。
【００６１】
Ｓ７０を終えると、制御装置２０は、ＰＣ４０に対する接続確立処理を実行する（Ｓ７２）。この接続確立処理では、Ｓ５２又はＳ５４において送信管理データ１００のＩＰアドレス１０２として書き込まれたＩＰアドレスが利用される。制御装置２０は、図５のＳ１８と同様の処理を実行することによって通信セッションを確立する。また、図５のＳ１８の場合と同様に、制御装置２０は、通信セッションを確立する際に得られた接続ＩＤを、Ｓ５２又はＳ５４で新たに作成された送信管理データ１００の接続ＩＤ１０４に書き込む。これにより、Ｓ５２又はＳ５４で新たに作成された送信管理データ１００の全ての項目１０２〜１１０に情報が書き込まれることになる。
【００６２】
次いで、制御装置２０は、データ送信タスクを起動する処理を実行する（Ｓ７４）。これにより、Ｓ５２又はＳ５４で新たに作成された送信管理データ１００に基づいて新たにデータ送信タスク（図８参照）が実行されることになる。即ち、制御装置２０は、図５のＳ２０で起動されたデータ送信タスク（及び／又は過去のＳ７４で起動されたデータ送信タスク）と、Ｓ７４で起動されたデータ送信タスクとを並行的に実行することになる。これにより、図５のＳ１０で作成された１つのスキャンデータファイルに含まれるスキャンデータが複数のデータ送信タスク（複数の通信セッション）によって並行的にＰＣ４０に送信されることになる。Ｓ７４を終えると、Ｓ７６に進む。
【００６３】
図６のＳ４４を実行する時点で複数の送信管理データ１００が存在することがある。この場合、それらの各送信管理データ１００について図６のＳ４６以降の処理が実行される。これを実現するために、Ｓ７６の処理が存在する。即ち、Ｓ７６では、制御装置２０は、Ｓ４４を実行する時点で存在する全ての送信管理データ１００について図６のＳ４６以降の処理が実行されたのか否かを判断する。ここでＮＯの場合、制御装置２０は、次の送信管理データ１００を選択する（Ｓ７８）。これにより、次の送信管理データ１００について、Ｓ４６以降の処理が実行されることになる。一方において、Ｓ７６でＹＥＳの場合、図５のＳ２２に戻る。
【００６４】
全てのデータ送信タスクから送信完了が通知された場合、制御装置２０は、Ｓ２２でＹＥＳと判断する。この場合、制御装置２０は、ＰＣ４０に対する接続切断処理を実行する（Ｓ２４）。これにより、スキャナ１０とＰＣ４０との間の全ての接続（通信セッション）が切断される。また、制御装置２０は、全ての送信管理データ１００を削除する処理を実行する。これにより、ＳＣＡＮ  ＴＯ処理が終了する。
【００６５】
本実施例のスキャナ１０によると、複数の通信セッションを利用して１つのスキャンデータファイルを並行的に送信することができる。仮に、１つの通信セッションのみを利用して１つのスキャンデータファイルを送信する場合、所定サイズのデータを送信すること、レスポンスを受信すること、及び、次の所定サイズのデータを送信することが繰り返される。即ち、データ送信に対するレスポンスを待たなければ次のデータ送信を行なうことができない。これに対し、本実施例では、複数のデータ送信タスクのそれぞれが並列的に起動されている状態において、各データ送信タスクがスキャンデータファイルを送信する。この結果、一方のデータ送信タスクがデータを送信し、そのデータ送信に対するレスポンスを待たなくても、他方のデータ送信タスクが別のデータを送信することができる。このために、１つの通信セッションのみを利用して１つのスキャンデータファイルを送信する場合と比べて、スキャンデータファイルを高速で送信することができる。
【００６６】
また、本実施例のスキャナ１０によると、複数のデータ送信タスクを並行的に実行する間に複数のデータ送信タスクのそれぞれによって送信されるべきデータサイズを均等化することができる（上記の図７のＳ７０参照）。スキャンデータファイルを高速で送信することができる。
【００６７】
本実施例のスキャナ１０は、自身に設定されている１つのＩＰアドレスを利用してＰＣ４０が複数の通信セッションを確立することが可能であるのか否かをチェックしておく（図５のＳ１２参照）。スキャナ１０は、肯定的なチェック結果が得られた場合には１つのＩＰアドレスを利用して複数の通信セッションを確立し、否定的なチェック結果が得られた場合には複数のＩＰアドレスを利用して複数の通信セッションを確立する。この構成によると、１つのＩＰアドレスを利用して複数の通信セッションを確立することが優先される。この結果、少ない数のＩＰアドレスを利用して複数の通信セッションを確立することができる。
【００６８】
また、スキャナ１０は、アイドル時間が大きい場合に限って（図６のＳ４２参照）、複数のデータ送信タスクを並行的に実行する。アイドル時間が少ないにもかかわらず複数のデータ送信タスクを並行的に実行し、その結果としてデータ送信時間が長くなってしまうという事象が発生することを抑制することができる。
【００６９】
スキャナ１０は、データ送信タスクの送信残りバイト数が所定値より大きい場合に限って（図６のＳ４６参照）、新たなデータ送信タスクを起動する。送信残りバイト数が少ない場合には、新たなデータ送信タスクを起動しない方がデータを高速で送信することができる場合がある。新たなデータ送信タスクを起動するための処理（Ｓ５２又はＳ５４、Ｓ７０、Ｓ７２等）を実行する必要があるからである。本実施例のスキャナ１０は、スキャンデータを高速で送信するための様々な技術を採用している。
【００７０】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、以上に例示した具体例を様々に変形、変更したものが含まれる。上記の実施例の変形例を以下に列挙する。
【００７１】
（１）上記の実施例では詳しく説明していないが、スキャナ１０は、物理的に異なる複数のインターフェイスを有していてもよい。また、スキャナ１０は、１つのインターフェイスのみを有していてもよい。いずれの形態でも、上記の実施例を実現することができる。
（２）スキャナ１０は、ＳＣＡＮ  ＴＯ処理が終了した後も、図５のＳ１２のチェック結果を記憶しておいてもよい。この場合、その後に実行されるＳＣＡＮ  ＴＯ処理において、同じＰＣ（例えばＰＣ４０）に対するチェックを行なわなくてもよい。前のチェック結果をそのまま利用できるからである。
（３）上記の実施例では、ＣＩＦＳプロトコルを利用する。しかしながら、他のプロトコルが利用されてもよい。例えば、ＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）、ＷｅｂＤＡＶ（Ｄｉｓｔｒｉｂｕｔｅｄ  Ａｕｔｈｏｒｉｎｇ  ａｎｄ  Ｖｅｒｓｉｏｎｉｎｇ  Ｐｒｏｔｏｃｏｌ  ｆｏｒ  ｔｈｅ  Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）等を利用してもよい。
（４）なお、図７のＳ７０では、未送信データサイズを二等分することによってデータ送信開始位置が決定される。しかしながら、未送信データサイズは、必ずしも二等分されなくてもよい。他の比率を利用して未送信データサイズを分割することによってデータ送信開始位置が決定されてもよい。
【００７２】
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【図面の簡単な説明】
【００７３】
【図１】スキャナシステムの構成を示す。
【図２】送信先デバイスＵＲＬ記憶領域の記憶内容の一例を示す。
【図３】スキャンデータ記憶領域の記憶内容の一例を示す。
【図４】送信管理データ記憶領域の記憶内容の一例を示す。
【図５】ＳＣＡＮ  ＴＯ処理のフローチャートを示す。
【図６】図５の続きのフローチャートを示す。
【図７】図６の続きのフローチャートを示す。
【図８】データ送信タスクのフローチャートを示す。
【図９】送信管理データが更新及び作成される様子を説明するための図を示す。
【符号の説明】
【００７４】
２：スキャナシステム
１０：スキャナ
１２：操作装置
１４：表示装置
１６：スキャン装置
１８：原稿トレイ
２０：制御装置
２２：記憶装置
２４：送信先デバイスＵＲＬ記憶領域
２６：スキャンデータ記憶領域
２８：送信管理データ記憶領域
３２：ネットワークインターフェイス
４０：ＰＣ
４２：操作装置
４４：表示装置
４６：制御装置
４８：記憶装置
５０：共有フォルダ
５４：ネットワークインターフェイス
【図１】
2009199281.tif 000003
【図２】
2009199281.tif 000004
【図３】
2009199281.tif 000005
【図４】
2009199281.tif 000006
【図５】
2009199281.tif 000007
【図６】
2009199281.tif 000008
【図７】
2009199281.tif 000009
【図８】
2009199281.tif 000010
【図９】
2009199281.tif 000011