Mercurial > hg > Papers > 2019 > riono-sigos
comparison Paper/riono-sigos.tex @ 15:095e808d1ee2
paper section2 wrote
author | e165729 <e165729@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 08 May 2019 03:14:43 +0900 |
parents | d958a06673f4 |
children | 86575cab4d17 |
comparison
equal
deleted
inserted
replaced
14:d958a06673f4 | 15:095e808d1ee2 |
---|---|
157 | 157 |
158 ZRLEはZlib\cite{}で圧縮されたデータとそのデータのバイト数がヘッダーとして送信される。Zlibはjava.util.zip.deflaterとjava.util.zip.inflaterで圧縮と解凍が行える。しかしjava.util.zip.deflaterはデコードに必要な辞書を書き出す(flush)ことが出来ない(図\ref{fig:ZRLE})。従って、圧縮されたデータを途中から受け取るとデータを正しく解凍することが出来ない。 | 158 ZRLEはZlib\cite{}で圧縮されたデータとそのデータのバイト数がヘッダーとして送信される。Zlibはjava.util.zip.deflaterとjava.util.zip.inflaterで圧縮と解凍が行える。しかしjava.util.zip.deflaterはデコードに必要な辞書を書き出す(flush)ことが出来ない(図\ref{fig:ZRLE})。従って、圧縮されたデータを途中から受け取るとデータを正しく解凍することが出来ない。 |
159 | 159 |
160 そこでZRLEEは一度Root Nodeで受け取ったZRLEのデータをunzipし、データをupdate rectangleと呼ばれる画面ごとのデータに辞書を付与してzipし直すことで初めからデータを読み込んでいなくても解凍できるようになった(図\ref{fig:ZRLEE})。一度ZRLEEに変換してしまえば子Nodeはそのデータを渡すだけで良い。ただしdeflaterとinflaterでは前回までの通信で得た辞書をクリアしなければならないため、Root NodeとNode側では毎回新しく作成する必要がある。 | 160 そこでZRLEEは一度Root Nodeで受け取ったZRLEのデータをunzipし、データをupdate rectangleと呼ばれる画面ごとのデータに辞書を付与してzipし直すことで初めからデータを読み込んでいなくても解凍できるようになった(図\ref{fig:ZRLEE})。一度ZRLEEに変換してしまえば子Nodeはそのデータを渡すだけで良い。ただしdeflaterとinflaterでは前回までの通信で得た辞書をクリアしなければならないため、Root NodeとNode側では毎回新しく作成する必要がある。 |
161 | 161 |
162 | |
163 \subsection{ShareScreen} | |
164 従来のVNCでは、配信者が切り替わるたびにVNCの再起動、サーバ、クライアント間の再接続を行う必要がある。TreeVNCは配信者の切り替えのた度に生じる問題を解決している。 | |
165 TreeVNCを立ち上げることで、ケーブルを使用する必要なしに、各参加者の手元のPCに発表者の画面を共有することができる。画面の切り替えについてはユーザがVNCサーバへの再接続を行うことなく、ビューワー側のShare Screenボタンを押すことで配信者の切り替えが可能になっている。 | |
166 | |
167 TreeVNCのRoot Nodeは配信者のVNCサーバと通信を行なっている。VNCサーバから画面データを受信し、そのデータを子Nodeへと送信している。配信者切り替え時にShare Screenを実行すると、Root Nodeに対し SERVER\_CHANGE\_REQUESTというメッセージが送信される。このメッセージにはShare Screenボタンを押したNodeの番号やディスプレイ情報が付加されている。メッセージを受け取ったRoot Nodeは配信を希望しているNodeのVNCサーバと通信を始める。 | |
168 | |
169 | |
170 \subsection{ネットワーク複数時の接続} | |
171 TreeVNCはRoot Nodeが複数のネットワークに接続している場合、図\ref{fig:multinetworktree}のようにネットワーク別に木構造を形成する。 | |
172 | |
173 \begin{figure}[htb] %PDF | |
174 \begin{center} | |
175 \includegraphics[scale=0.4]{../Image/MultiNetworkTree.pdf} | |
176 \caption{Multi Network Tree} | |
177 \label{fig:multinetworktree} | |
178 \end{center} | |
179 \end{figure} | |
180 | |
181 TreeVNCはRoot NodeがTreeManagerというオブジェクトを持っている。TreeManagerはTreeVNCの接続部分を管理しており、木構造を管理するnodeListを生成する。このnodeListを元に、新しいNodeの接続や、切断検出時の接続の切り替え等を行う。Tree ManagerはRoot Nodeの保持しているネットワーク毎に生成される。新しいNodeが接続してきた際、interfacesからNodeのネットワークと一致するTree Managerを取得し、Node接続の処理を任せる。 | |
182 | |
183 | |
184 | |
162 \section{Multicastの導入} | 185 \section{Multicastの導入} |
163 | 186 |
164 \section{Blokingの手法} | 187 \section{Blokingの手法} |
165 | 188 |
166 \section{まとめ} | 189 \section{まとめ} |