# HG changeset patch # User riono # Date 1588574041 -32400 # Node ID 5bb2d3078c38f8e3a192dbadad7a1d6eab1a2b82 # Parent c52d91f27041363e2a21ed96ec99bab78009175d update diff -r c52d91f27041 -r 5bb2d3078c38 Paper/riono-sigos.pdf Binary file Paper/riono-sigos.pdf has changed diff -r c52d91f27041 -r 5bb2d3078c38 Paper/riono-sigos.tex --- a/Paper/riono-sigos.tex Fri May 01 22:23:46 2020 +0900 +++ b/Paper/riono-sigos.tex Mon May 04 15:34:01 2020 +0900 @@ -111,14 +111,26 @@ ZLREはZlibで圧縮されたデータとそのデータのバイト数がヘッダーとして付与され送信される。Zlibはjava.util.zip.deflaterとjava.util.zip.inflaterで圧縮と解凍が行える。しかしjava.util.zip.deflaterは解凍に必要な辞書を書き出す(flush)ことができない。従って、圧縮されたデータを途中から受け取ってもデータを正しく解凍することができない。 +そこでZRLEEは一度Root Nodeで受け取ったZRLEのデータをunzipし、データをupdate rectangleと呼ばれる画面ごとのデータに辞書を付与してzipし直すことで、始めからデータを読み込んでいなくても解凍をできるようになっている(図\ref{fig:ZRLEtoZRLEE})。 + \begin{figure}[htb] %PDF \begin{center} -\includegraphics[width=8cm]{fig/EncodeZRLE.pdf} -\caption{ZRLEでデータを途中から受け取った場合} -\label{fig:ZRLE} +\includegraphics[scale=0.5]{fig/EncodeZRLEtoZRLEE.pdf} +\caption{ZRLEEへ再圧縮されたデータを途中から受け取った場合} +\label{fig:ZRLEtoZRLEE} \end{center} \end{figure} +一度ZRLEEに変換してしまえば、子Nodeはそのデータをそのまま流すだけでよい。ただし、deflaterとinflaterでは前回までの通信で得た辞書をクリアしないといけないため、Root Node側とNode側では毎回新しく作る必要がある。辞書をクリアすることで短時間で解凍され画面描画されるという、適応圧縮を実現していることになり圧縮率は向上する。 + +\section{ShareScreen} +従来のVNCでは、配信者が交代するたびにVNCの再起動、サーバ・クライアント間の再接続を行う必要がある。TreeVNCでは配信者の切り替えのたびに生じる問題を解決している。 + +TreeVNCを立ち上げることでケーブルを使用せずに、各参加者の手元のPCに発表者の画面を共有することができる。画面の切り替えについてはユーザがVNCサーバへの再接続を行うことなく、ビューワー側のShere Screenボタンを押すことで配信者の切り替えが可能となっている。 + +TreeVNCのROot Nodeは配信者のVNCサーバと通信を行なっている。VNCサーバから画面データを受信し、そのデータを子Nodeへと送信している。配信者切り替え時にShare Screenを実行すると、Root Nodeに対しSERVER\_CHANGE\_REQUESTというメッセージが送信される。このメッセージにはShare Screenボタンを押したNodeの番号やディスプレイ情報が付与されている。メッセージを受け取ったRoot Nodeは配信を希望しているNodeのVNCサーバと通信を始める。 + + \section{Blockingの実装} \section{Multicast用のシステム構成}