Mercurial > hg > Papers > 2015 > parusu-prosym
changeset 4:e1f5a313cadc
Update 11_10
author | Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 10 Nov 2015 17:56:31 +0900 |
parents | 74034b769a12 |
children | 80b8e777b07b |
files | paper/Makefile paper/dummy.tex paper/pic/directConnection.graffle paper/pic/directConnection.pdf paper/pic/directConnection.xbb paper/pic/test.xbb paper/prosym.bib paper/prosym.tex |
diffstat | 8 files changed, 240 insertions(+), 209 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/Makefile Tue Nov 10 03:31:16 2015 +0900 +++ b/paper/Makefile Tue Nov 10 17:56:31 2015 +0900 @@ -15,7 +15,7 @@ .tex.dvi: $(LATEX) $< - #$(BIBTEX) $(TARGET) + $(BIBTEX) $(TARGET) $(LATEX) $< $(LATEX) $<
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/dummy.tex Tue Nov 10 17:56:31 2015 +0900 @@ -0,0 +1,60 @@ +%%% jdummy.def +% +\DeclareRelationFont{JY1}{mc}{it}{}{OT1}{cmr}{it}{} +\DeclareRelationFont{JT1}{mc}{it}{}{OT1}{cmr}{it}{} +\DeclareFontShape{JY1}{mc}{m}{it}{<5> <6> <7> <8> <9> <10> sgen*min + <10.95><12><14.4><17.28><20.74><24.88> min10 + <-> min10}{} +\DeclareFontShape{JT1}{mc}{m}{it}{<5> <6> <7> <8> <9> <10> sgen*tmin + <10.95><12><14.4><17.28><20.74><24.88> tmin10 + <-> tmin10}{} +\DeclareRelationFont{JY1}{mc}{sl}{}{OT1}{cmr}{sl}{} +\DeclareRelationFont{JT1}{mc}{sl}{}{OT1}{cmr}{sl}{} +\DeclareFontShape{JY1}{mc}{m}{sl}{<5> <6> <7> <8> <9> <10> sgen*min + <10.95><12><14.4><17.28><20.74><24.88> min10 + <-> min10}{} +\DeclareFontShape{JT1}{mc}{m}{sl}{<5> <6> <7> <8> <9> <10> sgen*tmin + <10.95><12><14.4><17.28><20.74><24.88> tmin10 + <-> tmin10}{} +\DeclareRelationFont{JY1}{mc}{sc}{}{OT1}{cmr}{sc}{} +\DeclareRelationFont{JT1}{mc}{sc}{}{OT1}{cmr}{sc}{} +\DeclareFontShape{JY1}{mc}{m}{sc}{<5> <6> <7> <8> <9> <10> sgen*min + <10.95><12><14.4><17.28><20.74><24.88> min10 + <-> min10}{} +\DeclareFontShape{JT1}{mc}{m}{sc}{<5> <6> <7> <8> <9> <10> sgen*tmin + <10.95><12><14.4><17.28><20.74><24.88> tmin10 + <-> tmin10}{} +\DeclareRelationFont{JY1}{gt}{it}{}{OT1}{cmbx}{it}{} +\DeclareRelationFont{JT1}{gt}{it}{}{OT1}{cmbx}{it}{} +\DeclareFontShape{JY1}{mc}{bx}{it}{<5> <6> <7> <8> <9> <10> sgen*goth + <10.95><12><14.4><17.28><20.74><24.88> goth10 + <-> goth10}{} +\DeclareFontShape{JT1}{mc}{bx}{it}{<5> <6> <7> <8> <9> <10> sgen*tgoth + <10.95><12><14.4><17.28><20.74><24.88> tgoth10 + <-> tgoth10}{} +\DeclareRelationFont{JY1}{gt}{sl}{}{OT1}{cmbx}{sl}{} +\DeclareRelationFont{JT1}{gt}{sl}{}{OT1}{cmbx}{sl}{} +\DeclareFontShape{JY1}{mc}{bx}{sl}{<5> <6> <7> <8> <9> <10> sgen*goth + <10.95><12><14.4><17.28><20.74><24.88> goth10 + <-> goth10}{} +\DeclareFontShape{JT1}{mc}{bx}{sl}{<5> <6> <7> <8> <9> <10> sgen*tgoth + <10.95><12><14.4><17.28><20.74><24.88> tgoth10 + <-> tgoth10}{} +\DeclareRelationFont{JY1}{gt}{sc}{}{OT1}{cmbx}{sc}{} +\DeclareRelationFont{JT1}{gt}{sc}{}{OT1}{cmbx}{sc}{} +\DeclareFontShape{JY1}{mc}{bx}{sc}{<5> <6> <7> <8> <9> <10> sgen*goth + <10.95><12><14.4><17.28><20.74><24.88> goth10 + <-> goth10}{} +\DeclareFontShape{JT1}{mc}{bx}{sc}{<5> <6> <7> <8> <9> <10> sgen*tgoth + <10.95><12><14.4><17.28><20.74><24.88> tgoth10 + <-> tgoth10}{} +\DeclareRelationFont{JY1}{gt}{it}{}{OT1}{cmr}{it}{} +\DeclareRelationFont{JT1}{gt}{it}{}{OT1}{cmr}{it}{} +\DeclareFontShape{JY1}{gt}{m}{it}{<5> <6> <7> <8> <9> <10> sgen*goth + <10.95><12><14.4><17.28><20.74><24.88> goth10 + <-> goth10}{} +\DeclareFontShape{JT1}{gt}{m}{it}{<5> <6> <7> <8> <9> <10> sgen*tgoth + <10.95><12><14.4><17.28><20.74><24.88> tgoth10 + <-> tgoth10}{} +\endinput +%%%% end of jdummy.def
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/pic/directConnection.xbb Tue Nov 10 17:56:31 2015 +0900 @@ -0,0 +1,8 @@ +%%Title: directConnection.pdf +%%Creator: extractbb 20150315 +%%BoundingBox: 0 0 860 375 +%%HiResBoundingBox: 0.000000 0.000000 860.000000 375.000000 +%%PDFVersion: 1.4 +%%Pages: 1 +%%CreationDate: Tue Nov 10 15:59:04 2015 +
--- a/paper/pic/test.xbb Tue Nov 10 03:31:16 2015 +0900 +++ b/paper/pic/test.xbb Tue Nov 10 17:56:31 2015 +0900 @@ -4,5 +4,5 @@ %%HiResBoundingBox: 0.000000 0.000000 595.000000 842.000000 %%PDFVersion: 1.3 %%Pages: 1 -%%CreationDate: Tue Nov 10 00:36:38 2015 +%%CreationDate: Tue Nov 10 17:55:40 2015
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/prosym.bib Tue Nov 10 17:56:31 2015 +0900 @@ -0,0 +1,41 @@ +@Misc{rfbprotocol, + author = "{Tristan Richardson}", + title = "The RFB Protocol", + howpublished = "\url{http://www.realvnc.com/docs/rfbproto.pdf}" +} + +@Misc{tightvnc, + title = "{TightVNC Software}", + howpublished = "\url{http://www.tightvnc.com}" +} + +@article{oc:thesis, + author = "{Miwa OSHIRO and Shinji KONO}", + title = "授業やゼミ向けの画面配信システムTreeVNCの拡張機能", + journal = "琉球大学工学部情報工学科平成26年度学位論文(学士) ", + year = 2014 +} + +@article{taninari:master, + author = "{Yu TANINARI and Shinji KONO}", + title = "授業やゼミ向けの画面共有システム treevnc の設計と実装 a screen sharing system using tree structure for seminar and classwork.", + journal = "琉球大学工学部情報工学科平成25年度学位論文(修士) ", + year = 2013 +} + + +@article{taninari:2012a, + author = "{Yu TANINARI and Nobuyasu OSHIRO and Shinji KONO}", + title = "VNCを用いた授業用画面共有システムの設計・開発", + journal = "情報処理学会", + month = "may", + year = 2012 +} + +@article{taninari:2011a, + author = "{Yu TANINARI and Nobuyasu OSHIRO and Shinji KONO}", + title = "JAVAによるVNCを用いた授業用画面共有システムの設計と開発", + journal = "日本ソフトウェア科学会", + month = "sep", + year = 2011 +}
--- a/paper/prosym.tex Tue Nov 10 03:31:16 2015 +0900 +++ b/paper/prosym.tex Tue Nov 10 17:56:31 2015 +0900 @@ -1,31 +1,30 @@ % withpage: ページ番号をつける (著者確認用) -\documentclass{ipsjprosym} -\usepackage{listings, jlisting} +\documentclass[techrep, ,dvipdfmx]{ipsjprosym} \usepackage[dvipdfmx]{graphicx} -\usepackage{latexsym} - -\lstset{ - language={Java}, - tabsize=2, - frame=single, - basicstyle={\ttfamily\footnotesize},% - identifierstyle={\footnotesize},% - commentstyle={\footnotesize\itshape},% - keywordstyle={\footnotesize\bfseries},% - ndkeywordstyle={\footnotesize},% - stringstyle={\footnotesize\ttfamily}, - breaklines=true, - captionpos=b, +\usepackage{url} +\usepackage{listings, jlisting} +\lstset{% + language={java},%使用言語 + basicstyle={\small},%書体 + commentstyle={\small\itshape},%コメントの書体 + keywordstyle={\small\bfseries},%キーワードの書体 + %identifierstyle={\small},% + %ndkeywordstyle={\small},% + stringstyle={\small},%文字列の書体 + frame={trlb},%外枠 + breaklines=true,%改行 columns=[l]{fullflexible},% xrightmargin=0zw,% - xleftmargin=1zw,% - aboveskip=1zw, - numberstyle={\scriptsize},% + xleftmargin=3zw,% + numbers=left,%行番号の表示 + numberstyle={\scriptsize},%行番号の書体 + numbersep=1zw,% stepnumber=1, - numbersep=1zw,% - lineskip=-0.5ex% + lineskip=-0.5ex,% + captionpos=b,%キャプションの位置 + moredelim=**[s][\color{red}]{\"compressed}{\"}, } - +\renewcommand{\lstlistingname}{Code} \input{dummy.tex} %% Font \begin{document} @@ -84,15 +83,11 @@ また、RFBプロトコルを用いているので、ケーブルの差し替えなしに 共有している画面の切り替えが可能になっている。 -今研究では、TreeVNCのリファクタリングをすると共に、 -port番号の割り当てや、プロトコルの見直しを行った。 -これにより、 -マルチディスプレイへの対応や、 -TreeVNCを遠隔地から利用することを可能にした。 +今研究では、 マルチディスプレイへの対応や、 TreeVNCを遠隔地から利用することを可能にした。 また、マルチスクリーンを使用する際のスクリーンの選択や サイズの自動変更の問題を解決した。 -また、複数のネットワークインターフェスに対応し、 -ルータ越えを可能にすることができた。 +また、複数のネットワークに対応し、 +WANでの接続を可能とした。 \section{画面配信システムTreeVNC} \subsection*{[RFBプロトコル]} @@ -124,7 +119,7 @@ 従来の VNC ではサーバ側で$N$回する必要があるが、TreeVNCでは各 node が2回ずつコピーするだけで済む。 TreeVNC は、root への負荷を各 node に分散することにより、処理性能が向上している。 -\begin{figure}[h] +\begin{figure}[ht] \begin{center} \includegraphics[width=70mm]{./pic/TreeVNC.pdf} \end{center} @@ -173,54 +168,50 @@ \subsection*{[node 間で行われるメッセージ通信]} RFBプロトコルで提供されているメッセージに加え、 TreeVNC 独自のメッセージを使用している。 -%TreeVNC で使用されるメッセージの一覧を表\ref{tb:message}に示す。 -% -% -%\begin{table*}[htb] -% \scriptsize -% \begin{tabular}{|l|l|l|} \hline -% 通信経路 & message & 説明 \\ \hline \hline -% & FIND\_ROOT & TreeVNC接続時にrootを探す。 \\ \cline{2-3} -% send direct message & WHERE\_TO\_CONNECT & 接続先をrootに聞く。 \\ \cline{2-3} -% (child to root) & LOST\_CHILD & 子nodeの切断をrootに知らせる。 \\ \hline \hline -% -% & FIND\_ROOT\_REPLY & FIND\_ROOTへの返信。 \\ \cline{2-3} -% send direct message & CONNECT\_TO\_AS\_LEADER & 左子nodeとして接続する。接続先のnodeが含まれている。 \\ \cline{2-3} -% (root to child) & CONNECT & 右子nodeとして接続する。接続先のnodeが含まれている。 \\ \hline \hline -% -% message down tree & FRAMEBUFFER\_UPDATE & 画像データ。EncodingTypeを持っている。\\ \cline{2-3} -% (root to child) & CHECK\_DELAY & 通信の遅延を測定する。 \\ \hline \hline -% -% message up tree & CHECK\_DELAY\_REPLY & CHECK\_DELAYへの返信。 \\ \cline{2-3} -% (child to root) & SERVER\_CHANGE\_REQUEST & 画面切り替え要求。 \\ \hline \hline -% -% & FRAMEBUFFER\_UPDATE\_REPLY & 画像データの要求。 \\ \cline{2-3} -% send message & SET\_PIXEL\_FORMAT & pixel値の設定。 \\ \cline{2-3} -% (root to VNCServer) & SET\_ENCODINGS & pixelデータのencodeTypeの設定。 \\ \cline{2-3} -% & KEY\_EVENT & キーボードからのイベント。 \\ \cline{2-3} -% & POINTER\_EVENT & ポインタからのイベント。 \\ \cline{2-3} -% & CLIENT\_CUT\_TEXT & テキストのカットバッファを持った際のmessage。 \\ \hline \hline -% -% & FRAMEBUFFER\_UPDATE & 画像データ。EncodingTypeを持っている。 \\ \cline{2-3} -% send message & SET\_COLOR\_MAP\_ENTRIES & 指定されているpixel値にマップするRGB値。 \\ \cline{2-3} -% (VNCServer to root) & BELL & ビープ音を鳴らす。 \\ \cline{2-3} -% & SERVER\_CUT\_TEXT & サーバがテキストのカットバッファを持った際のmessage。 \\ \hline -% \end{tabular} -% \caption{通信経路とmessage一覧} -% \label{tb:message} -%\end{table*} +TreeVNC で使用されるメッセージの一覧を表\ref{tb:message}に示す。 -図\ref{fig:message}は、 +\begin{table}[h!] + \large + \scalebox{0.4} { + \begin{tabular}{|l|l|l|} \hline + 通信経路 & message & 説明 \\ \hline \hline + & FIND\_ROOT & TreeVNC接続時にrootを探す。 \\ \cline{2-3} + send direct message & WHERE\_TO\_CONNECT & 接続先をrootに聞く。 \\ \cline{2-3} + (child to root) & LOST\_CHILD & 子nodeの切断をrootに知らせる。 \\ \hline \hline + + & FIND\_ROOT\_REPLY & FIND\_ROOTへの返信。 \\ \cline{2-3} + send direct message & CONNECT\_TO\_AS\_LEADER & 左子nodeとして接続する。接続先のnodeが含まれている。 \\ \cline{2-3} + (root to child) & CONNECT & 右子nodeとして接続する。接続先のnodeが含まれている。 \\ \hline \hline + + message down tree & FRAMEBUFFER\_UPDATE & 画像データ。EncodingTypeを持っている。\\ \cline{2-3} + (root to child) & CHECK\_DELAY & 通信の遅延を測定する。 \\ \hline \hline + + message up tree & CHECK\_DELAY\_REPLY & CHECK\_DELAYへの返信。 \\ \cline{2-3} + (child to root) & SERVER\_CHANGE\_REQUEST & 画面切り替え要求。 \\ \hline \hline + + & FRAMEBUFFER\_UPDATE\_REPLY & 画像データの要求。 \\ \cline{2-3} + send message & SET\_PIXEL\_FORMAT & pixel値の設定。 \\ \cline{2-3} + (root to VNCServer) & SET\_ENCODINGS & pixelデータのencodeTypeの設定。 \\ \cline{2-3} + & KEY\_EVENT & キーボードからのイベント。 \\ \cline{2-3} + & POINTER\_EVENT & ポインタからのイベント。 \\ \cline{2-3} + & CLIENT\_CUT\_TEXT & テキストのカットバッファを持った際のmessage。 \\ \hline \hline + + & FRAMEBUFFER\_UPDATE & 画像データ。EncodingTypeを持っている。 \\ \cline{2-3} + send message & SET\_COLOR\_MAP\_ENTRIES & 指定されているpixel値にマップするRGB値。 \\ \cline{2-3} + (VNCServer to root) & BELL & ビープ音を鳴らす。 \\ \cline{2-3} + & SERVER\_CUT\_TEXT & サーバがテキストのカットバッファを持った際のmessage。 \\ \hline + \end{tabular} + } + \caption{通信経路とメッセージ一覧} + \label{tb:message} +\end{table} + + +図\ref{fig:message}は TreeVNC で node が root に接続し、画像データを受信するまでのメッセージ通信の様子である。 -\begin{figure}[h] - \begin{center} - \includegraphics[width=70mm]{./pic/message.pdf} - \end{center} - \caption{node 間で行われるメッセージ通信} - \label{fig:message} -\end{figure} +手順として \begin{itemize} \item nodeはMulticast通信でrootに対してFIND\_ROOTを送信する(1:findRoot()) @@ -232,6 +223,17 @@ \item root・node間の接続が確立後、rootからnodeに対して定期的に画像データFRAME\_BUFFER\_UPDATEを送信する(5:framebufferUpdate()) \end{itemize} +を行っている。 + +\begin{figure}[ht] + \begin{center} + \includegraphics[width=65mm]{./pic/message.pdf} + \end{center} + \caption{node 間で行われるメッセージ通信} + \label{fig:message} +\end{figure} + + \subsection*{[配信画面切り替え]} @@ -308,25 +310,9 @@ 高画質優先の QUALITY モードと描画速度優先の SPEED モードがある。 今まで TreeVNC は QUALITY モードで使用していた。 -今回、どちらのモードを使用するかをビューワから変更出来るようにした。 +今回、どちらのモードを使用するかを Viewer から変更出来るようにした。 これにより、描画処理の遅延を解決することができた。 -\section{表示画面サイズ調整機能} - -配信側PCによって、配信される画面サイズが変わる。 -配信側とクライアントで画面サイズに差がある場合、 -画面に入りきらない、或いは表示画面が小さすぎる等の問題が生じる。 - -ユーザ毎に適切な画面サイズがあり、 -簡単に表示画面を適切な大きさに変更できるようにしたい。 - -今回、ビューワに HD ボタンと fit screen ボタンを追加した。 -HD ボタンは、画面サイズを 1920x1080 サイズに拡大・縮小し、 -fit screen ボタンは、クライアントの画面サイズに合わせてフルサイズで拡大・縮小する。 - -更に、rootとして起動し、viewer も表示される -d オプションを使用した場合は、 -表示される画面を常に画面にフィットする様にした。 - \section{マルチディスプレイ対応} 画面配信側のPCがマルチディスプレイの場合、 VNCServer からは複数の画面全体の画像データが送信されてしまう。 @@ -334,19 +320,16 @@ 授業やゼミ等でTreeVNCを使用する場合、複数画面の表示は必要ない。 そこで、画面を共有する際、ディスプレイを選択させ、画面共有を行う機能を追加した。 -マルチディスプレイを共有する際の処理を図\ref{fig:multidisplay} に示す。 - ディスプレイの情報は個々のクライアントでしか取得ができない。 なので、配信側は画面の切替を行う際に、ディスプレイを選択し、そのディスプレイの左上と右下の座標を取得する。 -その座標を root への画面切り替えを要求する SERVER\_CHANGE\_REQUEST message に付加させる。 - -root は 配信側の VNCServer に画像データを要求する FRAMEBUFFER\_UPDATE\_REPLY message に送信された座標を付加する。 - -VNCServer は要求された座標内の画像データを FRAMEBUFFER\_UPDATE message で root に送信する。 - +その座標を root への画面切り替えを要求する SERVER\_CHANGE\_REQUEST message に付加させる。 +root は 配信側の VNCServer に画像データを要求する FRAMEBUFFER\_UPDATE\_REPLY message に送信された座標を付加する。 +VNCServer は要求された座標内の画像データを FRAMEBUFFER\_UPDATE message で root に送信する。 これにより、一画面のみの表示が可能となる。 -\begin{figure}[h] +図\ref{fig:multidisplay} は Display1 のみを画面共有する例を示している。 + +\begin{figure}[ht] \begin{center} \includegraphics[width=70mm]{./pic/shareScreenToMultiDisplay.pdf} \end{center} @@ -355,7 +338,6 @@ \end{figure} - \section{無線LANへの対応} 授業でTreeVNCを使用する場合、 有線を使用するか否かは学生によって違う。 @@ -368,7 +350,7 @@ 図\ref{fig:multinetworktree}の様に、ネットワークインターフェース別に 木構造を形成するように設計した。 -\begin{figure}[h] +\begin{figure}[ht] \begin{center} \includegraphics[width=70mm]{./pic/MultiNetworkTree.pdf} \end{center} @@ -385,17 +367,17 @@ TreeManager を生成する様に変更した。 ソースコード\ref{createtreemanager}に、nodeList を生成する部分を示す。 -\newpage - -\lstinputlisting[breaklines=true,caption=TreeManager の生成,label=createtreemanager]{source/GetNetworkInterfaces.java} +\begin{table}[htb] + \lstinputlisting[label=createtreemanager, caption=TreeManager の生成]{source/GetNetworkInterfaces.java} +\end{table} \begin{itemize} - \item for 文を使用し root が所持しているネットワークインタフェースを取得する(2行目) - \item その中から、起動しており Multicast に対応しており、また、ループバックインタフェースでないネットワークインタフェースを取得する(4行目) - \item 取得してきたネットワークインタフェースの、ネットマスク、ホストネームを取得する(6,7行目) - \item TreeManager を生成する(8行目) - \item TreeManager にネットマスクとネットアドレスを追加する(14行目) - \item HashMap である interfaces に ネットワークインタフェースと対応する TreeManager を追加する(15行目) + \item for 文を使用し root が所持しているネットワークインタフェースを取得する(2行目) + \item その中から、起動しており Multicast に対応しており、また、ループバックインタフェースでないネットワークインタフェースを取得する(4行目) + \item 取得してきたネットワークインタフェースの、ネットマスク、ホストネームを取得する(6,7行目) + \item TreeManager を生成する(8行目) + \item TreeManager にネットマスクとネットアドレスを追加する(14行目) + \item HashMap である interfaces に ネットワークインタフェースと対応する TreeManager を追加する(15行目) \end{itemize} 新しい node が接続してきた際、 @@ -405,94 +387,32 @@ こうすることによって、TreeVNC を複数のネットワークインターフェース別に 木構造を構成することができる。 + \section{WANへの対応} 遠隔地からでもゼミや授業に参加できるよう、 -異なるネットワークインタフェースから TreeVNC への接続を可能にした。 +別ネットワークから TreeVNC への接続を可能にした。 + +図\ref{fig:directConnection} に別ネットワークからの接続を示す。 +別ネットワークからTreeVNCに参加する際、 直接配信側のネットワークの root に接続を行う。 +この接続を Direct Connection と呼ぶ。 + +Direct Connection した node はそのネットワークの root になり、node はそのネットワークの root に接続し、木を生成する。 -遠隔地からの接続を実現した TreeVNC を図\ref{fig:remotetreevnc}に示す。 -図\ref{fig:remotetreevnc}では、 -ネットワーク A で立ち上げた TreeVNC に対し、 -遠隔地のネットワーク B, C, D から接続している状態である。 -図の様に、各ネットワーク毎に TreeManager を持つ root node が存在する。 -TreeManager を持つ node は、そのネットワーク上での接続の木構造を管理する root となる。 -遠隔地ネットワークから直接 TreeVNC に接続した node は root となる。 +配信側の root は Direct Connection で接続された node に対して Framebuffer Update で 画像データを別ネットワークの node に送信する。 +Framebuffer Update が送信された node はそのネットワークの root なので、子 node に対して Framebuffer Update を送信する。 + +これにより、別ネットワークでの画面共有が可能となる。 -\begin{figure}[h] +\begin{figure}[ht] \begin{center} - \includegraphics[width=70mm]{./pic/remoteTreeVnc.pdf} + \includegraphics[width=80mm]{./pic/directConnection.pdf} + \caption{遠隔地 node からの接続} + \label{fig:directConnection} \end{center} - \caption{Remote Network Tree} - \label{fig:remotetreevnc} \end{figure} - -以下に、遠隔地からの接続の手順を記述する。 - -\begin{itemize} - \item 遠隔地 node から接続したい root に対して接続を要求する WHERE\_TO\_CONNECT message を送信する(図\ref{fig:remotevncconnect}中, 1:) - \item root は、遠隔地 node に対して接続先を含む CONNECT\_TO message を送信する(図\ref{fig:remotevncconnect}中, 2:) - \item 遠隔地 node は指定された接続先に対して接続しに行く(図\ref{fig:remotevncconnect}中, 3:) -\end{itemize} - -\begin{figure}[h] - \begin{center} - \includegraphics[width=70mm]{./pic/remoteVncConnect.pdf} - \end{center} - \caption{遠隔地 node からの接続} - \label{fig:remotevncconnect} -\end{figure} - -ネットワーク毎に TreeVNC の木構造は管理される。 -図\ref{fig:remotenetworktree1}の TreeVNC の木構造はバイナリツリーを形成している。 -しかし、遠隔地 node が接続している node には合計3つ node が接続している。 -遠隔地 node は、root の管理する nodeList に追加されない。 -これは、node の接続・切断・切り替えに遠隔地 node を関与させないためである。 - -ネットワーク毎に root が存在する。 -root は同じネットワーク上の新しい node からの -接続を受け付ける(図\ref{fig:remotenetworktree1}中, 1,2,1',2':)。 - -\begin{figure}[h] - \begin{center} - \includegraphics[width=70mm]{./pic/remotenetwork.pdf} - \end{center} - \caption{Remote Network Tree} - \label{fig:remotenetworktree1} -\end{figure} - - -遠隔地 node からでも、画面を配信できるようにする。 -遠隔地 node から画面配信を行う場合の画面の切り替えを図\ref{fig:remotenetworktree2}、図\ref{fig:remotenetworktree5}に示す。 -以下に、画面切り替えの説明を記述する。 - -\begin{itemize} - \item 遠隔地 node が親 node へと SERVER\_CHANGE\_REQUEST を送信する(図\ref{fig:remotenetworktree2}中, 1:) - \item SERVER\_CHANGE\_REQUEST には、id が付いており、遠隔地 node からであれば -1 が付加されている - \item SERVER\_CHANGE\_REQUEST は root へと送信される(図\ref{fig:remotenetworktree2}中, 2:) - \item root は SERVER\_CHANGE\_REQUEST の id を確認し、id = -1 の場合、遠隔地 root に対して WHERE\_TO\_CONNECT を送信する(図\ref{fig:remotenetworktree2}中, 3:) - \item 遠隔地 root は WHERE\_TO\_CONNECT の返信として、接続先を含む CONNECT\_TO を送信する(図\ref{fig:remotenetworktree5}中, 4:) - \item root は指定された接続先へと接続しに行く(図\ref{fig:remotenetworktree5}中, 5:) -\end{itemize} - -\begin{figure}[h] - \begin{center} - \includegraphics[width=70mm]{./pic/remotenetwork2.pdf} - \end{center} - \caption{Remote Network Tree} - \label{fig:remotenetworktree2} -\end{figure} - -\begin{figure}[h] - \begin{center} - \includegraphics[width=70mm]{./pic/remotenetwork5.pdf} - \end{center} - \caption{Remote Network Tree} - \label{fig:remotenetworktree5} -\end{figure} - \section{評価} - \subsection*{[木の深さによるメッセージ伝達の遅延]} VNCServer から受信する画像データ、 TreeVNC で扱われるメッセージ通信は構成された木を伝って伝達される。 @@ -510,10 +430,7 @@ CHECK\_DELAY は root から node の末端まで伝達するメッセージ(図\ref{fig:checkdelay}, 左)、 CHECK\_DELAY\_REPLY は各 node から root まで伝達するメッセージ(図\ref{fig:checkdelay}, 右)である。 -% heart beat 代わりにも使える等の違ったメリットも書く? -% デバッグに使用できたとかって - -\begin{figure}[h] +\begin{figure}[ht] \begin{center} \includegraphics[width=70mm]{./pic/checkDelay.pdf} \end{center} @@ -539,11 +456,12 @@ CHECK\_DELAY を送信した時間と、 CHECK\_DELAY\_REPLY を受信した時間の半分であるといえる。 -% あとでコメントアウトはずす -\begin{lstlisting}[caption=遅延時間の計算方法,label=calc] +\begin{table}[htb] +\begin{lstlisting}[label=calc, caption=遅延時間の計算方法] Long delay = System.currentTimeMillis() - time; double halfDelay = (double) delay / 2; \end{lstlisting} +\end{table} \subsection*{[depth毎の遅延結果]} @@ -559,28 +477,32 @@ 木の段数毎に、メッセージ伝達速度の差が生じている。 深い段数の node ほど、メッセージ伝達速度が落ちている。 - \begin{figure}[h] \begin{center} \includegraphics[width=70mm]{./pic/test.pdf} \end{center} - \caption{step1} + \caption{遅延の分布} \label{fig:test} \end{figure} \section{まとめ} +本研究では画面配信システムTreeVNCをマルチディスプレイ、WAN に対応させた。 -\begin{acknowledgment} - 謝辞が必要であれば,ここに書く. -\end{acknowledgment} +マルチディスプレイに対応したことで、 配信者が配信したいディスプレイを選択し、画面配信することが可能となった。 + +WANに対応することで別ネットワークにいるユーザーが TreeVNC に参加することが可能となった。 + +今後の課題として、画面切り替えの安定化、 ユーザビリティの向上、 共有機能の追加が上げられる。 -% BibTeX を使用する場合 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% \bibliographystyle{ipsjsort} -% \bibliography{ref} +現在のTreeVNCでは、share button を押すと、その時配信されている画面から、自動的に画面が切り替わってしまうという問題がある。 +それを防ぐために share button が押されるとその時の配信者に切り替え確認を行う処理を追加する。 -% BibTeX を使用しない場合 -\begin{thebibliography}{9} - \bibitem{latex} 奥村晴彦, 黒木裕介: \textbf{LaTeX2e美文書作成入門}. 技術評論社, 2013. -\end{thebibliography} +また、今回追加した Direct Connection などの一部の機能はコマンドラインオプションで指定する必要があるため、一般ユーザーでは操作するのが困難である。 +そこで、 今までコマンドラインオプションで指定していた機能を Viewer で操作するように変更を行う。 + +共有機能の追加としては、音声、質問・意見 等が挙げられる。 +\nocite{*} +\bibliographystyle{ipsjunsrt} +\bibliography{prosym} \end{document}