(57)【要約】【課題】クライアント端末へ再送するデータ量を節減するとともに、再送のために必要な記憶領域を削減する。【解決手段】本発明の一態様としての画面共有方法では、画面に表示する画像をクライアント端末との間で共有するサーバ端末において、フレームバッファ内の画像の一部を更新し、フレームバッファ内の画像において更新された領域を表す第１の領域情報と、前記更新された領域における更新後の画像である第１の画像と、シーケンス番号とを含む第１のパケットを生成してクライアント端末に送信し、前記第１の領域情報と前記シーケンス番号との組を送信履歴格納部に格納し、シーケンス番号を含む再送要求を受信したら該シーケンス番号に対応する第１の画像において該第１の画像の送信後に更新の行われていない領域を検出し、検出した領域の画像をフレームバッファから取得する。【選択図】図２
2008109269.tif 000002
【特許請求の範囲】
【請求項１】
画面に表示する画像をクライアント端末との間で共有するサーバ端末であって、
前記画面に表示すべき画像を記憶するフレームバッファと、
前記フレームバッファ内の画像を前記画面に表示する表示部と、
前記フレームバッファ内の画像の一部を更新する更新処理部と、
パケット毎に与えるべきシーケンス番号を生成するシーケンス番号カウンタと、
前記フレームバッファ内の画像において更新された領域を表す第１の領域情報と、前記更新された領域における更新後の画像である第１の画像と、前記シーケンス番号カウンタにより付与されるシーケンス番号とを含む第１のパケットを生成し、生成した前記第１のパケットを前記クライアント端末に送信する第１の送信部と、
前記第１の領域情報と前記シーケンス番号との組を格納する送信履歴格納部と、
前記クライアント端末からシーケンス番号を含む再送要求を受信する再送要求受信部と、
前記送信履歴格納部を参照することにより前記再送要求に含まれるシーケンス番号に対応する第１の画像において該第１の画像の送信後に更新の行われていない領域を検出し、検出した領域の画像を第２の画像として前記フレームバッファから取得する再送画像生成部と、
前記検出した領域を表す第２の領域情報と、前記取得した第２の画像と、前記シーケンス番号カウンタにより付与されるシーケンス番号とを含む第２のパケットを生成し、生成した前記第２のパケットを前記クライアント端末に送信し、前記第２の領域情報と前記第２の領域情報に対応する前記シーケンス番号との組を格納することを前記送信履歴格納部に要求する第２の送信部と、
を備えたサーバ端末。
【請求項２】
前記再送画像生成部は、前記再送要求に含まれるシーケンス番号に対応する第１の領域情報により表される領域から、前記再送要求に含まれるシーケンス番号より新しいシーケンス番号に対応する各第１の領域情報により表される領域との重複部分を除いた領域を前記更新の行われていない領域として検出する、
ことを特徴とする請求項１に記載のサーバ端末。
【請求項３】
前記再送画像生成部は、前記検出した領域を含む矩形領域の画像を前記第２の画像として前記フレームバッファから取得し、
前記第２の送信部は、前記矩形領域を表す情報を前記第２の領域情報として前記第２のパケットに含める、
ことを特徴とする請求項１または２に記載のサーバ端末。
【請求項４】
前記再送画像生成部は、検出した領域を複数の矩形領域に分割し、各分割領域の画像を前記フレームバッファからそれぞれ前記第２の画像として取得し、
前記第２の送信部は、前記分割領域を表す情報を前記第２の領域情報として含めた前記第２のパケットを前記分割領域ごとに生成する、
ことを特徴とする請求項１または２に記載のサーバ端末。
【請求項５】
前記送信履歴格納部は、格納されてから所定時間経過した組を削除することを特徴とする請求項１ないし４のいずれか一項に記載のサーバ端末。
【請求項６】
前記再送要求受信部は、前記クライアント端末によって受信済みのシーケンス番号を特定するための情報を含むパケットを前記クライアント端末から受信し、
前記送信履歴格納部は、前記受信済みのシーケンス番号およびこれより古いシーケンス番号をもつ組のうちの１つ以上を削除する、
ことを特徴とする請求項１ないし５のいずれか一項に記載のサーバ端末。
【請求項７】
前記再送要求受信部は、複数のシーケンス番号を含む前記再送要求を受信し、
前記再送画像生成部は、前記複数のシーケンス番号に対応する各第１の画像の総和において各第１の画像の送信後に更新の行われていない領域を検出し、検出した領域の画像を前記第２の画像として前記フレームバッファから取得する、
ことを特徴とする請求項１ないし６のいずれか一項に記載のサーバ端末。
【請求項８】
画面に表示する画像をクライアント端末との間で共有するサーバ端末において実行する画面共有方法であって、
前記画面に表示すべき画像をフレームバッファに格納し、
前記フレームバッファ内の画像を前記画面に表示し、
前記フレームバッファ内の画像の一部を更新し、
パケット毎に与えるべきシーケンス番号を生成し、
前記フレームバッファ内の画像において更新された領域を表す第１の領域情報と、前記更新された領域における更新後の画像である第１の画像と、シーケンス番号とを含む第１のパケットを生成し、
生成した前記第１のパケットを前記クライアント端末に送信し、
前記第１の領域情報と前記シーケンス番号との組を送信履歴格納部に格納し、
前記クライアント端末からシーケンス番号を含む再送要求を受信し、
前記送信履歴格納部を参照することにより前記再送要求に含まれるシーケンス番号に対応する第１の画像において該第１の画像の送信後に更新の行われていない領域を検出し、
検出した領域の画像を第２の画像として前記フレームバッファから取得し、
前記検出した領域を表す第２の領域情報と、前記取得した第２の画像と、前記シーケンス番号カウンタにより付与されるシーケンス番号とを含む第２のパケットを生成し、
生成した前記第２のパケットを前記クライアント端末に送信し、
前記第２の領域情報と、前記第２の領域情報に対応する前記シーケンス番号との組を前記送信履歴格納部に格納する、
ことを特徴とする画面共有方法。
【請求項９】
画面に表示する画像をクライアント端末との間で共有するコンピュータにおいて実行するプログラムであって、
前記画面に表示すべき画像をフレームバッファに格納するステップと、
前記フレームバッファ内の画像を前記画面に表示ステップと、
前記フレームバッファ内の画像の一部を更新ステップと、
パケット毎に与えるべきシーケンス番号を生成するステップと、
前記フレームバッファ内の画像において更新された領域を表す第１の領域情報と、前記更新された領域における更新後の画像である第１の画像と、シーケンス番号とを含む第１のパケットを生成するステップと、
生成した前記第１のパケットを前記クライアント端末に送信するステップと、
前記第１の領域情報と前記シーケンス番号との組を送信履歴格納部に格納するステップと、
前記クライアント端末からシーケンス番号を含む再送要求を受信するステップと、
前記送信履歴格納部を参照することにより前記再送要求に含まれるシーケンス番号に対応する第１の画像において該第１の画像の送信後に更新の行われていない領域を検出するステップと、
検出した領域の画像を第２の画像として前記フレームバッファから取得するステップと、
前記検出した領域を表す第２の領域情報と、前記取得した第２の画像と、前記シーケンス番号カウンタにより付与されるシーケンス番号とを含む第２のパケットを生成するステップと、
生成した前記第２のパケットを前記クライアント端末に送信するステップと、
前記第２の領域情報と、前記第２の領域情報に対応する前記シーケンス番号との組を前記送信履歴格納部に格納するステップと、
ことを前記コンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画面に表示する画像をクライアント端末との間で共有するサーバ端末、画面共有方法およびプログラムに関する。
【背景技術】
【０００２】
ネットワークを介して接続されたサーバ端末からクライアント端末に対してサーバ端末のデスクトップ画像をパケット化してリアルタイムで配信する「画面共有システム」がある。これによれば、一方のデスクトップ画像を遠隔地の両ユーザで共通して参照することが可能になり、ネットワークを介した両拠点間において効率的な共同作業環境が実現できる。
【０００３】
画面共有システムを構築する際には、サーバ端末のデスクトップ領域全体の描画内容を一定時間おきにパケット化してクライアント端末に向けて配信するという方法と、デスクトップ領域の描画領域に更新が生じるごとにその変更部分のみを、その描画座標とともにパケット化して配信するという方法がある。差分を配信する後者の方法では、描画内容の変化に応じて、必要な部分のみのデータ生成が行われるため、前者の方法と比較して、ネットワーク帯域を効率的に利用することができるほか、単位時間当たりの描画コマ数を大きくできるなどといった利点がある。したがって、現在提供されている画面共有システムでは、差分データのみを配信する構成によりサービスが提供されることが多い。
【特許文献１】特開２００５−２０５９０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
画面共有システムにおいては、サーバ端末からクライアント端末への画像パケットの送信に欠損が生じることがあり得るために、その際の影響ができるだけ小さくなるよう制御を行うことが欠かせない。このために、一般には、TCP（Transmission Control Protocol）に代表される、欠損パケットの再送機能を有する通信制御プロトコルを利用することがある。こうした再送機能においては、サーバ端末は、画像パケットに時間的順序を表すシーケンス番号を付加して送信を行い、一方でクライアント端末は、受信するパケットに含まれるシーケンス番号を監視し、画像パケットの受信に欠損が生じたことを検知する。パケットの欠損を検知すると、クライアント端末は、該当するシーケンス番号を含んだ再送要求パケットをサーバ端末に対して送信し、これを受信したサーバ端末は、自身の記憶領域に蓄積してある過去の送信済み画像パケットの一覧を検索して、該当のシーケンス番号に相当するパケットを選び取り、これをクライアント端末に向けて再送する。
【０００５】
しかし、この方法では、サーバ端末からクライアント端末に向けて送信する再送パケットのデータ量が不必要に大きくなる可能性があることが問題点として挙げられる。すなわち、クライアント端末からの再送要求に対応する領域が、その直後の更新により別の画像に上書き更新されている場合において、再送パケットを送ったところで、クライアント端末ではその後の画像によって直ぐに描画が上書きされてしまう。こうした状況は、たとえばデスクトップ上で映像コンテンツを再生している場合など、ある特定領域での更新が頻繁に行われている状況などに特に起こり得ると推定される。
【０００６】
また、サーバ端末は、再送パケットの生成のために、長時間にわたる過去の送信画像パケットの履歴を蓄積している必要がある。このため、履歴の格納のために必要となる記憶領域を大幅に逼迫するおそれがある。
【０００７】
なお、特許文献１では、上記画面共有システムではリアルタイム性が損なわれることを問題として採り上げ、これに対処すべく、クライアント端末が、ある許容パケット時間間隔が経過しても、前回受信したパケットデータに続いて受信すべきパケットデータを受信していない場合に、当該パケットデータの再送要求をサーバ端末に送信するとしている。
【０００８】
本発明は、上記課題を解決するためになされたもので、クライアント端末へ再送するデータ量を節減するとともに、再送のために必要な記憶領域を削減可能としたサーバ端末、画面共有方法およびプログラムを提供する。
【課題を解決するための手段】
【０００９】
本発明の一態様としてのサーバ端末は、
画面に表示する画像をクライアント端末との間で共有するサーバ端末であって、
前記画面に表示すべき画像を記憶するフレームバッファと、
前記フレームバッファ内の画像を前記画面に表示する表示部と、
前記フレームバッファ内の画像の一部を更新する更新処理部と、
パケット毎に与えるべきシーケンス番号を生成するシーケンス番号カウンタと、
前記フレームバッファ内の画像において更新された領域を表す第１の領域情報と、前記更新された領域における更新後の画像である第１の画像と、前記シーケンス番号カウンタにより付与されるシーケンス番号とを含む第１のパケットを生成し、生成した前記第１のパケットを前記クライアント端末に送信する第１の送信部と、
前記第１の領域情報と前記シーケンス番号との組を格納する送信履歴格納部と、
前記クライアント端末からシーケンス番号を含む再送要求を受信する再送要求受信部と、
前記送信履歴格納部を参照することにより前記再送要求に含まれるシーケンス番号に対応する第１の画像において該第１の画像の送信後に更新の行われていない領域を検出し、検出した領域の画像を第２の画像として前記フレームバッファから取得する再送画像生成部と、
前記検出した領域を表す第２の領域情報と、前記取得した第２の画像と、前記シーケンス番号カウンタにより付与されるシーケンス番号とを含む第２のパケットを生成し、生成した前記第２のパケットを前記クライアント端末に送信し、前記第２の領域情報と前記第２の領域情報に対応する前記シーケンス番号との組を格納することを前記送信履歴格納部に要求する第２の送信部と、
を備えたサーバ端末。
【００１０】
本発明の一態様としての画面共有方法は、
画面に表示する画像をクライアント端末との間で共有するサーバ端末において実行する画面共有方法であって、
前記画面に表示すべき画像をフレームバッファに格納し、
前記フレームバッファ内の画像を前記画面に表示し、
前記フレームバッファ内の画像の一部を更新し、
パケット毎に与えるべきシーケンス番号を生成し、
前記フレームバッファ内の画像において更新された領域を表す第１の領域情報と、前記更新された領域における更新後の画像である第１の画像と、シーケンス番号とを含む第１のパケットを生成し、
生成した前記第１のパケットを前記クライアント端末に送信し、
前記第１の領域情報と前記シーケンス番号との組を送信履歴格納部に格納し、
前記クライアント端末からシーケンス番号を含む再送要求を受信し、
前記送信履歴格納部を参照することにより前記再送要求に含まれるシーケンス番号に対応する第１の画像において該第１の画像の送信後に更新の行われていない領域を検出し、
検出した領域の画像を第２の画像として前記フレームバッファから取得し、
前記検出した領域を表す第２の領域情報と、前記取得した第２の画像と、前記シーケンス番号カウンタにより付与されるシーケンス番号とを含む第２のパケットを生成し、
生成した前記第２のパケットを前記クライアント端末に送信し、
前記第２の領域情報と、前記第２の領域情報に対応する前記シーケンス番号との組を前記送信履歴格納部に格納する、
ことを特徴とする画面共有方法。
【００１１】
本発明の一態様としてのプログラムは、
画面に表示する画像をクライアント端末との間で共有するコンピュータにおいて実行するプログラムであって、
前記画面に表示すべき画像をフレームバッファに格納するステップと、
前記フレームバッファ内の画像を前記画面に表示ステップと、
前記フレームバッファ内の画像の一部を更新ステップと、
パケット毎に与えるべきシーケンス番号を生成するステップと、
前記フレームバッファ内の画像において更新された領域を表す第１の領域情報と、前記更新された領域における更新後の画像である第１の画像と、シーケンス番号とを含む第１のパケットを生成するステップと、
生成した前記第１のパケットを前記クライアント端末に送信するステップと、
前記第１の領域情報と前記シーケンス番号との組を送信履歴格納部に格納するステップと、
前記クライアント端末からシーケンス番号を含む再送要求を受信するステップと、
前記送信履歴格納部を参照することにより前記再送要求に含まれるシーケンス番号に対応する第１の画像において該第１の画像の送信後に更新の行われていない領域を検出するステップと、
検出した領域の画像を第２の画像として前記フレームバッファから取得するステップと、
前記検出した領域を表す第２の領域情報と、前記取得した第２の画像と、前記シーケンス番号カウンタにより付与されるシーケンス番号とを含む第２のパケットを生成するステップと、
生成した前記第２のパケットを前記クライアント端末に送信するステップと、
前記第２の領域情報と、前記第２の領域情報に対応する前記シーケンス番号との組を前記送信履歴格納部に格納するステップと、
ことを前記コンピュータに実行させるためのプログラム。
【発明の効果】
【００１２】
本発明により、クライアント端末へ再送するデータ量を節減でき、またサーバ端末における再送のために必要な記憶領域を削減できる。
【発明を実施するための最良の形態】
【００１３】
以下に、添付図面を参照しながら、本発明の実施形態を説明する。
【００１４】
図１は、本発明の実施形態としてのサーバ端末を備えた画面共有システムの構成を示す。本構成は、サーバとして機能する情報処理端末（サーバ端末）１と、クライアントとして機能する情報処理端末（クライアント端末）２とが、ネットワーク３を介して接続されている。
【００１５】
図２は、サーバ端末１の構成を概略的に示す。
【００１６】
サーバ端末１は、その構成要素として、更新画像生成部（更新処理部）１１と、フレームバッファ１２と、表示部１３と、画像送信部１４と、再送画像生成部１５と、再送要求受信部１６と、送信履歴格納部１７とを有する。画像送信部１４は、第１の送信部、第２の送信部、シーケンス番号カウンタを含む。
【００１７】
更新画像生成部１１は、サーバ端末１において実行されるＯＳ（Operating System：オペレーティングシステム）および各種アプリケーションの動作状態に応じて、表示画面（デスクトップ）において更新する領域の更新後の画像（更新画像）と、当該更新する領域の位置を表す情報（領域情報）とを生成する。更新画像は、デスクトップの一部分に相当する矩形状の画面データである。更新画像は第１の画像に対応する。領域情報は、デスクトップ上における更新画像の表示位置を示す数値（フレームバッファ１２に更新画像を格納する際の格納位置を表す数値）である。この領域情報は第１の領域情報に対応する。
【００１８】
フレームバッファ１２は、表示画面の全体画像（デスクトップ全体に相当する画面データ）を格納するための記憶領域を有する。フレームバッファ１２は、更新画像生成部１１で生成された更新画像を、更新画像生成部１１により生成された領域情報に示される領域に格納（上書き）する。フレームバッファ１２は、外部からの指示に応じて、自身に格納している画面データの全部ないしは一部（外部から指示された領域の画像）を出力することができる。
【００１９】
表示部１３は、フレームバッファ１２に格納されている全体画像を表示する。
【００２０】
画像送信部１４は、更新画像生成部１１から更新画像および領域情報を受け取り、受け取った更新画像および領域情報と、パケットの時間的な送信順序を表すシーケンス番号と含む画像パケット（第１のパケット）を生成し、生成した画像パケットをネットワーク３を介してクライアント端末２に送信する。画像送信部１４は、シーケンス番号カウント値を格納するためのシーケンス番号記憶領域を有しており、当該シーケンス番号記憶領域に格納されているシーケンス番号カウント値をシーケンス番号として上記画像パケットに含める。画像送信部１４は、当該画像パケットの生成後、シーケンス番号記憶領域内のシーケンス番号カウント値を１インクリメントする。すなわち画像送信部１４は、パケット毎に付与するシーケンス番号を生成するシーケンス番号カウンタを有している。
【００２１】
送信履歴格納部１７は、画像送信部１４から、上記画像パケットに含まれるものと同じシーケンス番号と領域情報とを１組として受け取り、自身の記憶領域にリスト形式で格納する。
【００２２】
再送要求受信部１６は、ネットワーク３を介してクライアント端末２からシーケンス番号を含む再送要求パケットを受信し、受信した再送要求パケットからシーケンス番号を取り出す。再送要求受信部１６は、取り出したシーケンス番号を再送画像生成部１５に渡す。
【００２３】
再送画像生成部１５は、再送要求受信部１６から渡されたシーケンス番号以降の全てのシーケンス番号に対応する領域情報を送信履歴格納部１７から取得する。再送画像生成部１５は、再送要求受信部１６から渡されたシーケンス番号に対応する領域情報に示される領域から、該シーケンス番号よりも新しい全てのシーケンス番号に対応する領域情報に示される領域と重複する部分を除いた領域を再送領域（再送要求パケットに含まれるシーケンス番号に対応する画像において該画像の送信後に更新の行われていない領域）として求める。再送画像生成部１５は、再送領域の画像を再送画像としてフレームバッファ１２から取得する。この再送画像は第２の画像に相当する。
【００２４】
画像送信部１４は、再送画像生成部１５から再送画像と、上記再送領域の位置を表す情報（再送領域情報）とを受け取り、これら再送画像および再送領域情報と、シーケンス番号記憶領域内のシーケンス番号カウント値と含む再送画像パケット（第２のパケット）を生成し、生成した再送画像パケットをネットワーク３を介してクライアント端末２に送信する。画像送信部１４は、当該再送画像パケットの生成後、上記シーケンス番号記憶領域内のシーケンス番号カウント値を１インクリメントする。再送領域情報は第２の領域情報に対応する。
【００２５】
図３は、クライアント端末２の構成を概略的に示す。
【００２６】
クライアント端末２は、その構成要素として、画像受信部２１と、フレームバッファ２２と、表示部２３と、再送要求送信部２４とを有する。
【００２７】
画像受信部２１は、ネットワーク３を介してサーバ端末１から受信した画像パケットまたは再送画像パケット（受信パケットと総称する）から、更新画像または再送画像（受信画像と総称する）、領域情報または再送領域情報（受信領域情報と総称する）、シーケンス番号を取り出す。また、画像受信部２１は、シーケンス番号カウント値を格納するためのシーケンス番号記憶領域を有しており、受信した受信パケットに含まれるシーケンス番号とこのシーケンス番号カウント値をもとに再送の必要性を判定する。具体的には、受信パケットに含まれるシーケンス番号がシーケンス番号カウント値と一致する場合は、再送の必要がないと判定し、シーケンス番号がシーケンス番号カウント値よりも新しい値である場合、再送の必要があると判定する。例えば、シーケンス番号カウント値が１００で、シーケンス番号が１０３であったとすると、シーケンス番号１００，１０１，１０２に相当する受信パケットの再送が必要であると判定する。画像受信部２１は、再送の必要な受信パケットのシーケンス番号を再送要求送信部２４に渡すことにより、受信パケットの再送要求をサーバ端末１に行うことを再送要求送信部２４に指示する。
【００２８】
フレームバッファ２２は、サーバ端末１のフレームバッファ１２と同様に、表示画面の全体画像（デスクトップ全体に相当する画面データ）を格納するための記憶領域を有する。フレームバッファ２２は、画像受信部２１で受信された受信パケットに含まれる受信画像を、当該受信パケットに含まれる受信領域情報に示される領域に格納する。
【００２９】
表示部２３は、フレームバッファ２２に格納されている画面データを表示する。
【００３０】
再送要求送信部２４は、画像受信部２１から受け取ったシーケンス番号を含む再送要求パケットを生成し、ネットワーク３を介してサーバ端末１に送信する。
【００３１】
次に、本実施形態に係る画面共有システムにより行われる処理について、図面を適宜参照しながら説明する。サーバ端末１とクライアント端末２がネットワーク３を介して接続されており、両者は画面共有を実施している状態にあるものとする。
【００３２】
はじめに、図２、図４、図５、図６を参照しながら、サーバ端末１により行われる処理を説明する。図４は更新画像生成時に行われるシーケンスを説明する図、図５はクライアント端末２からの再送要求受信時に行われるシーケンスを説明する図、図６はサーバ端末１における全体の処理の流れを示すフローチャートである。
【００３３】
画面共有を実施している状態にあるとき、更新画像生成部１１は、サーバ端末１において実行されるＯＳおよび各種アプリケーションの動作状態に変化が生じてユーザへ提示する視覚的情報に更新があるかどうかをチェックし、更新がある場合は（Ｓ１０１のＹＥＳ）、更新画像の生成を行う（ステップＳ１０７）。更新画像とは、上述したようにデスクトップの一部分に相当する矩形状の画面データのことである。更新画像生成部１１は、更新画像の生成に加えて、更新画像の領域情報を算出する。領域情報とは、上述したようにデスクトップ上における更新画像の表示位置を示す数値である。ここでは、領域情報は、図８に示すように、デスクトップの左上をｘｙ座標平面の原点、デスクトップの横幅をＷｉｄｔｈ、縦幅をＨｅｉｇｈｔとしたときの、更新画像の矩形の左上頂点の座標値（Ｌｅｆｔ，Ｔｏｐ）および右下頂点の座標値（Ｒｉｇｈｔ，Ｂｏｔｔｏｍ）であるとする。更新画像生成部１１は、生成した更新画像と、算出した領域情報とを、フレームバッファ１２に入力する。フレームバッファ１２は、自身が持つ記憶領域のうち、領域情報に示される領域を更新画像により上書き更新する。表示部１３は、フレームバッファ１２内の画面データを表示する。また、更新画像生成部１１は、生成した更新画像と、算出した領域情報とを、画像送信部１４に入力することにより、更新画像の送信要求を行う（図４のＡ１１）。処理の流れはステップＳ１０５に移る。
【００３４】
ステップＳ１０５において、更新画像の送信要求を受けた画像送信部１４は、自身のシーケンス番号記憶領域に格納しているシーケンス番号カウント値を参照し、このシーケンス番号カウント値をシーケンス番号として、シーケンス番号と更新画像と領域情報とを含んだ画像パケット（第１のパケット）を生成する。画像送信部１４は、このシーケンス番号カウント値を画面共有の開始の際にゼロにリセットし、その後は本ステップＳ１０５において画像パケットを生成するごとに１ずつインクリメントする。シーケンス番号カウント値が規定値（たとえば２の３２乗−１）を超えたら、再びゼロにリセットする。
【００３５】
画像送信部１４は、生成した画像パケットを、ネットワーク３を介してクライアント端末２に向けて送信する。画像パケットを送信すると、画像送信部１４は、送信履歴格納部１７に対し画像パケットに含まれるものと同じ領域情報とシーケンス番号とを１組として出力して、この組の記録を依頼する（図４のＡ１２）。処理の流れはステップＳ１０６に進む。
【００３６】
ステップＳ１０６において、送信履歴格納部１７は、画像送信部１４から入力された領域情報とシーケンス番号との組を自身の記憶領域に格納する。送信履歴格納部１７はリスト形式で各組を管理しており、入力された組をリストに追加する。送信履歴格納部１７は、入力された組をリストに追加したらその旨を画像送信部１４に通知する（図４のＡ１３）。リストへの追加が完了した旨を受けた画像送信部１４は、画像パケットをクライアント端末２に送信した旨を更新画像生成部１１に通知する（図４のＡ１４）。
【００３７】
この後、画面共有を終了する指示がユーザから与えられたかどうかを判定し（Ｓ１０８）、与えられた場合は（Ｓ１０８のＹＥＳ）処理を終了し、与えられていない場合は（Ｓ１０８のＮＯ）Ｓ１０１に戻る。
【００３８】
一方で、ステップＳ１０１において、ユーザに提示する視覚的情報に更新がなかった場合（Ｓ１０１のＮＯ）、処理の流れはステップＳ１０２に移る。
【００３９】
ステップＳ１０２において、再送要求受信部１６は、ネットワーク３を介してクライアント端末２から再送要求パケットを受信したかどうかを確認する。再送要求パケットを受信していない場合（Ｓ１０２のＮＯ）、処理の流れはステップＳ１０１に戻る。再送要求パケットを受信している場合（Ｓ１０２のＹＥＳ）、再送要求受信部１６は、再送要求パケットのペイロード部に含まれるシーケンス番号を抽出する。再送要求受信部１６は該シーケンス番号を再送画像生成部１５に入力することにより再送画像の生成要求を行う（図５のＢ１１）。処理の流れはステップＳ１０３に進む。
【００４０】
ステップＳ１０３において、再送要求受信部１６から再送画像の生成要求を受けた再送画像生成部１５は、再送要求受信部１６から入力されたシーケンス番号を送信履歴格納部１７に出力して、該シーケンス番号以降の全ての領域情報の取得を要求する（図５のＢ１２）。送信履歴格納部１７はこの要求に応答して、自身の記憶領域を探索し、入力されたシーケンス番号に等しいか、これよりも新しいシーケンス番号をもつ全ての組に含まれる領域情報を検出し再送画像生成部１５に返す（図５のＢ１３）。再送画像生成部１５は、送信履歴格納部１７に入力したシーケンス番号に対応する領域情報を「要求領域情報」、該シーケンス番号よりも新しいシーケンス番号に対応する領域情報を「送信済み領域情報」とした上で、要求領域情報に示される領域から、各送信済み領域情報に示される領域と重複する部分を除いた領域を再送領域として算出する。再送画像生成部１５は、この再送領域を表す情報を「再送領域情報」とし、この再送領域情報をフレームバッファ１２に入力して、再送領域に存在する画像（最新画像）の取得を要求する（図５のＢ１４）。再送領域の算出方法については後に詳述する。処理の流れはステップＳ１０４に進む。
【００４１】
ステップＳ１０４において、再送画像生成部１５から最新画像の取得要求を受けたフレームバッファ１２は、再送画像生成部１５から入力された再送領域情報に示される領域の画像を自身の記憶領域から取得し、これを再送画像として再送画像生成部１５に返す（図５のＢ１５）。再送画像生成部１５は、受け取った再送画像と、再送領域情報とを画像送信部１４に入力することにより該再送画像の送信を要求する（図５のＢ１６）。もし再送画像と再送領域情報との組が複数個に及ぶ場合は、適当な順番で一つずつ送信要求を行う。処理の流れはステップＳ１０５に進む。
【００４２】
ステップＳ１０５において、再送画像の送信を要求された画像送信部１４は、自身の記憶領域に格納しているシーケンス番号カウント値を参照し、このシーケンス番号カウント値と再送画像と再送領域情報とを含んだ再送画像パケット（第２のパケット）を生成する。画像送信部１４は、生成した再送画像パケットを、ネットワーク３を介してクライアント端末２に向けて送信する。再送画像パケットを送信すると、画像送信部１４は、送信履歴格納部１７に対し再送領域情報とシーケンス番号との組を出力して、この組の記録を要求する（図５のＢ１７）。処理の流れはステップＳ１０６に進む。なお、画像送信部１４は、再送領域情報が面積ゼロを示す場合は、再送画像パケットを生成せずに本ステップＳ１０５を終了し、さらに次のステップＳ１０６も省略してよい。
【００４３】
ステップＳ１０６において、送信履歴格納部１７は、画像送信部１４から入力された再送領域情報とシーケンス番号との組を自身の記憶領域に格納する。送信履歴格納部１７はリスト形式で各組を管理しており、入力された組をリストに追加する。送信履歴格納部１７は、当該組の追加を行ったらその旨を画像送信部１４に通知し（図５のＢ１８）、この通知を受けた画像送信部１４は再送画像パケットをクライアント端末２に送信した旨を再送画像生成部１５に通知する（図５のＢ１９）。この通知を受けた再送画像生成部１５は、再送要求受信部１６に対し再送画像の生成を行った旨を返す（図５のＢ２０）。
【００４４】
この後、画面共有を終了する指示がユーザから与えられたかどうかを判定し（Ｓ１０８）、与えられた場合は（Ｓ１０７のＹＥＳ）処理を終了し、与えられていない場合は（Ｓ１０８のＮＯ）Ｓ１０１に戻る。
【００４５】
次に、本画面共有システムのクライアント端末２における処理を、図３および図７を参照しながら説明する。図７はクライアント端末２における処理の流れを示すフローチャートである。
【００４６】
ステップＳ２０１において、サーバ端末１と画面共有を実施しているクライアント端末２の画像受信部２１は、ネットワーク３を介してサーバ端末１から画像パケットまたは再送画像パケット（受信パケットと総称する）が図示しない受信バッファに到着しているかどうかを確認する。受信パケットが到着している場合（Ｓ２０１のＹＥＳ）、処理の流れはステップＳ２０２に進む。到着していない場合は（Ｓ２０１のＮＯ）、受信パケットの到着が確認できるまでの間、本ステップの処理を繰り返し行う。
【００４７】
ステップＳ２０２において、画像受信部２１は、受信バッファから受信パケットを取り出し、受信パケットのペイロード部に含まれる更新画像または再送画像（受信画像と総称する）、領域情報または再送領域情報（受信領域情報と総称する）、シーケンス番号を抽出する。画像受信部２１は、抽出した受信画像と抽出した受信領域情報とをフレームバッファ２２に入力する。フレームバッファ２２は、画像受信部２１から受信画像と受信領域情報が入力されると、自身が持つ記憶領域のうち、受信領域情報に示される領域を受信画像で上書き更新する。フレームバッファ２２は、格納しているデスクトップ画面の画像を表示部２３へ出力し、表示部２３は該画像を表示する。処理の流れはステップＳ２０３に進む。
【００４８】
ステップＳ２０３において、画像受信部２１は、受信パケットから抽出したシーケンス番号をもとに、再送要求を行う必要があるか否かを判定する。より詳細には、画像受信部２１は、自身のシーケンス番号カウント値記憶領域に格納しているシーケンス番号カウント値を参照し、抽出したシーケンス番号がこのシーケンス番号カウント値と一致するか否かを調べる。一致する場合は、再送要求の必要がないと判定する（Ｓ２０３のＮＯ）。
【００４９】
一致せず、かつ、抽出したシーケンス番号が該シーケンス番号カウント値よりも新しい場合、画像受信部２１は、再送要求の必要があると判定する（Ｓ２０３のＹＥＳ）。例えば、シーケンス番号カウント値が１００で、シーケンス番号が１０３であったとすると、画像受信部２１は、シーケンス番号１００，１０１，１０２に相当する受信パケットが消失したと判断し、これらの再送要求を行う必要があると判定する。一方、シーケンス番号がシーケンス番号カウント値よりも古い（たとえば９８）場合は、画像受信部２１は、以前に到着した受信パケットが重複して到着したと判断し、該受信パケットを破棄する（再送要求の必要はないと判定する）。
【００５０】
シーケンス番号とシーケンス番号カウント値が一致した場合は、画像受信部２１はシーケンス番号カウント値を１インクリメントする。すなわちシーケンス番号に１を加算した値へシーケンス番号カウント値を更新する。また、シーケンス番号がシーケンス番号カウント値よりも新しい場合もシーケンス番号に１を加算した値によってシーケンス番号カウント値を更新する。たとえばシーケンス番号カウント値が１００、シーケンス番号が１０３の場合、該シーケンス番号カウント値を、１０４（＝１０３＋１）へ更新する。なお、シーケンス番号カウント値は、画面共有の開始の際にゼロでリセットされており、シーケンス番号カウント値が規定値（サーバ端末１の画像送信部１４が有するシーケンス番号カウント値における規定値と同一）を超えると、再びゼロにリセットされる。
【００５１】
以上において、再送要求の必要があると判定された場合（Ｓ２０３のＹＥＳ）、処理の流れはステップＳ２０４に移り、再送要求の必要がないと判定された場合（Ｓ２０３のＮＯ）、処理の流れはステップＳ２０１に戻る。
【００５２】
ステップＳ２０４において、画像受信部２１は、再送要求を行う必要がある受信パケットのシーケンス番号を再送要求送信部２４に入力することにより、サーバ端末１へ再送要求を行うことを指示する。再送要求送信部２４は、入力されたシーケンス番号を含んだ再送要求パケットを生成し、ネットワーク３を介してサーバ端末１に向けて送信する。再送要求を行う受信パケットが複数個に及ぶ場合は、１個の再送要求パケットに全ての該当するシーケンス番号を含めても良いし、あるいは、複数個の再送要求パケットを生成しても良い。再送要求パケットの送信が完了したら、画面共有を終了する指示がユーザから与えられたかどうかを判定し（Ｓ２０５）、与えられた場合は（Ｓ２０５のＹＥＳ）処理を終了し、与えられていない場合は（Ｓ２０５のＮＯ）、処理の流れはステップＳ２０１に戻る。
【００５３】
ここで、図６のステップＳ１０３において行われる再送領域情報の算出処理の詳細について、図９、図１０、図１１を参照しながら、具体例を挙げて説明する。
【００５４】
図９は、サーバ端末１からクライアント端末２に対して送信された４つの画像パケットにそれぞれ含まれる、領域情報とシーケンス番号との組の例を示す。この例では、デスクトップの横幅：Ｗｉｄｔｈを６４０、縦幅：Ｈｅｉｇｈｔを４８０としている。また、シーケンス番号は０から始まり、この例では０〜３までの領域情報１０００Ａ、１０００Ｂ、１０００Ｃ、１０００Ｄが示されている。図１０はこれらによって表される領域を図示したものである。サーバ端末１は、これらのシーケンス番号の小さい番に画像パケットを送信し、これらの領域情報とシーケンス番号とを送信履歴格納部１７に格納する。
【００５５】
ここで、ネットワーク３において、シーケンス番号１の画像パケットが消失した場合の処理を述べる。クライアント端末２の画像受信部２１において、シーケンス番号０に該当する画像パケットの受信が既に完了しており、画像受信部２１の記憶領域に格納されているシーケンス番号カウント値は１であるとする。このとき、画像受信部２１が新たに受信した画像パケットに含まれるシーケンス番号が２であったとする。ステップＳ２０３の手順に従って、画像受信部２１は、シーケンス番号カウント値と該シーケンス番号とを比較した結果、シーケンス番号１のパケットが消失したと判断し、再送要求の送信が必要であると判定する。この結果、再送要求送信部２４からは、シーケンス番号１を含んだ再送要求パケットが生成され、サーバ端末１に向けて送信される。
【００５６】
サーバ端末１の再送画像生成部１５は、再送要求受信部１６を介して再送要求パケットに含まれるシーケンス番号１を受け取ると、これを送信履歴格納部１７に入力する。送信履歴格納部１７は、格納情報を参照し、シーケンス番号１に対応する領域情報１０００Ｂ、および、これよりも新しいシーケンス番号、すなわちシーケンス番号２、３に対応する領域情報１０００Ｃ、１０００Ｄを応答として出力する。
【００５７】
次に、再送画像生成部１５は、領域情報１０００Ｂを「要求領域情報」、領域情報１０００Ｃ、１０００Ｄを「送信済み領域情報」とする。そして、要求領域情報に示される領域から送信済み領域情報と重複する部分を除いた結果を再送領域として算出する。つまり、領域情報１０００Ｂの領域から、領域情報１０００Ｃ、１０００Ｄと重複する領域を切り取る計算を行い、この結果、図１１に示す再送領域１０２０が得られる。再送画像生成部１５は、この再送領域１０２０を表す情報を「再送領域情報」とする。再送領域１０２０は、矩形の領域を複数個合わせた総和として表現することができる。図１１の例では１０２０Ａと１０２０Ｂとの２つの矩形領域の総和として表現される。次に再送画像生成部１５は、再送領域１０２０をフレームバッファ１２に入力して、この再送領域１０２０に対応する画像（最新画像）を取得する。
【００５８】
ところで、図６のステップＳ１０６では、上述したように、領域情報とシーケンス番号との組を送信履歴格納部１７にリスト形式により格納する処理を行う。この処理では、新規に入力された領域情報とシーケンス番号との組はリストの最後尾に追加され、いったん格納された組は、画面共有状態が終了するまで常に格納されたままとなる。したがって、リストの情報が際限なく増加するために、やがて送信履歴格納部１７の記憶領域が枯渇する恐れがある。この問題に対する対処方法として、下記のような方法を用いることができる。
【００５９】
第１の方法として、適当なタイミングでリストの情報を消去するという方法がある。再送画像生成部１５において、送信履歴格納部１７に組の格納を新たに要求するごとに、タイマーを適当な時刻に設定し、設定された時刻にタイマーから通知を受けたタイミングで、該当する組をリストから削除する。この方法では、再送要求パケットを受信した時に、クライアント端末２から指定されたシーケンス番号に相当する組が削除されてしまっているという事態が起こり得るが、タイマーの設定時間を十分大きくとることでこの事態は回避できる。もし、削除済みのシーケンス番号に対する再送要求パケットが受信された場合には、送信履歴格納部１７はこのシーケンス番号をもつ組が存在しない旨を再送画像生成部１５に通知し、これを受けて再送画像生成部１５は再送を諦め、再送画像パケットの生成を行わないこととすればよい。以上の方法により、比較的容易に送信履歴格納部１７内の情報量を抑制することが可能である。
【００６０】
第２の方法として、クライアント端末２からサーバ端末１に対し、周期的なタイミングで、画像受信部２１に格納されているシーケンス番号カウント値を通知するという方法もある。この場合、サーバ端末１の再送画像生成部１５は、通知されたシーケンス番号カウント値から１減じた値を、クライアント端末２が最近に受信成功したパケットのシーケンス番号と見なすことができる。そこで、この値より古いシーケンス番号については、既に相手によって受信済みであるとみなし、これらの古いシーケンス番号をもつ組はもはや不要であると判断し、送信履歴格納部１７にこれらの組を消去するよう要求する。以上の方法によっても、送信履歴格納部１７内の情報量を抑制することができる。
【００６１】
ここで図７のステップＳ２０４の説明において、クライアント端末２は、再送要求を行う受信パケット（画像パケットまたは再送画像パケット）が複数個に及ぶ場合は、１個の再送要求パケットに全ての該当するシーケンス番号を含めても良い旨を述べた。これに対応して、サーバ端末１は、再送要求パケットに含まれるシーケンス番号が複数個に及ぶ場合に、複数のシーケンス番号の夫々に対して個々の再送画像パケットを生成するのでなく、複数のシーケンス番号に対し一つの再送用画像パケットを生成してもよい。その一例を図９および図１０を用いて説明する。
【００６２】
クライアント端末２において、シーケンス番号０と１に対応する画像パケットの受信に失敗したとする。このとき、画像受信部２１はサーバ端末１に対し、再送要求送信部２４を通じてシーケンス番号０と１についての再送要求を行う。これを受けてサーバ端末１では、再送画像生成部１５において、シーケンス番号０と１の両方に対応する１つの再送画像パケットを以下のように生成する。
【００６３】
再送画像生成部１５はシーケンス番号０と１を送信履歴格納部１７に出力し、シーケンス番号０以降の領域情報を送信履歴格納部１７から取得する。シーケンス番号０以降の領域情報を受け取ると、再送画像生成部１５は、シーケンス番号０と１に対応する領域情報を「要求領域情報」、それよりも新しいシーケンス番号（すなわちここではシーケンス番号２と３に相当する）に対応する領域情報を「送信済み領域情報」とした上で、以下の処理を行う。
【００６４】
まず全ての要求領域情報に示される領域の総和を求めた後で、求めた総和領域から、各送信済み領域情報と重複する領域を除いた結果を再送領域として算出し、これを表す情報を「再送領域情報」とする。この再送領域情報の例を図１２に示す。１０３０は再送領域を表している。この後、再送画像生成部１５が再送領域情報をフレームバッファ１２に入力して再送領域に対応する画像（最新画像）を取得し、取得した最新画像を、画像送信部１４を通じてサーバ端末１に向けて送信する。以上の方法によって、シーケンス番号０と１とで重複している領域を二度送信する手間を省くことができ、通信帯域の使用量の節減を図ることができる。
【００６５】
以上のように本実施の形態によれば、サーバ端末は、過去に送信した画像パケットに含まれる領域情報とシーケンス番号との組を履歴として保存しておき、再送要求を受けたときには、再送要求されたシーケンス番号に対応する領域情報に示される領域から、該シーケンス番号より新しい全てのシーケンス番号に対応する領域情報に示される領域との重複部分を除いた領域を再送領域として算出し、その再送領域における画像をフレームバッファから取得し送信する。これにより、サーバ端末は、再送のためのデータ量の節減を図ることが可能となるとともに、過去の送信した各画像パケットに含まれる画像を別途保存しておく必要がなくなるため、記憶領域を削減することができる。本発明は、デスクトップ画面をマルチキャストで配信する場合など、サーバ端末における通信帯域の負荷が高くなりやすい状況においても容易に適用可能であり、本発明の効果の十分な発揮が期待できる。
【００６６】
以上、具体的な手順を挙げながら、本発明の実施形態について説明を行った。なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。その一例は上記手順中においていくつか述べてきた。
【図面の簡単な説明】
【００６７】
【図１】本発明の実施の形態に係る画面共有システムの構成を示す図
【図２】サーバ端末の構成を示す図
【図３】クライアント端末の構成を示す図
【図４】サーバ端末における更新画像生成時のシーケンス図
【図５】サーバ端末における再送要求受信時のシーケンス図
【図６】サーバ端末のフローチャート図
【図７】クライアント端末のフローチャート図
【図８】領域情報を説明する図
【図９】画像パケットに含まれる領域情報の例を示す図
【図１０】画像パケットに含まれる領域情報の例を示す図
【図１１】再送領域情報の例を示す図
【図１２】再送領域情報の例を示す図
【符号の説明】
【００６８】
１：サーバ端末
２：クライアント端末
３：ネットワーク
１１：更新画像生成部
１２：フレームバッファ
１３：表示部
１４：画像送信部
１５：再送画像生成部
１６：再送要求受信部
１７：送信履歴格納部
【図１】
2008109269.tif 000003
【図２】
2008109269.tif 000004
【図３】
2008109269.tif 000005
【図４】
2008109269.tif 000006
【図５】
2008109269.tif 000007
【図６】
2008109269.tif 000008
【図７】
2008109269.tif 000009
【図８】
2008109269.tif 000010
【図９】
2008109269.tif 000011
【図１０】
2008109269.tif 000012
【図１１】
2008109269.tif 000013
【図１２】
2008109269.tif 000014