WO2011036733A1 - サーバ装置、及び画面転送システム - Google Patents

サーバ装置、及び画面転送システム Download PDF

Info

Publication number
WO2011036733A1
WO2011036733A1 PCT/JP2009/004922 JP2009004922W WO2011036733A1 WO 2011036733 A1 WO2011036733 A1 WO 2011036733A1 JP 2009004922 W JP2009004922 W JP 2009004922W WO 2011036733 A1 WO2011036733 A1 WO 2011036733A1
Authority
WO
WIPO (PCT)
Prior art keywords
unit
drawing command
screen
client device
sequence number
Prior art date
Application number
PCT/JP2009/004922
Other languages
English (en)
French (fr)
Inventor
谷澤佳道
川添博史
後藤真孝
Original Assignee
株式会社 東芝
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社 東芝 filed Critical 株式会社 東芝
Priority to PCT/JP2009/004922 priority Critical patent/WO2011036733A1/ja
Publication of WO2011036733A1 publication Critical patent/WO2011036733A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1454Digital output to display device ; Cooperation and interconnection of the display device with other functional units involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2370/00Aspects of data communication
    • G09G2370/02Networking aspects

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

 サーバ装置100は、ネットワーク300を介してクライアント装置200から入力データを受信し、入力データに対する応答画面の描画命令をクライアント装置200に送信する。サーバ装置100の欠損通知受信部111は、クライアント装置200において描画命令の受信に欠損が生じたことを検知する。画面共有品質予測部108は、欠損に対して描画命令を再送信する場合に、クライアント装置で描画の破綻が生じるか否かを判定する。描画の破綻が生じると判定した場合に、再構築部107によって描画が破綻しないするように描画命令を再構築し、描画命令送信部104は再構築した描画命令をクライアント装置200に送信する。

Description

サーバ装置、及び画面転送システム
 本発明は、サーバ装置、及び画面転送システムに関する。
 画面転送システムとは、サーバ装置がネットワークを介して接続されたクライアント装置に対して、画面を送信するシステムである。このシステムでは、利用者がクライアント装置を操作して、ネットワークを介してサーバ装置にアクセスし、サーバ装置の機能を利用することができる。
 まず利用者は、マウス、キーボード、タッチペン、タッチスクリーン等の入力インタフェースを用いてクライアント装置に情報を入力する。クライアント装置は、その入力情報をサーバ装置に対して送信する。サーバ装置は、クライアント装置から入力情報を受信すると、その入力情報に従ってサーバ装置上のアプリケーション処理を実行する。アプリケーション処理の結果、ディスプレイ描画情報が生成されると、サーバ装置はその描画情報をクライアント装置に送信する。クライアント装置は、描画情報を受信すると、ディスプレイ装置等に表示し、利用者に新しい画面情報を伝える。
 画面転送システムでは、クライアント装置とサーバ装置がネットワークを介して通信する。そのため、ネットワークの帯域幅が少ない場合や、パケットロスや通信障害、輻輳などが発生すると、クライアント装置への描画情報が遅延あるいは欠損することがある。
 上記の問題を解決するために、サーバ装置においてネットワーックの状況やCPU負荷などに応じて送信データを間引くことで、ネットワークの負荷を下げ、通信遅延を抑制する技術が発明されている。(例えば、特許文献1参照。)
特開2000-57094号公報
 しかしながら、特許文献1のように、サーバ装置において送信データを間引くと、クライアント装置への描画情報の品質が悪化するという課題があった。
 本発明の目的は、クライアント装置への画面情報を遅延や欠損なく送信することができるサーバ装置、及び画面転送システムを提供することを目的とする。
 上記目的を達成するために、本発明のサーバ装置は、クライアント装置からネットワークを介して入力データを受信し、前記入力データに対する応答画面の描画命令を前記ネットワークを介して前記クライアント装置に送信するサーバ装置であって、 前記クライアント装置へ送信した前記描画命令を記憶する履歴記憶部と、前記クライアント装置から送信された前記描画命令に欠損が生じたことを通知する通知データを受信する受信部と、前記通知データに応じて前記履歴記憶部から抽出した前記描画命令を再送信することによって前記クライアント装置で描画の破綻が生じるか否かを予測する第1の予測部と、前記第1の予測部によって描画の破綻が生じると予測した場合に、前記履歴記憶部に記憶された描画命令と前記通知データとから描画の破綻が生じないように描画命令を再構築する再構築部と、前記再構築した描画命令を前記クライアント装置に送信する送信部とを備えることを特徴とする。
 本発明によれば、利用者に品質の悪化を意識させずに、クライアント装置における出力応答を遅延や欠損なく画面表示することができる。
(a)本発明の第1の実施形態に係るサーバ装置を示す図。 (b)同実施形態に係るクライアント装置を示す図。 (a)同実施形態に係る描画命令のフォーマットの例を示す図。 (b)同実施形態に係る描画命令のフォーマットの例を示す図。 (a)同実施形態に係るサーバ装置における画面更新生成時の処理のフローチャート。 (b)同実施形態に係るクライアント装置における描画命令受信時の処理のフローチャート。 (a)同実施形態に係るサーバ装置における欠損通知受信時の処理のフローチャート。 (b)同実施形態に係る描画命令の履歴の例を示す図。 同実施形態に係る描画命令の実行後の画面表示の推移を示す図。 同実施形態に係るパケット欠損が生じた場合の描画命令の再構築を説明する図。 本発明の第2の実施形態に係る画面転送システムの構成と当該画面転送システムにおけるデータの流れ。 同実施形態に係るクライアント装置における処理のシーケンス図。 (a)同実施形態に係るドラッグによるウィンドウ移動のイメージ図。 (b)同実施形態に係るウィンドウ移動の画面更新手順における矩形コピーのイメージ図。 (a)同実施形態に係るウィンドウ移動の画面更新手順における背景画像描画のイメージ図。 (b)本発明の第3の実施形態に係る画面共有品質予測部における処理のフローチャート。 (a)同実施形態に係る遅延状態の判定方法を説明する図。 (b)同実施形態に係る遅延値の計算方法の一例を説明する図。
 以下、図面を参照しながら本発明の実施形態について詳細に説明する。
(第1の実施形態)
 本実施形態に係る画面転送システムは、図1(a)に示すサーバ装置100と、図1(b)に示すクライアント装置200とによって構成される。サーバ装置100とクライアント装置200は、ネットワーク300に接続されている。
[サーバ装置100]
 図1(a)に示すサーバ装置100は、描画命令生成部101と、シーケンス番号付加部102と、エンコード部103と、送信部(以下、描画命令送信部という)104と、フレームバッファ105と、表示部106と、再構築部107と、予測部(以下、画面共有品質予測部という)108と、履歴記憶部109と、履歴取得部110と、受信部(以下、欠損通知受信部という)111とを備える。
 描画命令生成部101は、サーバ装置100において実行されるOS(Operating System:オペレーティングシステム)および各種アプリケーションの動作状態に応じて描画命令を生成する。描画命令とは、表示画面(デスクトップ)上に最新の描画状態を得るための命令のことである。直前の描画状態が記憶されたフレームバッファ105に対し描画命令を適用することにより、最新の描画状態を得ることができる。
 描画命令は、描画命令の種類を表す描画命令種別と、描画する内容の詳細を表わす描画データから構成される。図2(a)および図2(b)に、描画命令の例を示す。
 図2(a)は、描画命令種別B1が「BITMAP」の例を示している。この場合、描画データB2は、更新する領域の位置を表す領域情報B21と、更新する領域の更新後の画像情報B22からなる。画像情報B22は、デスクトップの一部分に相当する矩形状のビットマップデータ(矩形の各画素における赤緑青3色の値など)である。領域情報B21は、デスクトップ上における更新画像の表示位置を示す座標値である。
 図2(b)は、描画命令種別C1が「COPYRECT」の例を示している。「COPYRECT」とは、フレームバッファ105における特定の矩形領域のビットマップデータを、別の位置にコピーすることを示す。この場合、描画データC2は、コピー先の領域情報C21と、また、コピー元の領域情報C22を含んでいる。
 描画命令生成部101は、フレームバッファ105に対し前記描画命令を適用した後、さらにシーケンス番号付加部102に描画命令を出力する。
 シーケンス番号付加部102は、シーケンス番号カウント値を格納するための記憶領域(図示せず)を有している。シーケンス番号付加部102は、描画命令生成部101もしくは再構築部107から描画命令を受け取るごとに、前記記憶領域に格納しているシーケンス番号カウント値をその描画命令に付加する。シーケンス番号付加部102は、シーケンス番号カウント値を付加するごとに、前記シーケンス番号カウント値を1つインクリメントする。シーケンス番号付加部102は、シーケンス番号カウント値を付加した描画命令をエンコード部103および履歴記憶部109に出力する。
 エンコード部103は、シーケンス番号付加部102から描画命令を受け取ると、その描画命令に画像圧縮などのエンコード処理を施す。その後、エンコード部103は、エンコードされた描画命令を描画命令送信部104に出力する。
 描画命令送信部104は、エンコードされた描画命令を、通信用のパケットに形成する。その後、描画命令送信部104は、生成したパケットをネットワーク300に送出する。
 フレームバッファ105は、表示部106の表示画面全体の画面データを記憶する。フレームバッファ105は、描画命令生成部101から描画命令を受けると、その描画命令の描画命令種別と描画データに応じて、画面データを記憶する記憶領域に新たな画面データを上書する。フレームバッファ105の前記記憶領域に上書きされた画面データは、表示部106によって表示される。また、フレームバッファ105は、再構築部107から画面データの取得要求を受け取ると、指定された領域の最新の画面データを再構築部107に出力する。
 履歴記憶部109は、描画命令を記憶する。履歴記憶部109は、シーケンス番号付加部102から描画命令を受け取るごとに、シーケンス番号と描画命令とを対応させて記憶する。その結果、履歴記憶部109には所定期間の描画履歴が蓄積される。また、履歴記憶部109は、再構築部107、画面共有品質予測部108、履歴取得部109から蓄積している描画命令の取得要求を受け取ると、要求に対応する描画命令をそれぞれのユニットへ出力する。
 履歴取得部110は、欠損通知受信部111からパケットの欠損通知を受け取ると、欠損通知に含まれるシーケンス番号に対応する描画命令を履歴記憶部109から取得する。その後、履歴取得部110は、画面共有品質予測部108にシーケンス番号及び描画命令を出力する。
 画面共有品質予測部108は、履歴取得部110から描画命令を受け取ると、当該描画命令以降に記録された描画命令を履歴記憶部109から取得する。そしてこれらの描画命令をもとにして、クライアント装置200に対し再送信の処置を行う場合に、クライアント装置200において描画の破綻が生じるか否かを予測する。画面共有品質予測部108は、予測結果と、取得した描画命令、および履歴記憶部109から取得した履歴情報の組み合わせを再構築部107に出力する。
 再構築部107は、画面共有品質予測部108から予測結果、描画命令、および履歴情報の組み合わせを受け取ると、予測結果の内容を確認する。予測結果がクライアント装置200における描画の破綻を示す内容であった場合に、再構築部107は、破綻が生じないように再送しようとする描画命令の再構築を行う。再構築部107は、再構築した描画命令をシーケンス番号付加部102に出力する。
 表示部106は、フレームバッファ105に格納されている画面データを表示する。欠損通知受信部111は、ネットワーク300を介して欠損通知を受信すると、これを履歴取得部110に出力する。
[クライアント装置200]
 図1(b)に示すクライアント装置200は、受信部(以下、描画命令受信部という)201と、検知部(以下、欠損検知部という)202と、デコード部203と、描画実行部204と、フレームバッファ205と、表示部206と、送信部(以下、欠損通知送信部という)207とを備える。
 描画命令受信部201は、ネットワーク300を介して描画命令を受信する。欠損検知部202は、シーケンス番号カウント値を格納するための記憶領域(図示せず)を有している。欠損検知部202は、描画命令受信部201から描画命令を受け取ると、その描画命令に付加されたシーケンス番号を記憶し、受信した描画命令の描画データに欠損が生じているか否かを検知する。欠損検知部202は、欠損を検知した場合には、欠損したシーケンス番号を欠損通知送信部207に出力する。また、欠損したシーケンス番号とともに当該描画命令をデコード部203に出力する。一方、欠損を検知しなかった場合には、欠損通知送信部207には何も通知せず、欠損検知部202は当該描画命令をデコード部203に出力する。
 デコード部203は、描画命令を受け取ると、その描画命令にデコード処理を施す。その後、デコードされた描画命令を描画実行部204に出力する。
 描画実行部204は、デコード後の描画命令を受け取ると、その描画命令に含まれる描画命令種別と描画データに応じて、フレームバッファ205の画面データに新たな画面データを上書きする。
 フレームバッファ205は、表示部206の表示画面全体の画面データを記憶する。表示部206は、フレームバッファ205に格納されている画面データを表示する。欠損通知送信部207は、欠損検知部202からシーケンス番号を受け取ると、これをパケット化する。その後、欠損通知として当該パケットをネットワーク300を介してサーバ装置100に送出する。
[画面転送システムにおける処理の流れ]
 以下に、本実施形態に係る画面転送システムの動作を説明する。本実施形態における画面転送システムでは、サーバ装置100とクライアント装置200がネットワーク300を介して接続されている。サーバ装置100とクライアント装置200の間は、ネットワーク接続が完了して画面転送を実施している状態にあるものとする。
(1)画面更新処理(サーバ装置100)
 図3(a)は、サーバ装置100の画面更新処理のフローチャートである。図1(a)及び図3(a)を参照しながら、サーバ装置100における画面更新の処理を説明する。
 画面転送を実施している状態にあるとき、描画命令生成部101は、サーバ装置100において実行されるOSおよび各種アプリケーションの動作状態の変化により、クライアント装置200へ提示する視覚的情報に更新があるかどうかをチェックする(ステップS101)。
 画面更新がある場合は(ステップS101のYES)、描画命令生成部101は、描画命令の生成を行う(ステップS102)。描画命令生成部101は、更新の前後の視覚的情報の差分を任意の方法で抽出することで、上述したような「BITMAP」や「COPYRECT」などの種別の描画命令を生成する。あるいは別の方法として、描画命令生成部101は、OSが発行する描画命令を直接フックすることにより、描画命令を得てもよい。
 描画命令生成部101は、生成した描画命令をフレームバッファ105に入力する。フレームバッファ105は、内部の記憶領域のうち、描画命令の領域情報に示す領域に描画命令の描画データ(新たな画面データ)を上書する。表示部106は、フレームバッファ105に記憶された画面データを表示する。また、描画命令生成部101は、生成した描画命令をシーケンス番号付加部102に出力する。その後、処理の流れはステップS103に進む。
 描画命令を受け取ると、シーケンス番号付加部102は、内部のシーケンス番号記憶領域に格納しているシーケンス番号カウント値を参照する。シーケンス番号付加部102は、このシーケンス番号カウント値をシーケンス番号として、受信した描画命令に付加する(ステップS103)。
 シーケンス番号付加部102では、画面転送の開始の際にシーケンス番号カウント値をゼロにリセットする。その後は、ステップS103の処理でシーケンス番号の付加を行うごとに、シーケンス番号カウント値を1ずつインクリメントする。シーケンス番号カウント値が規定値(例えば、2の32乗-1)を超えたら、再びゼロにリセットする。その後、処理の流れはステップS104に進む。
 シーケンス番号付加部102は、描画命令とシーケンス番号の対を履歴記憶部109に出力する。履歴記憶部109は、内部の記憶領域に描画命令とシーケンス番号の対を描画履歴として記憶する(ステップS104)。
 シーケンス番号付加部102は、履歴記憶部109から記憶が完了した通知を受け取ると、シーケンス番号が付加された描画命令をエンコード部103に出力する。
 図4(b)は、履歴記憶部109に記憶される描画履歴の一例である。履歴記憶部109は、描画命令のすべての情報を記憶する必要はない。本実施形態では、シーケンス番号と、それに対応する描画命令種別(「COPYRECT」、「BITMAP」など)とを記憶する。描画命令種別が「COPYRECT」の場合は、さらに、領域情報C21とコピー元の領域情報C22を記憶する。また、描画命令種別が「BITMAP」の場合は、領域情報B21のみが記憶される。すなわち、「BITMAP」の場合は、画像情報B22のビットマップデータは記憶されない。
 エンコード部103は、描画命令を受け取ると、描画命令種別が「BITMAP」の場合には画像情報に対しエンコード処理を施す。エンコード部103はビットマップデータに対して、例えばJPEG(Joint Photographic Experts Group)やgzip(GNU ZIP)などの任意のアルゴリズムによる圧縮を行う。次に、エンコード部103は、エンコード後の描画命令を描画命令送信部104に出力する。
 描画命令送信部104は、描画命令にUDP(User Datagram Protocol)ヘッダやIP(Internet Protocol)ヘッダを付与するなど、通信用の描画命令パケットに変換する。その後、描画命令送信部104は、描画命令パケットをネットワーク300に送出する。
(2)描画命令パケットの受信時(クライアント装置200)
 次に、図1(b)及び図3(b)を参照しながら、クライアント装置200における描画命令パケット受信時の動作を説明する。図3(b)は、クライアント装置200における描画命令パケット受信時のフローチャートである。
 まず、描画命令受信部201は、ネットワーク300から描画命令パケットを受信すると、そのパケットからUDPヘッダやIPヘッダを除外し、描画命令を取り出す(ステップS301)。その後、描画命令受信部201は、取り出した描画命令を欠損検知部202に出力する。
 欠損検知部202は、描画命令受信部201から描画命令を受け取ると、描画命令中のシーケンス番号を取り出す。その後、欠損検知部202は、取得したシーケンス番号と、内部のシーケンス番号カウント値記憶領域(図示せず)に記憶しているシーケンス番号カウント値とを比較し、両者が一致するか否かを調べる(ステップS302)。
 両者の比較結果は、以下の3つのケースに分けられる。第1のケースは、「描画命令中のシーケンス番号とシーケンス番号カウント値が一致する場合(=)」である。第2のケースは、「描画命令中のシーケンス番号とシーケンス番号カウント値が一致せず、かつ、描画命令中のシーケンス番号がシーケンス番号カウント値よりも大きい場合(>)」である。第3のケースは、「描画命令中のシーケンス番号とシーケンス番号カウント値が一致せず、かつ、描画命令中のシーケンス番号がシーケンス番号カウント値よりも小さい場合(<)」である。
 まず、第1のケースの場合では、欠損検知部202は、欠損は生じていないと判定する。そして、欠損検知部202は、受信した描画命令をデコード部203に出力する。その後、処理の流れはステップS305に進む。
 デコード部203は描画命令を受信すると、その描画命令にエンコード処理が施されている場合には対応するデコード処理を施す。その後、デコードした描画命令を描画実行部204に出力する。
 描画実行部204は、描画命令に従って描画命令中の画面データをフレームバッファ205に記憶する。その後、表示部206がフレームバッファ205から記憶された画面データを取り出し、画面に表示する(ステップS305)。
 次に、第2のケースの場合では、欠損検知部202は、欠損が生じたと判定する。例えば、内部で保有するシーケンス番号カウント値が「100」で、描画命令中のシーケンス番号が「103」であったとすると、欠損検知部202は、シーケンス番号「100」,「101」,「102」に相当する描画命令パケットに欠損が生じたと判定する。
 そして、欠損検知部202は、欠損が生じた描画命令パケットのシーケンス番号(上述の例では「100」,「101」,「102」)を欠損通知送信部208に出力する。
 欠損通知送信部208は、欠損検知部202から通知されたシーケンス番号にUDPヘッダやIPヘッダ等など通信に必要な情報を付加し、サーバ装置100に欠損を通知する欠損通知パケットを形成する。その後、欠損通知送信部208は、欠損通知パケットを送信する(ステップS303)。
 欠損検知部202は、欠損通知パケットの送信が完了すると、描画命令受信部201より入力された描画命令と、欠損が生じた描画命令のシーケンス番号の組み合わせをデコード部203に出力する。その後、処理の流れはステップS305に進む。
 デコード部203は描画命令を受信すると、その描画命令にエンコード処理が施されている場合には対応するデコード処理を施す。その後、デコードした描画命令を描画実行部204に出力する。
 描画実行部204は、描画命令に従って描画命令中の画面データをフレームバッファ205に記憶する。その後、表示部206がフレームバッファ205から記憶された画面データを取り出し、画面に表示する(ステップS305)。
 また、第3のケースの場合では、欠損検知部202は、以前に受信した描画命令を重複して受信したと判断する。そして、欠損検知部202は、受信した描画命令を破棄し、処理を終了する(ステップS304)。
 上記第1乃至第3のいずれのケースであっても、欠損検知部202では描画命令中のシーケンス番号とシーケンス番号カウント値とを比較した後、内部のシーケンス番号カウント値に描画命令中のシーケンス番号が上書きされ、更新される。
(3)欠損通知パケットの受信時(サーバ装置100)
 図1(a)及び図4(a)を参照しながら、サーバ装置100における欠損通知パケットの受信時の動作を説明する。図4(a)は、サーバ装置100における欠損通知パケット受信時のフローチャートである。
 まず、欠損通知受信部111は、クライアント端末200からの欠損通知パケットを受信すると、その欠損通知パケットに含まれる1つ又は複数のシーケンス番号を取り出す(ステップS201)。そして、そのシーケンス番号を、履歴取得部110に出力する。
 履歴取得部110はシーケンス番号を受け取ると、履歴記憶部109から当該シーケンス番号に対応する描画命令を取得する(ステップS202)。履歴記憶部109には、例えば図4(b)に示すような描画命令の履歴が記憶されている。履歴記憶部109は要求されたシーケンス番号に対する履歴情報を出力する。履歴情報には、シーケンス番号に対応する描画命令種別、及び領域情報を少なくとも有する。
 履歴取得部110は、取得した描画命令の履歴情報を、画面共有品質予測部108に出力する。
 画面共有品質予測部108は、履歴情報を受け取ると、履歴記憶部109からシーケンス番号以降の描画命令の履歴情報をすべて取得する。次に、画面共有品質予測部108は、後述する予測ルーチンに従って欠損した描画命令の再送信を行った場合に、クライアント装置200における画面状態に描画の破綻が生じるか否かを予測する。
 ここでは、説明を簡潔にするために、描画命令種別を「BITMAP」と「COPYRECT」の2種類のみとする。また、欠損した描画命令Lの描画先の領域情報をD[L]と表す。描画命令種別が「COPYRECT」の場合、コピー元の領域をS[L]と表す。以上の表記を用いて、欠損した描画命令を、「BITMAP:D[L]」または「COPYRECT:S[L]→D[L]」と表記する。さらに、当該描画命令以降i番目に発生した描画命令の履歴を「BITMAP:D[i]」または「COPYRECT:S[i]→D[i]」と表記する。
 画面共有品質予測部108は、欠損した描画命令の再送信した場合にクライアント装置200における画面状態に描画の破綻が生じるか否かを予測するために、以下の予測ルーチンを実行する(ステップS203)。以下において、「TRUE」は「描画の破綻が生じる」ことを意味し、「FALSE」は「描画の破綻が生じない」ことを意味する。
<予測ルーチン>
(1)i:=1
(2)i番目の描画命令が存在しなければ「FALSE」を出力して終了
(3)i番目の描画命令がBITMAPなら(5)へ遷移
(4)D[L]とS[i]が共通部分を持つ場合、「TRUE」を出力して終了
(5)D[L]とD[i]が共通部分を持つ場合、「TRUE」を出力して終了
(6)欠損した描画命令LがBITMAPなら(8)へ遷移
(7)S[L]とD[i]が共通部分を持つ場合、「TRUE」を出力して終了
(8)i:=i+1 の後で(2)へ遷移
 画面共有品質予測部108は、<予測ルーチン>を実行することにより、クライアント装置200における描画の破綻の有無を予測することができる。画面共有品質予測部108は、予測結果(「TRUE」または「FALSE」)と、欠損した描画命令とを再構築部107に出力する。
 再構築部107は、予測結果および欠損した描画命令が入力されると、予測結果を確認する。予測結果が「FALSE」の場合(ステップS204の“NO”)、欠損した描画命令の再送信を行ってもクライアント装置200における画面状態に描画の破綻が生じない。このとき再構築部107は、描画命令が「BITMAP」ならば、領域情報B21に対応する最新のフレームバッファ105の描画データを取得する。取得した最新のフレームバッファ105の描画データをビットマップデータとした上で、欠損した描画命令をシーケンス番号付加部102に出力する(ステップS206)。
 一方、描画命令種別が「COPYRECT」ならば、再構築部107は、この描画命令をそのままシーケンス番号付加部102に出力する(ステップS206)。これ以降のシーケンス番号付加部102の動作は、前述の内容と同一である(ステップS207)。
 なお、このとき描画命令に付加されるシーケンス番号は、欠損したシーケンス番号ではなく、新規の番号が割り当てられる。
 一方、予測結果が「TRUE」の場合(ステップS204の“YES”)、欠損した描画命令の再送信を単純に行うと、クライアント装置200における描画に破綻が生じてしまう。そこで再構築部107は、以下の再構築ルーチンに従って描画命令の再構築を行う(ステップS205)。
 まず、再構築部107は、欠損した描画命令以降に発生したすべての描画命令の履歴情報を履歴記憶部109から取得する。その後、以下の再構築ルーチンを実行する。当該描画命令以降i番目に発生した描画命令の履歴情報を「BITMAP:D[i]」または「COPYRECT:S[i]→D[i]」と表記する。なお、以下において、BITMAP描画命令に対してはS[i]は空集合として扱う。ここで出力用リストとは、再構築部が破綻を予測する際に、描画命令を一時的に格納するリストであって、本ステップ(S205)
にて描画命令を格納し、後のステップ(S206およびS207)で参照される。
<再構築ルーチン>
(1)出力用リストにLを追加する
(2)i:=1
(3)i番目の描画命令が存在しなければ(9)へ遷移
(4)出力用リストのすべての要素Aについて(5)~(7)を実行する
(5)D[A]とS[i]が共通部分を持つ場合、出力用リストの最後尾に  BITMAP:D[i]を追加する
(6)D[A]とD[i]が共通部分を持つ場合、Aの描画領域、すなわちD[A]をD[A]-D[i]で置き換える。ここでD[A]-D[i]とはD[A]の領域からD[A]とD[i]の共通部分を除外した部分領域を指す
(7)S[A]とD[i]が共通部分を持つ場合、出力用リストの最後尾にBITMAP:D[i](S[A]×D[i])を追加する。ここでS[A]×D[i]とはS[A]とD[i]領域の共通部分を指す。またD[i](S[A]×D[i])とは、S[A]とD[i]領域の共通部分に対応するコピー先領域の部分を指す
(8)i:=i+1 の後で(3)へ遷移
(9)出力用リストが開始時と変化がなければ「TRUE」(破綻が生じる)、変化があれば「FALSE」(破綻が生じない)を出力する
 上記の再構築ルーチンの終了後、出力用リストに記された描画命令が、再構築後の描画命令となる。
 再構築部107は、当該出力用リスト内の描画命令を先頭から順にチェックしていく。再構築した描画命令が「BITMAP」ならば、再構築部107は領域情報B21に対応する最新のフレームバッファ105の描画データを取得する。取得した最新のフレームバッファ105の描画データをビットマップデータ(画像情報B22)とした上で、再構築した描画命令をシーケンス番号付加部102に出力する(ステップS206)。
 一方、描画命令種別が「COPYRECT」ならば、再構築部107は、この描画命令をそのままシーケンス番号付加部102に出力する(ステップS206)。これ以降のシーケンス番号付加部102の動作は、前述の内容と同一である(ステップS207)。
[再構築の具体例1]
 上記で説明した画面共有品質予測部108と再構築部107の動作について、具体例を用いて以下に説明する。図4(b)は、ある時間内に発生した一連の描画命令の履歴情報の例を示す。
 デスクトップにおいてウィンドウをいったん描画した後、ウィンドウ位置が右下方向に移動した状況を想定する。図4(b)の例では、4個の描画命令が、「BITMAP」→「COPYRECT」→「BITMAP」→「BITMAP」の順に発生したとしている。
 この一連の描画命令の実行結果を描画命令毎に表すと、図5(a)乃至(e)のようになる。すなわち、サーバ装置100が送信したこれらの描画命令が、1つも欠損なくクライアント装置200で受信されると、図5(a)乃至(e)と同じ工程で作成された画面データがクライアント装置200の表示部2006に表示される。
 以上の一連の描画命令において、シーケンス番号1の描画命令が伝送途中に欠損した場合の画面共有品質予測部108と再構築部107の動作を、図6を用いて説明する。
 例えば、シーケンス番号1が欠損した場合、クライアント装置200は、はじめにシーケンス番号2の描画命令を受信することになる。このとき、クライアント装置200の欠損検知部202は、シーケンス番号1の欠損を検知する。その後、欠損通知送信部207とサーバ装置100の欠損通知受信部111を通じて、サーバ装置100の履歴取得部110にシーケンス番号1の欠損を通知する。
 サーバ装置100の履歴取得部110は、シーケンス番号1に対応する履歴情報としてBITMAP:(70,70,350,280)を取得すると、これを画面共有品質予測部108に渡す。
 画面共有品質予測部108は、履歴記憶部109から、シーケンス番号1以降のシーケンス番号2,シーケンス番号3,シーケンス番号4の描画命令の履歴情報を取得すると、上述の<予測ルーチン>を用いてクライアント装置200における描画に破綻が生じるか否かを予測する。図6の例では、シーケンス番号1の描画領域(70,70,350,280)と、シーケンス番号2のコピー元領域(70,70,350,280)とは共通部分を持つため、予測ルーチンの結果は「TRUE」(破綻が生じる)となる。
 次に、再構築部107は、歴記憶部109からの予測結果を受けて、描画命令の再構築を行う。上述の<再構築ルーチン>を用いて、描画に破綻が生じないような描画命令を構成することが可能である。ルーチンの細かな実行の様子は説明を省略する。図6の例では、<再構築ルーチン>を実行した結果、再構築後の描画命令はBITMAP:(280,210,560,420)となる。
 再構築部107は、この領域に対応する最新のフレームバッファ105の描画データを取得し、これをビットマップデータとした上で、この描画命令をシーケンス番号付加部102に出力する。シーケンス番号付加部102は、この描画命令に新たなシーケンス番号5を付加して(図6(a)参照)、ネットワーク300を介してクライアント端末200に送信する。
[再構築の具体例2]
 次に、前記シーケンス番号2の描画命令が欠損した場合の再構築の例を、図6を用いて以下に説明する。
 シーケンス番号2の描画命令が伝送途中に欠損した場合、クライアント装置200は、シーケンス番号1、3の順に描画命令を受信することになる。従って、欠損検知部202は、シーケンス番号カウンタ値に基づいて、シーケンス番号2の欠損を検知する。欠損検知部202は、欠損通知送信部207、ネットワーク300、サーバ装置100の欠損通知受信部111を通じて、サーバ装置100の履歴取得部110にシーケンス番号2の欠損を通知する。
 履歴取得部110は、シーケンス番号2に対応する履歴として、履歴記憶部109から描画命令「COPYRECT:(70,70,350,280)→(280,210,560,420)」を取得する。履歴取得部110は、取得した描画命令を画面共有品質予測部108に渡す。
 画面共有品質予測部108は、履歴記憶部109からシーケンス番号2以降のシーケンス番号3,及びシーケンス番号4の描画命令の履歴情報を取得する。その後、上述の<予測ルーチン>を用いて、クライアント装置200において描画に破綻が生じるか否かを予測する。図6の例では、シーケンス番号2のコピー元領域(70,70,350,280)と、シーケンス番号3の描画領域(70,70,350,210)とは共通部分を持つため、予測ルーチンの結果は「TRUE」となる。
 次に、再構築部107は、上述の<再構築ルーチン>を用いて、描画命令の再構築を行う。再構築ルーチンを実行した結果、再構築後の描画命令として出力用リストには、「COPYRECT:(70,70,350,280)→(280,210,560,420)」、「BITMAP:(280,210,560,350)」、「BITMAP:(280,350,490,420)」の3個が得られる。
 再構築部107は、この出力用リスト内の描画命令について、先頭から順番に、「BITMAP」の描画命令であれば領域に対応する最新のフレームバッファの描画データを取得した後で、シーケンス番号付加部102に出力する。シーケンス番号付加部102は、この描画命令に新たなシーケンス番号5,6,7を付加して送信する(図6(b),(c),(d)参照)。
 以上の手順によって得られる再構築後の描画命令により、クライアント装置200において描画の破綻が回避され、欠損が生じない場合と同一のデスクトップ状態が得られる。
 なお、本実施形態に記載した<予測ルーチン>および<再構築ルーチン>は、あくまでも動作のための一例にすぎない。クライアント装置200における描画の破綻が回避できるならば、これ以外の任意のルーチンを用いても良い。
 また、今回は描画命令種別を「BITMAP」と「COPYRECT」の2種類のみに限って説明したが、これ以外の種類の描画命令が混在した環境であっても、同じようにルーチンを構成することが可能である。例えば、デスクトップ上の矩形領域を対象に描画処理を行う任意の描画命令は、「BITMAP」の場合と同様にルーチンを構成することができる。
 以上のように、本実施形態におけるサーバ装置100は、過去に送出した描画命令の履歴を参照することで、クライアント装置200における描画の破綻を予測することができる。また、クライアント装置200において描画が破綻すると予測された場合には、サーバ装置100が描画命令に再構築を施すことで、クライアント装置200における描画の破綻を回避することができる。これにより、利用者に品質の悪化を意識させずに、クライアント装置200における出力応答を遅延や欠損なく画面表示することができる。
 また、本実施形態のサーバ装置100は、破綻の回避に必要な最小限の描画命令のみを構成して送信する。従って、例えばデスクトップ全体の最新の描画状態を取得して送出するといった場合と比べて、サーバ装置100におけるエンコードや送信の処理負荷が低減される。また、ネットワーク帯域の消費量も少なくて済むという利点がある。
 さらに、本実施形態のクライアント装置200は、描画命令の受信に欠損を検知したとき、その欠損通知に対する応答を待つことなく、以降に受信した描画命令を用いて、引き続き描画実行する。従って、例えば伝送プロトコルにTCP(Transmission Control Protocol)を用いた画面転送システムのように、欠損が生ずると以降の描画を中断してサーバ装置からの再送信を待機するという場合と比べて、サーバ装置100で実行された描画がすみやかにクライアント装置200において反映されるというリアルタイム性を確保できる利点がある。
(第2の実施形態)
  前述した第1の実施形態では、画面共有品質予測部108と再構築部107を画面転送システムのサーバ装置100に備える構成としたが、第2の実施形態では、クライアント装置200に備える構成とする。図7は、第2の実施形態に係る画面転送システムの構成を示す図である。
 本実施形態に係る画面転送システムは、図7に示すサーバ装置1000とクライアント装置2000とによって構成される。図7はまた、画面転送システムにおけるデータの流れを矢印によって示している。破線の矢印は通常(比較例)のデータの流れを示し、実線の矢印は本実施例特有のデータの流れを示す。以下に例として、クライアント装置2000の画面に表示されたウィンドウをドラッグにより移動させる場合を説明する。
 まず、通常(比較例)のデータの流れを説明する。比較例となる通常の画面転送システムでは、クライアント装置2000の利用者が、ペン、マウスなどで入力するポインタ入力や、キーボードなどで入力したキー入力を、入力部2001が受け付ける。クライアント装置2000は、そのポインタ入力やキー入力といった入力データを、通信部2002、ネットワーク300を介して、サーバ装置1000に送信する。
 サーバ装置1000の通信部1001は、入力データを受信する。その後、入力データを入力処理部1002へ渡す。入力処理部1002は、入力データをアプリケーション/OS 1003に渡す。OSやアプリケーションでは、入力データに応じたプログラム実行が行なわれ、画面に処理結果を示す出力表示データが表示される。(処理内容によっては、画面に出力表示されないこともある。)画面への出力表示データは、アプリケーション/OS 1003から画面の描画命令として、描画転送部1004に出力される。描画転送部1004は、当該描画命令を、通信部1001、ネットワーク300を通じてクライアント装置2000に送信する。
 クライアント装置2000の通信部2002は、サーバ装置1000からの描画命令を受信する。その後、表示部2003において描画命令が実行され、画面に出力表示データが表示される。
 一方、本実施形態では、クライアント装置2000において、入力部2001からのポインタ入力と、通信部2002からの矩形コピー描画命令(詳細は後述する)をトリガとして、画面共有品質予測部2004が起動される。そして、予測部(以下、画面共有品質予測部という)2004は、クライアント装置2000における出力表示に欠損が発生するであろうと予測する。何故ならば、ドラッグによる矩形コピーは、多量の画面更新データを発生させる操作であるので、多量の通信を誘発する可能性がある。これにより、パケットの欠損による描画の破綻、操作性悪化などを引き起こす可能性が高いためである。
 上記の予測に基づき、画面共有品質予測部2004は、以後、入力されたポインタ入力をサーバ装置1000へ転送しないように、遮断部(以下、転送遮断部という)2006に指令する。転送遮断部2006は、画面共有品質予測部2004からの指令を受け取ると、入力部2001から受け取ったポインタ入力のデータをそのまま破棄する。
 また、画面共有品質予測部2004は、構築部(以下、再構築部という)2005に対し描画命令の再構築を指令する。その指令を受け取ると、再構築部2005はポインタ入力を画面の矩形コピー描画命令に再構築し、表示部2003へ渡す。その後、表示部2003において矩形コピー描画命令が実行され、画面に出力が表示される。
 以降、クライアント装置2000において、入力部2001から連続してポインタ入力される場合、再構築部2005はドラッグの移動に応じて矩形コピー描画命令を再構築し、表示部2003へ渡す。
 入力部2001からポインタ入力がなくなった際には、画面共有品質予測部2004は転送遮断部2006と再構築部2005にその旨を通知する。この通知により、転送遮断部2006では入力データを破棄する動作を終了する。また、再構築部2005は、矩形コピー描画命令の再構築を終了する。
 その後、転送遮断部2006は、最後のドラッグ入力を通信部2002を介してサーバ装置1000に送信し、通常動作に戻る。
 上述した本実施形態の処理の流れを、図8を用いて具体的に説明する。図8は、クライアント装置2000の動作を示す図である。
 まず、入力部2001から、ポインタ入力TIP[x11,y11]が入力される。ここで、TIPとは、ペン入力におけるペンのタッチを意味し、座標 [x11, y11] にペンがタッチされたことを意味する。あるいは、マウスの場合には座標[x11, y11]にて左ボタンが押されたことを意味する。
 画面共有品質予測部2004はポインタ入力を受け、ペンのタッチが開始されたことを検知する。そして、そのポインタ入力を転送遮断部2006を介して通信部2002へ渡す。
 次に、入力部2001からポインタ入力TIP[x12,y12]が入力される。画面共有品質予測部2004は、ペンがタッチされたまま座標が移動していることから、ドラッグが行なわれたことを検知する。そして、そのポインタ入力を転送遮断部2006を介して通信部2002へ渡す。
 その後、上述した処理によってサーバ装置1000から、ウィンドウのドラッグによる画面更新データ3001,3002が送信されてくる。画面更新データ3001は、矩形コピー描画命令である。画面更新データ3002は、背景画像描画命令である。
 例えば、クライアント装置2000にて、図9(a)に示すようなウィンドウの移動(ドラッグ)を行ったとする。例えば、ウィンドウのサイズは320×200である。図9(a)に示すようなウィンドウの移動に対処するためには、図9(b)に示す矩形コピーの処理と、その後に図10(a)に示す背景画像描画の処理を実施する必要がある。そのため、サーバ装置1000から矩形コピー描画命令3001及び背景画像描画命令3002の2つの画面更新データがクライアント装置2000に送信されてくる。
 画面共有品質予測部2004は、画面更新データを受信すると、入力されたポインタ入力[x12,y12]が、起点 [x22,y22]から320×200ピクセルの矩形内に入っているかどうかを判定する。ここでは、矩形内に入っていると判定したものとして説明する。
 画面共有品質予測部2004は、上記の矩形内に入っているとの判定に基づき、クライアント装置2000における出力画面表示に欠損が発生するであろうと予測する。画面共有品質予測部2004は、その予測に基づき転送遮断部2006へ遮断開始の指令3003を送る。
 転送遮断部2006は、画面共有品質予測部2004からの指令を受け取り、以後、受け取るデータの転送を停止する。
 一方、通信部2006は、サーバ装置1000から送られてきた画面更新データ3001(矩形コピー [x21,y21](320x200)-[x22,y22])と、画面更新データ3002(背景画像描画)を表示部2003に送る。表示部2003は、受け取った画面更新データの処理を実行し、表示を出力する。
 次に、入力部2001から次のポインタ入力(TIP[x13,y13])が入力されると、画面共有品質予測部2004は再構築部2005に命令再構築の指令3004を出す。
 再構築部2005は、命令再構築の指令3004を受信すると、直前のポインタ入力(TIP[x12,y12])と、画面更新データ3001(矩形コピー [x21,y21](320x200)-[x22,y22])に基づき、x23 = x22 + x13 - x12, y23 = y22 + y13 - y12 として、画面更新データ3005(矩形コピー [x22,y22](320x200)-[x23,y23])を生成する。そして、生成した画面更新データ3005を表示部2003に送る。表示部2003は、画面更新データ3005に従って表示処理を行う。
 一方、転送遮断部2006は、ポインタ入力(TIP[x13,y13])を受け取るが、サーバ装置1000には転送せずに、最新のポインタ入力として保持する。以降、入力部2001から、次のポインタ入力(TIP[x14,y14])、次の次のポインタ入力(TIP[x18,y18])が入力された場合も同様の動作を行う。
 その後、入力部2001から、次のポインタ入力3006(unTIP[x19,y19])が入力される。unTIPは、ペンのタッチが離されたことを意味する。つまり、これまで行なわれていたドラッグ操作が、座標[x19,y19]で終了したことを意味する。
 従って、画面共有品質予測部2004は、転送遮断部2006へ遮断終了の指令3007を送信する。転送遮断部2006は、遮断終了の指令3007を受信すると、最後のポインタ入力(unTIP[x19,y19])を通信部2002を介してサーバ装置1000へ転送する。
 サーバ装置1000は、前回にクライアント装置2000から受信したポインタ入力TIP[x12,y12]の実行状態から、今回クライアント装置2000から受信したポインタ入力(unTIP[x19,y19])の実行状態に遷移するまでの処理を行う。その結果、出力される画面更新データ3008、3009をクライアント装置2000へ送信する。
 クライアント装置2000は、画面更新データ3008、3009を受信し、当該処理を実行する。以降、クライアント装置2000は、本シーケンス開始時と同様の状態に戻る。
 以上のように、本実施形態におけるクライアント装置2000は、ドラッグ操作により大量の画面更新データが発生すると予測した場合、ドラッグ操作に関するポインタ入力をサーバ装置1000に送信せず、内部に保有する画像データを利用して出力画面を表示する。これにより、クライアント装置2000とサーバ装置1000間の通信量を少なく抑えることができ、ネットワークの混雑を抑制できる。その結果、クライアント装置2000において、パケットの遅延や欠損による描画の破綻を回避することができる。
(第3の実施形態)
 第3の実施形態は、第2の実施形態と同様に、画面共有品質予測部108と再構築部107を画面転送システムのクライアント装置に備えるものである。
 本実施例では、ネットワーク品質が悪化して、クライアント装置における描画実行が遅延した場合、クライアント装置に表示されるマウスポインタカーソル(以下、カーソルという)の形状を、処理待ち中であることを示す「砂時計マーク」に変更する。これにより、画面転送システムの利用者に対し、ネットワークに起因する処理の遅延が発生していることを正しく通知する。その結果、利用者のストレスや、思わぬ誤操作の原因を取り除くことができる。
 本実施形態に係る画面転送システムは、第2の実施形態と同様に、図7に示すサーバ装置1000とクライアント装置2000とによって構成される。また、データの流れも、第2の実施形態と同様に図7に示す通りである。従って、本実施形態に特有の画面共有品質予測部2004における予測方法と、再構築部2005の処理内容を以下に説明する。
 まず、本実施形態における画面共有品質予測部2004について説明する。
 画面共有品質予測部2004は、通信部2002からネットワーク300の品質を示すネットワーク情報を取得する。画面共有品質予測部2004は、取得したネットワーク情報に基づき、ネットワーク300において遅延が発生しているか否かを判定する。当該判定結果に応じて、再構築部2005に対して、表示部2003に描画するカーソルの画像(以下、カーソルイメージ情報という)を指定する。取得するネットワーク情報、および、それに基づいて遅延発生を判断する方法については後述する。
 次に、本実施形態における再構築部2005について説明する。再構築部は、実施例1及び2で述べた機能に加え、以下の機能も有する。
 再構築部2005は、入力部2001から、画面共有品質予測部2004を介して、カーソルの位置情報(ボタン押下情報等も含む。以下同様。)を通知され、記憶する。また、再構築部2005は、画面共有品質予測部2004から、カーソルイメージ情報を通知され、記憶する。あるいは、再構築部2005は、画面共有品質予測部2004からの要求に応じて、カーソル位置に描画するカーソルイメージ情報を決定する。この場合、描画命令にて指定されているカーソルイメージ情報を上書き更新してもよい。
 以下に、図10(b)を用いて本実施形態の画面共有品質予測部2004の動作を説明する。図10(b)は、画面共有品質予測部2004の動作を示すフローチャートである。
 まず、画面共有品質予測部2004は、通信部2002から描画命令、あるいはネットワーク情報を受信すると(ステップS1401)、遅延判定の処理を開始する(ステップS1402)。
 ネットワーク300が遅延状態であると判定した場合、画面共有品質予測部2004は、例えばカーソルイメージ情報Xを再構築部2005に対して通知する(ステップS1403)。一方、遅延状態でないと判定した場合、画面共有品質予測部2004は、カーソルイメージ情報Wを再構築部2005に対して通知する(ステップS1405)。
 再構築部2005においてカーソルイメージ情報Xからカーソルイメージ情報Wへの変更、あるいはカーソルイメージ情報Wからカーソルイメージ情報Xへの変更が発生した場合、一定時間カーソルイメージ情報の変更を禁止する(ステップS1404)。一定時間のカーソルイメージ情報の変更禁止は、カーソルイメージ情報が頻繁に変更されないために必要なフローである。
 ここで、カーソルイメージ情報Xは、ネットワーク300に遅延が発生していることを利用者に通知するために用いられる。一般には、カーソルイメージ情報Xには砂時計マークの画像が用いられる。又はコンピュータが処理中であることを示す砂時計マークの画像と同一の画像を利用してもよい。更にはまた、遅延状態であることを明示的に提示するため、異なる砂時計マークの画像を利用しても良い。
 なお、ネットワーク300が遅延状態であると予測しているとき、クライアント装置2000は以下に述べる動作を行っても良い。
・ネットワーク300が遅延状態であるとき、表示部2003の画面描画を停止してもよい。即ち、ネットワーク300が遅延状態であるときは、サーバ装置1000から送信される出力画面情報の受信が円滑に行われない。よって、描画が乱れたり、遅延したりして、クライアント装置のリソースを不要に消費したりすることを避けるために、画面描画を停止させる。
・ネットワーク300が遅延状態であるとき、カーソルイメージ情報X(砂時計マーク)の位置の更新を行わず、停止させてもよい。これは、利用者にクライアント端末2000の操作ができないことを通知するためである。
・ネットワーク300が遅延状態であるとき、入力情報の送信を停止してもよい。即ち、ネットワーク300が遅延状態であるときは、ネットワーク300に異常が発生している場合がある。従って、通信部2002から入力情報を送信しても、応答として返信される出力情報を正しく受信できる可能性は低い。また、新たな送信データが発生することで、ネットワーク300の更なる混雑や輻輳を招くおそれがある。これを避けるためである。
 次に、ステップS1402のネットワーク300が遅延状態であるか否かの判定について説明する。画面共有品質予測部2004は、以下に記す3つのステップを繰り返すことにより、ネットワーク300が遅延状態であるか否かを判定する。(1) 遅延値の計算、(2) 遅延値と遅延判断定数との比較による遅延状態であるか否かの決定、(3) 遅延判断定数の修正である。
(1)遅延値Yの計算
 ネットワーク情報に基づき、遅延値Yを計算して求める。遅延値Yは、例えば、RTT (Round Trip Time)などの時間幅である。利用するネットワーク情報と、その計算方法にはいくつかのバリエーションがあるため、後述する。
(2)遅延値と遅延判断定数との比較による遅延状態であるか否かの決定
 図11(a)に、時間経過に対する遅延指数Yの変化を示す。図11(a)の横軸は、遅延値Yである。また、縦軸は、時間経過tである。
 「(1)遅延値の計算」で得られた遅延値Yと、事前に定められた2つの遅延判断定数A,B(A<B)の大小を比較する。YがBより大きい(つまり、前回のYはY<Bであったにも関わらず、今回のYは、B<Yであった)ならば、ネットワーク300が遅延状態であると判定する。YがAより小さい(つまり、前回のYはA<Yであったにも関わらず、今回のYは、Y<Aであった)ならば、ネットワーク300が遅延状態でないと判定する。上記以外の場合は、前回の判定結果を維持し、変更しない。
 図11(a)は、上述の判定の結果をグラフ化したものである。即ち、図11(a)に示すように、遅延値Yが遅延判断定数Bを超えた時刻から、遅延判断定数Aを下回った時刻までを、ネットワーク300が遅延状態であると、画面共有品質予測部2004は判定する。
(3)遅延判断定数の修正
 「(1)遅延値の計算」で得られた遅延値Yに基づき、遅延値Yの平均値を計算する。このとき、上述の遅延判断定数AおよびBの値を、遅延値Yの平均値を考慮して修正してもよい。
 ここで、遅延判断定数A,Bの初期値は、クライアント装置2000がネットワーク300に接続しているリンク情報を用いて決定してもよい。例えば、クライアント装置2000が有線LANに接続している場合を考える。クライアント装置2000が100Mbpsの有線LANに接続している場合と、1Gbpsの有線LANに接続している場合とでは、後者の方がAおよびBの値が大きいことが望ましい。次に、クライアント装置2000が無線LANに接続している場合を考える。IEEE802.11b準拠の無線LANを用いる場合と、IEEE802.11g準拠の無線LANを用いる場合とでは、後者の方がAおよびBの値が大きいことが望ましい。
 次に、上述の「(1)遅延値の計算」におけるネットワーク情報の種類と遅延値の計算方法を説明する。遅延値は、以下(A)~(D)に示すいずれかの方法、またはこれらの組合せによって計算して求める。
(A)RTT値をネットワーク情報として用いる。
 クライアント装置2000の画面共有品質予測部2004は、サーバ装置1000との間で、RTT (Round Trip Time)を測定するためのデータを交換する。RTTの測定方法は、一般的に知られた方法を利用するものとする。本発明で限定するものではないため、詳細説明は省く。画面共有品質予測部2004は、測定により得られたRTT値を、遅延値として利用する。
(B)パケット欠損率をネットワーク情報として用いる。
 クライアント装置2000の画面共有品質予測部2004は、「(1)サーバ装置1000に対して送信したデータのうち、未だTCP Ackメッセージを受信していない数」、もしくは「(2)TCPスタックにおける現在のセグメントサイズ」などの送信データに関するネットワーク情報を、通信部2002から取得し記憶する。上記(1)を用いる場合、画面共有品質予測部2004は、未だTCP Ackメッセージを受信していないデータの割合を計算し、遅延値として使用する。上記(2)を用いる場合には、画面共有品質予測部2004は、最大セグメントサイズと現在のセグメントサイズとの差を計算し、遅延値として使用する。
(C)画面更新データ受信開始から受信完了に要する時間を、ネットワーク情報として用いる。
 通信部2002が受信する画面更新データは、複数のTCPパケットとして届けられることもあるし、一部データが欠損して届けられたために再送処理が行われることもある。そのため、通信部2002にて、画面更新データを受信開始する時刻と、画面更新データを受信完了する時刻は異なる。そこで画面共有品質予測部2004は、通信部2002において画面更新データを受信開始した時刻に、タイマー(図示せず)をスタートする。そして、画面更新データを受信完了した時刻に、当該タイマーをストップする。これにより、画面更新データの受信開始から受信完了に要する時間を測定する。画面共有品質予測部2004は、測定した、画面更新データの受信開始から受信完了に要する時間を、遅延値として使用する。
 ただし、画面更新データの受信は開始されたが、画面更新データの受信完了に時間を要し、時間測定中のタイマーの値が非常に大きくなる場合がある。すなわち、画面更新データの受信開始から受信完了に要する時間が、遅延判断定数B以上となる場合である。この場合には、画面共有品質予測部2004は、画面更新データの受信が完了していなくても、タイマーをストップし、その時点での測定値をネットワーク情報としてもよい。
(D) 入力データ送信完了から画面更新データ受信完了に要する時間を、ネットワーク情報として用いる。図11(b)を用いて、本ケースを説明する。
 画面共有品質予測部2004は、入力データをサーバ装置1000に送信する際、送信する入力データにシーケンス番号を付加する。図11(b)では、クライアント装置2000は、まずシーケンス番号「5」の入力データを、サーバ装置1000に送信している。
 そして、画面共有品質予測部2004は、入力データを送信完了した時刻に、シーケンス番号に対応したタイマー(図示せず)をスタートする。それとともに、シーケンス番号を増加させる。図11(b)では、シーケンス番号「5」「6」の入力データを送信する毎に、対応するタイマーをスタートしている。
 また画面共有品質予測部2004は、入力データの送信に対してサーバ装置1000から返信される画面更新データを受信する際、画面更新データに付加されているシーケンス番号を確認する。画面共有品質予測部2004は、画面更新データを受信完了した時刻に、前述のシーケンス番号に対応したタイマーをストップする。図11(b)では、シーケンス番号「5」の画面更新データをサーバ装置1000から受信すると、クライアント装置2000は対応するタイマーをストップしている。
 ここで上記では、サーバ装置1000は、クライアント装置2000から受信した入力データに付加されるシーケンス番号のうち、最新のものを常に記憶している。そして、サーバ装置1000は、記憶したシーケンス番号を画面更新データに付加して送信することを仮定している。
 以上により、画面共有品質予測部2004は、シーケンス番号に対応したタイマーの値から、入力データ送信完了から画面更新データ受信完了に要する時間(図11(b)における「測定時間」)を測定する。画面共有品質予測部2004は、測定した、入力データ送信完了から画面更新データ受信完了に要する時間を、遅延値として使用する。
 ただし、入力データの送信は開始したが、対応する画面更新データの受信に時間を要し、タイマーの値が非常に大きくなる場合がある。このとき、画面更新データの受信が完了していなくても、タイマーをストップする。そして、その時点のタイマー値をネットワーク情報としてもよい。
 また、入力データや画面更新データに付加されるシーケンス番号は、入力データや画面更新データとは別のデータとして送信されてもよい。シーケンス番号を入力データに付加して送信する場合は、利用者操作に直接関係しないマウスイベントの一部としてシーケンス番号を入力データに含めてもよい。さらに、シーケンス番号を画面更新データに付加して送信する場合は、クライアント装置2000の描画範囲の外のディスプレイ描画情報の一部として、シーケンス番号を画面更新データに含めてもよい。
 入力データ送信完了から画面更新データ受信完了に要する時間を測定するタイミングは任意であり、入力データ送信完了のたび、常に測定を実行する必要は無い。例えば、入力データとして重要な、マウスのクリックの際にのみ、測定を実行することも可能である。
 画面転送システムにおいて、ある入力データがクライアント装置2000からサーバ装置1000に送信されると、多くの場合において、カーソルの再描画等の処理がサーバ装置1000で発生する。その結果、描画イベントが発生し、画面更新データがサーバ装置1000からクライアント装置2000へ送信される。従って、上述の(D)の方法を用いて測定した時間は、クライアント装置2000とサーバ装置1000との間のRTTに近い値になると考えられる。
 また、上述の(D)の方法は、クライアント装置2000とサーバ装置1000との間でRTT測定用の特別なパケットが発生しないため、ネットワーク上のトラフィック量の増加を引き起こさない。
 本実施形態によれば、ネットワーク品質が悪化して、クライアント装置における描画実行が遅延した場合、クライアント装置に表示されるカーソルの形状を、処理待ち中であることを示す「砂時計マーク」に変更する。これにより、画面転送システムの利用者に対し、ネットワークに起因する処理の遅延が発生していることを正しく通知することができる。その結果、利用者の誤操作を防ぎ、さらなるネットワークの混雑を回避することができる。ネットワークの混雑に起因するパケットの遅延や欠損を低減できるので、クライアント装置における出力応答を遅延や欠損なく画面表示することが可能になる。
 また、画面転送システムの利用者は、ネットワークに起因する処理の遅延が発生していることを正しく把握することができるので、利用者のストレスを軽減することができる。
 尚、本発明は上記実施形態をそのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
100・・・サーバ装置
101・・・描画命令生成部
102・・・シーケンス番号付加部
103・・・エンコード部
104・・・描画命令送信部
105・・・フレームバッファ
106・・・表示部
107・・・再構築部
108・・・画面共有品質予測部
109・・・履歴記憶部
110・・・履歴取得部
111・・・欠損通知受信部
200・・・クライアント装置
201・・・描画命令受信部
202・・・欠損検知部
203・・・デコード部
204・・・描画実行部
205・・・フレームバッファ
206・・・表示部
207・・・欠損通知送信部
300・・・ネットワーク

Claims (5)

  1.  クライアント装置からネットワークを介して入力データを受信し、前記入力データに対する応答画面の描画命令を前記ネットワークを介して前記クライアント装置に送信するサーバ装置であって、
     前記クライアント装置へ送信した前記描画命令を記憶する履歴記憶部と、
     前記クライアント装置から送信された前記描画命令に欠損が生じたことを通知する通知データを受信する受信部と、
     前記通知データに応じて前記履歴記憶部から抽出した前記描画命令を再送信することによって前記クライアント装置で描画の破綻が生じるか否かを予測する第1の予測部と、
     前記第1の予測部によって描画の破綻が生じると予測した場合に、前記履歴記憶部に記憶された描画命令と前記通知データとから描画の破綻が生じないように描画命令を再構築する再構築部と、
     前記再構築した描画命令を前記クライアント装置に送信する送信部と
    を備えることを特徴とするサーバ装置。
  2.  前記第1の予測部は、前記履歴記憶部に記憶された描画命令の送信履歴に基づき前記再送信しようとする前記描画命令により前記クライアント装置の描画が破綻するか否かを予測することを特徴とする請求項1に記載のサーバ装置。
  3. 請求項1に記載のサーバ装置と、クライアント装置とから構成される画面転送システムであって、
    前記クライアント装置は
     前記入力データを前記サーバ装置に送信する場合に、前記入力データによって前記ネットワークが混雑状態か否かを予測する第2の予測部と、
     前記第2の予測部によって混雑状態が生じると予測した場合に、前記入力データの前記サーバ装置への送信を遮断する遮断部と、
     前記第2の予測部によって混雑状態が生じると予測した場合に、前記サーバ装置から前記描画命令を受信することなく前記入力データに基づいて描画命令を構築する構築部と、
     構築された前記描画命令による応答画面を表示する表示部と、
    を備えることを特徴とする画面転送システム。
  4.  前記クライアント装置において、
     前記第2の予測部は、前記ネットワークの混雑状態を示す数値を測定する機能をさらに有し、
     前記第2の予測部が前記数値に基づき前記ネットワークが混雑状態であると予測した場合は、前記構築部は前記混雑状態を示す画面を表示させる描画命令を構築する
    ことを特徴とする請求項3に記載の画面転送システム。
  5.  前記数値は、前記サーバ装置と前記クライアント装置間のラウンドトリップタイム、パケット欠損率、受信遅延時間のいずれかであることを特徴とする請求項4に記載の画面転送システム。
PCT/JP2009/004922 2009-09-28 2009-09-28 サーバ装置、及び画面転送システム WO2011036733A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2009/004922 WO2011036733A1 (ja) 2009-09-28 2009-09-28 サーバ装置、及び画面転送システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2009/004922 WO2011036733A1 (ja) 2009-09-28 2009-09-28 サーバ装置、及び画面転送システム

Publications (1)

Publication Number Publication Date
WO2011036733A1 true WO2011036733A1 (ja) 2011-03-31

Family

ID=43795505

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2009/004922 WO2011036733A1 (ja) 2009-09-28 2009-09-28 サーバ装置、及び画面転送システム

Country Status (1)

Country Link
WO (1) WO2011036733A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014067311A (ja) * 2012-09-26 2014-04-17 Fujitsu Ltd システム、端末装置および画像取得方法
JP2014067312A (ja) * 2012-09-26 2014-04-17 Fujitsu Ltd システム、端末装置および画像処理方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002512393A (ja) * 1998-04-20 2002-04-23 サン・マイクロシステムズ・インコーポレーテッド エラー修正を提供するための方法及び機構
JP2002191038A (ja) * 2000-12-20 2002-07-05 Hitachi Ltd 動画像配信システム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002512393A (ja) * 1998-04-20 2002-04-23 サン・マイクロシステムズ・インコーポレーテッド エラー修正を提供するための方法及び機構
JP2002191038A (ja) * 2000-12-20 2002-07-05 Hitachi Ltd 動画像配信システム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014067311A (ja) * 2012-09-26 2014-04-17 Fujitsu Ltd システム、端末装置および画像取得方法
JP2014067312A (ja) * 2012-09-26 2014-04-17 Fujitsu Ltd システム、端末装置および画像処理方法

Similar Documents

Publication Publication Date Title
JP6158323B2 (ja) 仮想デスクトップインフラ(vdi)における性能向上
EP1206062A2 (en) Data communication system, data communication method, and recording medium with data communication program recorded thereon
EP2403249B1 (en) Transmission of image updates from a server to a thin client
EP2490406A1 (en) Image transmission from a server to a thin client
US10230563B2 (en) Methods and first network node for managing a stream control transmission protocol association
US9716907B2 (en) Updating thin-client display based on a thin-out rate
JP5664289B2 (ja) 情報処理装置、画像送信プログラムおよび画像表示方法
US9300818B2 (en) Information processing apparatus and method
US20160173387A1 (en) Network Traffic Accelerator
US20130223254A1 (en) Communication control device, communication control method, and computer-readable recording medium
US7764616B2 (en) Transmitter device for controlling data transmission
US9037749B2 (en) Information processing apparatus and image transmission method
WO2011036733A1 (ja) サーバ装置、及び画面転送システム
JP2012114493A (ja) サーバ装置及びプログラム
JP2018536181A (ja) ワイヤレス表示モードを切り替え、不安定状態にあるグラフィックス処理ユニットをリフレッシュすること
US10033489B1 (en) Managing communications based on network conditions
US8913070B2 (en) Server, screen transfer system, and screen transfer method
TWI538523B (zh) 影像日誌儲存系統及其記錄方法
WO2011036715A1 (ja) サーバ、システム
JP2005217827A (ja) 情報転送装置、情報転送方法及びプログラム
JP2010237816A (ja) サーバ装置、クライアント装置、クライアントサーバシステム、画像出力方法及びプログラム
JP4374013B2 (ja) 中継装置、並びに中継方法
WO2023100376A1 (ja) 通信システム、通信方法および通信プログラム
WO2016088244A1 (ja) サーバの画像配信方法
JP5646410B2 (ja) 情報処理装置およびプログラム

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 09849764

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 09849764

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP