annotate paper/prosym.tex @ 2:d964ad17d606

Add oc-thesis
author Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
date Tue, 10 Nov 2015 02:10:48 +0900
parents 10e5ea7ae31e
children 74034b769a12
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
10e5ea7ae31e Fix Encoding
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
1 % withpage: ページ番号をつける (著者確認用)
0
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 \documentclass{ipsjprosym}
2
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
3 \usepackage{listings, jlisting}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
4 \usepackage[dvipdfmx]{graphicx}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
5 \usepackage{latexsym}
0
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6
2
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
7 \lstset{
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
8 language={Java},
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
9 tabsize=2,
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
10 frame=single,
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
11 basicstyle={\ttfamily\footnotesize},%
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
12 identifierstyle={\footnotesize},%
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
13 commentstyle={\footnotesize\itshape},%
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
14 keywordstyle={\footnotesize\bfseries},%
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
15 ndkeywordstyle={\footnotesize},%
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
16 stringstyle={\footnotesize\ttfamily},
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
17 breaklines=true,
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
18 captionpos=b,
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
19 columns=[l]{fullflexible},%
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
20 xrightmargin=0zw,%
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
21 xleftmargin=1zw,%
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
22 aboveskip=1zw,
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
23 numberstyle={\scriptsize},%
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
24 stepnumber=1,
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
25 numbersep=1zw,%
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
26 lineskip=-0.5ex%
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
27 }
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
28
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
29 \input{dummy.tex} %% Font
0
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 \begin{document}
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32
2
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
33 % ユーザー定義したマクロなど
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
34 \makeatletter
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
35 \let\@ARRAY\@array \def\@array{\def\<{\inhibitglue}\@ARRAY}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
36 \def\<{\(\langle\)}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
37 \def\>{\(\rangle\)}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
38 %\def\|{\verb|}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
39 \def\Underline{\setbox0\hbox\bgroup\let\\\endUnderline}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
40 \def\endUnderline{\vphantom{y}\egroup\smash{\underline{\box0}}\\}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
41 \def\LATEX{\iLATEX\Large}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
42 \def\LATEx{\iLATEX\normalsize}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
43 \def\LATex{\iLATEX\small}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
44 \def\iLATEX#1{L\kern-.36em\raise.3ex\hbox{#1\bf A}\kern-.15em
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
45 \ T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
46 \def\LATEXe{\ifx\LaTeXe\undefined \LaTeX 2e\else\LaTeXe\fi}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
47 \def\LATExe{\ifx\LaTeXe\undefined \iLATEX\scriptsize 2e\else\LaTeXe\fi}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
48 \def\Quote{\list{}{}\item[]}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
49 \let\endQuote\endlist
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
50 \def\TT{\if@LaTeX@e\tt\fi}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
51 \def\CS#1{\if@LaTeX@e\tt\expandafter\string\csname#1\endcsname\else
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
52 $\backslash$#1\fi}
0
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53
2
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
54 % Title, Author %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
55 \title{有線上のPC画面配信システムTreeVNCの改良}
0
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56
2
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
57 \affiliate{IE}{琉球大学工学部情報工学科}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
58
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
59 \author{伊波 立樹}{Tatsuki IHA}{IE}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
60 \author{河野 真治}{Shinji KONO}{IE}
0
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 \begin{abstract}
2
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
63 ゼミや授業等で、それぞれがPC端末を持っている場合では、PCの機能を活かしたコミュニケーションが可能である。教員が操作する画面をそのまま学生に配信したり, ゼミなどで、発表する学生の画面を切り替えたりすることを可能にしたい。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
64 TreeVNCは参加したクライアントをバイナリツリー状に接続し、配信コストを分散させる仕組みを取っている。そのため,多人数が参加しても処理性能が下がらない。また、ツリーのRootが見ているVNCサーバーを変更することで、ケーブルの差し替えなしに画面の切替が可能となる。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
65 今研究ではTreeVNCの改良として、WANへの対応、 マルチディスプレイへの対応を行う。
0
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 \end{abstract}
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 \begin{jkeyword}
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 \end{jkeyword}
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 \maketitle
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 % Body %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
74 \section{研究背景と目的}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
75 ゼミや授業等で、それぞれがPC端末を持っている場合では、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
76 PCの機能を活かしたコミュニケーションが可能である。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
77 教員が操作する画面をそのまま学生に配信したり、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
78 ゼミなどで、発表する学生の画面を切り替えたりすることを可能にしたい。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
79
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
80 TreeVNC画面配信システムは、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
81 参加したクライアントをバイナリツリー状に接続し、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
82 配信コストをクライアントにバランスさせる仕組みになっている。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
83 なので、多人数が参加しても処理性能が下がらない。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
84 また、RFBプロトコルを用いているので、ケーブルの差し替えなしに
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
85 共有している画面の切り替えが可能になっている。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
86
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
87 今研究では、TreeVNCのリファクタリングをすると共に、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
88 port番号の割り当てや、プロトコルの見直しを行った。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
89 これにより、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
90 マルチディスプレイへの対応や、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
91 TreeVNCを遠隔地から利用することを可能にした。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
92 また、マルチスクリーンを使用する際のスクリーンの選択や
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
93 サイズの自動変更の問題を解決した。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
94 また、複数のネットワークインターフェスに対応し、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
95 ルータ越えを可能にすることができた。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
96
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
97 \section{画面配信システムTreeVNC}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
98 \subsection*{[RFBプロトコル]}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
99 RFB(remote frame buffer)プロトコル\cite{rfbProtocol}とは、自身の画面を送信し、ネットワーク越しに他者の画面に表示するプロトコルである。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
100 ユーザが居る側をRFBクライアント側と呼び、Framebufferへの更新が行われる側はRFBサーバと呼ぶ。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
101 Framebufferとは、メモリ上に置かれた画像データのことである。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
102 RFBプロトコルでは、最初にプロトコルバージョンの確認や認証が行われる。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
103 その後、クライアントに向けてFramebufferの大きさやデスクトップに付けられた名前などが含まれている初期メッセージが送信される。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
104 RFBサーバ側はFramebufferの更新が行われるたびに、RFBクライアントに対してFramebufferの変更部分だけを送信する。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
105 更にRFBクライアントのFramebufferUpdateRequestが来るとそれに答え返信する。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
106 RFBプロトコルは、描画データに使われるエンコードが多数用意されており、また独自のエンコードを実装することもできるプロトコルである。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
107
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
108 \subsection*{[TightVNC]}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
109 TightVNC(Tight Virtual Network Computing)\cite{tightvnc}はJavaを用いて作成されたRFBプロトコルのクライアントである。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
110 本研究で作成したTreeVNCはTightVNCを元に作成されている。
0
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
111
2
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
112 \subsection*{[多人数で VNC を使用する時の問題点]}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
113 多人数で従来の VNC を使用する際、1つのコンピュータに多人数が同時につながり、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
114 処理が集中してしまい、性能が大幅に落ちてしまうという問題が生じる。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
115
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
116 ゼミ等の画面配信者が頻繁に切り替わる場合、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
117 配信者が替わる度にアプリケーションを終了し、接続をし直さないといけないという問題がある。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
118
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
119 \subsection*{[TreeVNC の構造]}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
120 多人数で VNC を用いるために、クライアントの接続がサーバに一極集中してしまう問題を解決する。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
121 そのために、 TreeVNC はサーバへ接続しに来たクライアントをバイナリツリー状に接続する(図\ref{fig:tree})。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
122 バイナリツリーなら、各nodeに最大2台分のクライアントしか接続されない。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
123 $N$台のクライアントが接続しに来た場合、画面配信の画像データをコピーする回数は、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
124 従来の VNC ではサーバ側で$N$回する必要があるが、TreeVNCでは各 node が2回ずつコピーするだけで済む。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
125 TreeVNC は、root への負荷を各 node に分散することにより、処理性能が向上している。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
126
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
127 \begin{figure}[h]
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
128 \begin{center}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
129 \includegraphics[width=70mm]{./pic/TreeVNC.pdf}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
130 \end{center}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
131 \caption{構成される木構造}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
132 \label{fig:tree}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
133 \end{figure}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
134
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
135 \subsection*{[Multicast や Broadcast を用いたVNC]}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
136 Multicast とは、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
137 同一ネットワーク内でマルチキャストアドレスを持っている端末に対してデータを送信することである。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
138 Broadcast とは、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
139 同一ネットワーク上の全ての端末に対してデータを送信することである。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
140 どちらの通信方法も、root からのデータ送信は1回でよく、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
141 1度データの送信を行うとデータの複製はルータが行う。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
142
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
143 VNC を Multicast や Broadcast の通信方法を用いて実装すると、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
144 画像データの送信が1度で済むため、負荷分散のために木構造を形成する必要もなくなる。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
145
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
146 しかし、これらの通信方法でのパケットの扱いには
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
147 \begin{itemize}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
148 \item 送信可能なパケットのブロックサイズが 64000byte までであると決まっている
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
149 \item パケットが途中で消失してしまっても特定することができない
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
150 \end{itemize}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
151 といった性質がある。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
152
0
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
153
2
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
154 VNC でこれらの通信方法を用いて実装する場合、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
155 パケットの扱いの性質を乗り越えなければならない。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
156
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
157 送信可能なパケットのサイズが決まっているので、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
158 画面データは 64000byte 以下に分割し送信しなければならない。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
159 しかし、現在の TreeVNC で用いている方法では、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
160 データ分割の処理には時間がかかってしまう。
0
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
161
2
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
162 パケットの消失を検知するために、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
163 各パケットに対してシリアル番号を振り分ける。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
164 パケットを受信した node 側で、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
165 シリアル番号が連番で届いているのかどうかを調べれば、消失を検知することが可能である。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
166 もしパケットが届いていなかった場合は、root に対して再送要求を送信すれば良い。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
167 しかし、Multicast や Broadcast 通信ではパケットロス率が高かった。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
168
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
169 これらの通信方法を用いての VNC の実装にはもう更なる工夫が必要である。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
170
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
171
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
172
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
173 \subsection*{[node 間で行われるメッセージ通信]}
0
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
174
2
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
175 RFBプロトコルで提供されているメッセージに加え、 TreeVNC 独自のメッセージを使用している。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
176 %TreeVNC で使用されるメッセージの一覧を表\ref{tb:message}に示す。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
177 %
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
178 %
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
179 %\begin{table*}[htb]
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
180 % \scriptsize
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
181 % \begin{tabular}{|l|l|l|} \hline
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
182 % 通信経路 & message & 説明 \\ \hline \hline
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
183 % & FIND\_ROOT & TreeVNC接続時にrootを探す。 \\ \cline{2-3}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
184 % send direct message & WHERE\_TO\_CONNECT & 接続先をrootに聞く。 \\ \cline{2-3}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
185 % (child to root) & LOST\_CHILD & 子nodeの切断をrootに知らせる。 \\ \hline \hline
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
186 %
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
187 % & FIND\_ROOT\_REPLY & FIND\_ROOTへの返信。 \\ \cline{2-3}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
188 % send direct message & CONNECT\_TO\_AS\_LEADER & 左子nodeとして接続する。接続先のnodeが含まれている。 \\ \cline{2-3}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
189 % (root to child) & CONNECT & 右子nodeとして接続する。接続先のnodeが含まれている。 \\ \hline \hline
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
190 %
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
191 % message down tree & FRAMEBUFFER\_UPDATE & 画像データ。EncodingTypeを持っている。\\ \cline{2-3}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
192 % (root to child) & CHECK\_DELAY & 通信の遅延を測定する。 \\ \hline \hline
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
193 %
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
194 % message up tree & CHECK\_DELAY\_REPLY & CHECK\_DELAYへの返信。 \\ \cline{2-3}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
195 % (child to root) & SERVER\_CHANGE\_REQUEST & 画面切り替え要求。 \\ \hline \hline
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
196 %
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
197 % & FRAMEBUFFER\_UPDATE\_REPLY & 画像データの要求。 \\ \cline{2-3}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
198 % send message & SET\_PIXEL\_FORMAT & pixel値の設定。 \\ \cline{2-3}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
199 % (root to VNCServer) & SET\_ENCODINGS & pixelデータのencodeTypeの設定。 \\ \cline{2-3}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
200 % & KEY\_EVENT & キーボードからのイベント。 \\ \cline{2-3}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
201 % & POINTER\_EVENT & ポインタからのイベント。 \\ \cline{2-3}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
202 % & CLIENT\_CUT\_TEXT & テキストのカットバッファを持った際のmessage。 \\ \hline \hline
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
203 %
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
204 % & FRAMEBUFFER\_UPDATE & 画像データ。EncodingTypeを持っている。 \\ \cline{2-3}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
205 % send message & SET\_COLOR\_MAP\_ENTRIES & 指定されているpixel値にマップするRGB値。 \\ \cline{2-3}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
206 % (VNCServer to root) & BELL & ビープ音を鳴らす。 \\ \cline{2-3}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
207 % & SERVER\_CUT\_TEXT & サーバがテキストのカットバッファを持った際のmessage。 \\ \hline
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
208 % \end{tabular}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
209 % \caption{通信経路とmessage一覧}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
210 % \label{tb:message}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
211 %\end{table*}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
212
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
213
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
214 図\ref{fig:message}は、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
215 TreeVNC で node が root に接続し、画像データを受信するまでのメッセージ通信の様子である。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
216
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
217 \begin{figure}[h]
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
218 \begin{center}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
219 \includegraphics[width=70mm]{./pic/message.pdf}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
220 \end{center}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
221 \caption{node 間で行われるメッセージ通信}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
222 \label{fig:message}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
223 \end{figure}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
224
0
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
225 \begin{itemize}
2
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
226 \item nodeはMulticast通信でrootに対してFIND\_ROOTを送信する(1:findRoot())
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
227 \item rootがFIND\_ROOTを受信し、FIND\_ROOT\_REPLYを送信する(2:findRootReplay())
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
228 \item node側で、どのrootに接続するかを選択するパネルが表示される
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
229 \item nodeはパネルで接続するrootを選択し、rootに対して接続先を要求するWHERE\_TO\_CONNECTを送信する(3:whereToConnect())
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
230 \item 受信したrootはnodeの接続先をCONNECT\_TOで送信する(4:connectTo)
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
231 \item nodeはrootの指定した接続先に接続しに行く
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
232 \item root・node間の接続が確立後、rootからnodeに対して定期的に画像データFRAME\_BUFFER\_UPDATEを送信する(5:framebufferUpdate())
0
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
233 \end{itemize}
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
234
2
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
235
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
236
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
237 \subsection*{[配信画面切り替え]}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
238
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
239 ゼミでは発表者が順々に入れ替わる。発表者が入れ替わる度に共有する画面の切り替えが必要となる。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
240 ゼミを円滑に進めるために、画面の切り替えをスムーズに行いたい。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
241
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
242 画面の共有にプロジェクタを使用する場合、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
243 発表者が変わる度にケーブルの抜き差しを行わないとならない。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
244 その際に、ディスプレイ解像度を設定し直す必要が出たり、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
245 接続不良が起こる等の煩わしい問題が生じることがある。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
246
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
247 従来のVNCを使用する場合、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
248 画面の切り替えの度に一旦VNCを終了し、発表者のVNCServerへと再接続を行う必要がある。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
249
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
250 TreeVNC は、配信者の切り替えの度に生じる問題を解決している。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
251 TreeVNC を立ち上げることで、ケーブルを使用する必要なしに、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
252 各参加者の手元のPCに発表者の画面を共有することができる。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
253 画面の切り替えは、ユーザがVNCSeverへの再接続を行うことなく、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
254 share button を押すことによって、配信者の切り替えを行うことができる。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
255
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
256 TreeVNC の root は配信者の VNCServer と通信を行っている。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
257 VNCServer から画面データを受信し、そのデータを node へと送信している。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
258 配信者切り替え時に share button が押されると、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
259 root は share button を押したクライアントの VNCServer と通信を始める。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
260 TreeVNCは、配信者切り替えの度に VNC を終了し、再接続する必要がない。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
261
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
262 しかし、配信者と受信者の画面サイズの違いや、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
263 マルチディスプレイ全体を共有してしまう問題があるので、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
264 それらを解決する必要がある。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
265
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
266
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
267 \subsection*{[MulticastQueue]}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
268
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
269 配信側の画面が更新されると、 VNCServer から画像データが FRAME\_BUFFER\_UPDATE messageとして送られてくる。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
270 TreeVNC は、画像の更新を複数の node に同時に伝えるため、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
271 MulticastQueue という Queue に画像データを格納する。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
272
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
273 各 node は MulticastQueue からデータを取得するスレッドを持つ。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
274 MulticastQueue は複数のスレッドから使用される。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
275
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
276 MulticastQueue は、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
277 java.util.concurrent.CountDownLatch を用いて実装されている。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
278 CountDownLatch とは、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
279 java の並列用に用意された API で、他のスレッドで実行中の操作が完了するまで、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
280 複数のスレッドを待機させることのできるクラスである。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
281 スレッドを解放するカウントを設定することができ、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
282 カウントが 0 になるまで await メソッドでスレッドをブロックすることができる。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
283
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
284 TreeVNC では、それぞれの画像データにカウントが追加され、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
285 カウントが 0 になると、その画像データは消される。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
286 親 node がMulticastQueueを持っており、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
287 接続されている子 node の数だけ画像データにカウントを設定する。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
288 子 node が画像データを取得すると、そのカウントが減る。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
289 接続している全ての子 node が画像データを取得するとカウントが 0 になり、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
290 MulticastQueueから画像データが消される。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
291
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
292 親node は、接続している全ての子nodeが画像データを取得するまで
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
293 MulticastQueueの中に持っている画像データを削除することができない。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
294 node が MulticastQueue からデータを取得せずに、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
295 Queue にデータが溜まり続けると、Memory Over Flowを起こしてしまう。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
296 この問題を避けるために、Timeout用のスレッドを用意している。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
297 Timeout スレッドは、ある一定時間取得されない画像データがある場合、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
298 そのデータを node の代わりにpollするという仕組みである。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
299 Timeout スレッドにより、Memory Over Flowを防ぐことができる。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
300
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
301 \section{QUALITYモードとSPEEDモード}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
302 高解像度のまま拡大・縮小の処理を行うと、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
303 PC のスペックによっては描画処理に時間がかかってしまうことがある。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
304 配信者の画面をリアルタイムに取得するため、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
305 描画処理に時間のかからないモードを追加する。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
306
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
307 画像描画処理には、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
308 高画質優先の QUALITY モードと描画速度優先の SPEED モードがある。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
309 今まで TreeVNC は QUALITY モードで使用していた。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
310
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
311 今回、どちらのモードを使用するかをビューワから変更出来るようにした。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
312 これにより、描画処理の遅延を解決することができた。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
313
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
314 \section{表示画面サイズ調整機能}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
315
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
316 配信側PCによって、配信される画面サイズが変わる。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
317 配信側とクライアントで画面サイズに差がある場合、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
318 画面に入りきらない、或いは表示画面が小さすぎる等の問題が生じる。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
319
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
320 ユーザ毎に適切な画面サイズがあり、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
321 簡単に表示画面を適切な大きさに変更できるようにしたい。
0
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
322
2
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
323 今回、ビューワに HD ボタンと fit screen ボタンを追加した。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
324 HD ボタンは、画面サイズを 1920x1080 サイズに拡大・縮小し、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
325 fit screen ボタンは、クライアントの画面サイズに合わせてフルサイズで拡大・縮小する。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
326
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
327 更に、rootとして起動し、viewer も表示される -d オプションを使用した場合は、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
328 表示される画面を常に画面にフィットする様にした。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
329
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
330 \section{マルチディスプレイ対応}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
331
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
332 画面配信側のPCがマルチディスプレイの場合、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
333 VNCServer からは複数の画面全体の画像データが送信され、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
334 図\ref{fig:multidisplay}の様に画面が配信される。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
335
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
336 \begin{figure}[h]
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
337 \begin{center}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
338 \includegraphics[width=70mm]{./pic/multidisplay.pdf}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
339 \end{center}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
340 \caption{マルチディスプレイの描画}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
341 \label{fig:multidisplay}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
342 \end{figure}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
343
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
344 授業やゼミ等でTreeVNCを使用する場合、複数画面の表示は必要ない。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
345
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
346 そこで、一画面のみをフィルタリングし表示するためのオプション機能(${\mathchar`-}$${\mathchar`-}$filterSingleDisplay)を追加した。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
347 オプションを追加した起動方法をソースコード\ref{filtersingledisplay}に記述する。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
348
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
349 root はVNCServerから送られてくる全画面データから一画面のみをフィルタリングする必要がある。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
350 シングルディスプレイサイズは、個々のクライアントでしか取得できない。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
351 なので、配信側は画面の切り替えを行う際に、シングルディスプレイサイズを取得し、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
352 root へ送信する画面切り替えを要求する SERVER\_CHANGE\_REQUEST message に
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
353 シングルディスプレイサイズを付加する様にした。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
354
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
355 root はメッセージを受け取り initData を変更する。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
356 initData は、RFB プロトコルで行われる通信中に VNCServer が送信するServerInit message から生成される。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
357 画像データが送られてくる前の段階で、これから送信されるデータの情報を取得し、描画の準備をする。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
358 ServerInit messageに含まれているデータは、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
359 配信先の画面サイズ、pixel format、配信先のPCの名前である。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
360
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
361 マルチディスプレイの場合、VNCServerは数画面全体のサイズを送信する。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
362 そのまま initData を使用すると複数画面全体を描画することになる。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
363 それを避けるため、initData をシングルディスプレイサイズ用の originalInitData に生成し直す。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
364 図\ref{fig:initdata}の様に、root は接続されている node へ originalInitData を送信する。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
365
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
366 \begin{figure}[h]
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
367 \begin{center}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
368 \includegraphics[width=70mm]{./pic/sendInitData.pdf}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
369 \end{center}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
370 \caption{シングルディスプレイサイズ用の initData}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
371 \label{fig:initdata}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
372 \end{figure}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
373
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
374 これにより、一画面のみの表示が可能となる。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
375
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
376
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
377 \section{無線LANへの対応}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
378 授業でTreeVNCを使用する場合、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
379 有線を使用するか否かは学生によって違う。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
380 TreeVNCを有線・無線の両方からの接続に対応したい。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
381
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
382 従来の TreeVNC は、クライアントの接続する木構造が単一であった。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
383 そのため、単一のネットワークインターフェースでしか使用することができなかった。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
384
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
385 この問題を解決するために、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
386 図\ref{fig:multinetworktree}の様に、ネットワークインターフェース別に
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
387 木構造を形成するように設計した。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
388
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
389 \begin{figure}[h]
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
390 \begin{center}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
391 \includegraphics[width=70mm]{./pic/MultiNetworkTree.pdf}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
392 \end{center}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
393 \caption{Multi Network Tree}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
394 \label{fig:multinetworktree}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
395 \end{figure}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
396
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
397 TreeVNC は、root が TreeManager というオブジェクトを持っている。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
398 TreeManager は TreeVNC の接続部分を管理している。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
399 TreeManager では木構造を管理する nodeList が生成される。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
400 この nodeList を元に、新しい node の接続や、node の切断検出時の接続の切り替え等を行う。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
401
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
402 root の保持しているネットワークインタフェース毎に
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
403 TreeManager を生成する様に変更した。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
404 ソースコード\ref{createtreemanager}に、nodeList を生成する部分を示す。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
405
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
406 \newpage
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
407
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
408 \lstinputlisting[breaklines=true,caption=TreeManager の生成,label=createtreemanager]{source/GetNetworkInterfaces.java}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
409
0
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
410 \begin{itemize}
2
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
411 \item for 文を使用し root が所持しているネットワークインタフェースを取得する(2行目)
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
412 \item その中から、起動しており Multicast に対応しており、また、ループバックインタフェースでないネットワークインタフェースを取得する(4行目)
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
413 \item 取得してきたネットワークインタフェースの、ネットマスク、ホストネームを取得する(6,7行目)
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
414 \item TreeManager を生成する(8行目)
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
415 \item TreeManager にネットマスクとネットアドレスを追加する(14行目)
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
416 \item HashMap である interfaces に ネットワークインタフェースと対応する TreeManager を追加する(15行目)
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
417 \end{itemize}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
418
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
419 新しい node が接続してきた際、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
420 interfaces から node のネットワークインタフェースと一致する TreeManager を取得する。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
421 その TreeManager に、node 接続の処理を任せる。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
422
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
423 こうすることによって、TreeVNC を複数のネットワークインターフェース別に
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
424 木構造を構成することができる。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
425
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
426 \section{WANへの対応}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
427 遠隔地からでもゼミや授業に参加できるよう、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
428 異なるネットワークインタフェースから TreeVNC への接続を可能にした。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
429
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
430 遠隔地からの接続を実現した TreeVNC を図\ref{fig:remotetreevnc}に示す。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
431 図\ref{fig:remotetreevnc}では、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
432 ネットワーク A で立ち上げた TreeVNC に対し、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
433 遠隔地のネットワーク B, C, D から接続している状態である。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
434 図の様に、各ネットワーク毎に TreeManager を持つ root node が存在する。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
435 TreeManager を持つ node は、そのネットワーク上での接続の木構造を管理する root となる。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
436 遠隔地ネットワークから直接 TreeVNC に接続した node は root となる。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
437
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
438 \begin{figure}[h]
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
439 \begin{center}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
440 \includegraphics[width=70mm]{./pic/remoteTreeVnc.pdf}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
441 \end{center}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
442 \caption{Remote Network Tree}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
443 \label{fig:remotetreevnc}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
444 \end{figure}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
445
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
446
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
447
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
448 以下に、遠隔地からの接続の手順を記述する。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
449
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
450 \begin{itemize}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
451 \item 遠隔地 node から接続したい root に対して接続を要求する WHERE\_TO\_CONNECT message を送信する(図\ref{fig:remotevncconnect}中, 1:)
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
452 \item root は、遠隔地 node に対して接続先を含む CONNECT\_TO message を送信する(図\ref{fig:remotevncconnect}中, 2:)
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
453 \item 遠隔地 node は指定された接続先に対して接続しに行く(図\ref{fig:remotevncconnect}中, 3:)
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
454 \end{itemize}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
455
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
456 \begin{figure}[h]
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
457 \begin{center}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
458 \includegraphics[width=70mm]{./pic/remoteVncConnect.pdf}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
459 \end{center}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
460 \caption{遠隔地 node からの接続}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
461 \label{fig:remotevncconnect}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
462 \end{figure}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
463
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
464 ネットワーク毎に TreeVNC の木構造は管理される。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
465 図\ref{fig:remotenetworktree1}の TreeVNC の木構造はバイナリツリーを形成している。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
466 しかし、遠隔地 node が接続している node には合計3つ node が接続している。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
467 遠隔地 node は、root の管理する nodeList に追加されない。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
468 これは、node の接続・切断・切り替えに遠隔地 node を関与させないためである。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
469
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
470 ネットワーク毎に root が存在する。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
471 root は同じネットワーク上の新しい node からの
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
472 接続を受け付ける(図\ref{fig:remotenetworktree1}中, 1,2,1',2':)。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
473
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
474 \begin{figure}[h]
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
475 \begin{center}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
476 \includegraphics[width=70mm]{./pic/remotenetwork.pdf}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
477 \end{center}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
478 \caption{Remote Network Tree}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
479 \label{fig:remotenetworktree1}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
480 \end{figure}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
481
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
482
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
483 遠隔地 node からでも、画面を配信できるようにする。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
484 遠隔地 node から画面配信を行う場合の画面の切り替えを図\ref{fig:remotenetworktree2}、図\ref{fig:remotenetworktree5}に示す。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
485 以下に、画面切り替えの説明を記述する。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
486
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
487 \begin{itemize}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
488 \item 遠隔地 node が親 node へと SERVER\_CHANGE\_REQUEST を送信する(図\ref{fig:remotenetworktree2}中, 1:)
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
489 \item SERVER\_CHANGE\_REQUEST には、id が付いており、遠隔地 node からであれば -1 が付加されている
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
490 \item SERVER\_CHANGE\_REQUEST は root へと送信される(図\ref{fig:remotenetworktree2}中, 2:)
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
491 \item root は SERVER\_CHANGE\_REQUEST の id を確認し、id = -1 の場合、遠隔地 root に対して WHERE\_TO\_CONNECT を送信する(図\ref{fig:remotenetworktree2}中, 3:)
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
492 \item 遠隔地 root は WHERE\_TO\_CONNECT の返信として、接続先を含む CONNECT\_TO を送信する(図\ref{fig:remotenetworktree5}中, 4:)
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
493 \item root は指定された接続先へと接続しに行く(図\ref{fig:remotenetworktree5}中, 5:)
0
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
494 \end{itemize}
2
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
495
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
496 \begin{figure}[h]
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
497 \begin{center}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
498 \includegraphics[width=70mm]{./pic/remotenetwork2.pdf}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
499 \end{center}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
500 \caption{Remote Network Tree}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
501 \label{fig:remotenetworktree2}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
502 \end{figure}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
503
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
504 \begin{figure}[h]
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
505 \begin{center}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
506 \includegraphics[width=70mm]{./pic/remotenetwork5.pdf}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
507 \end{center}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
508 \caption{Remote Network Tree}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
509 \label{fig:remotenetworktree5}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
510 \end{figure}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
511
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
512 \section{評価}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
513
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
514 \subsection*{[木の深さによるメッセージ伝達の遅延]}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
515 VNCServer から受信する画像データ、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
516 TreeVNC で扱われるメッセージ通信は構成された木を伝って伝達される。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
517 接続する人数が増える毎に木の段数は増えていく。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
518 そこで root から木の末端の node まで、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
519 メッセージが遅延することなく伝達できているかを検証する実験を行った。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
520
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
521
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
522 \subsection*{[実験環境]}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
523 授業を受講している学生が TreeVNC を使用した状態で実験を行った。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
524 TreeVNC には最大で34名が接続していた。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
525
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
526 \subsection*{[メッセージを使用した実測]}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
527 TreeVNC を伝搬するメッセージに、CHECK\_DELAY・CHECK\_DELAY\_REPLY を追加した。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
528 CHECK\_DELAY は root から node の末端まで伝達するメッセージ(図\ref{fig:checkdelay}, 左)、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
529 CHECK\_DELAY\_REPLY は各 node から root まで伝達するメッセージ(図\ref{fig:checkdelay}, 右)である。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
530
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
531 % heart beat 代わりにも使える等の違ったメリットも書く?
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
532 % デバッグに使用できたとかって
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
533
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
534 \begin{figure}[h]
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
535 \begin{center}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
536 \includegraphics[width=70mm]{./pic/checkDelay.pdf}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
537 \end{center}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
538 \caption{CHECH\_DELAY, CHECK\_DELAY\_REPLY}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
539 \label{fig:checkdelay}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
540 \end{figure}
0
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
541
2
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
542 CHECK\_DELAY message は、送信時刻を付けて送信する。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
543 root から CHECK\_DELAY 送信し、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
544 末端 node まで各 node を伝いながら伝達して行く。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
545
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
546 CHECK\_DELAY\_REPLY には、CHECK\_DELAY から受け取った送信時刻をそのまま付つけて送信する。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
547 CHECK\_DELAY を受け取った各 node は、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
548 CHECK\_DELAY\_REPLY を接続している親 node に送信する。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
549
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
550 CHECK\_DELAY\_REPLY を受け取った root は、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
551 メッセージの伝達にどれだけの時間がかかったかを計算する。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
552
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
553 計算方法を以下のソースコード\ref{calc}に記述する。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
554 各 node にデータを下ろす際も、root にデータが上る際も、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
555 木を伝い受け渡されている。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
556 なので、データが root から末端 node に伝わる時間は、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
557 CHECK\_DELAY を送信した時間と、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
558 CHECK\_DELAY\_REPLY を受信した時間の半分であるといえる。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
559
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
560 % あとでコメントアウトはずす
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
561 \begin{lstlisting}[caption=遅延時間の計算方法,label=calc]
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
562 Long delay = System.currentTimeMillis() - time;
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
563 double halfDelay = (double) delay / 2;
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
564 \end{lstlisting}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
565
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
566
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
567 \subsection*{[depth毎の遅延結果]}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
568 バイナリツリーで木を構成した場合、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
569 node 数が34台だと深さが5となる。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
570 各木構造の階層毎に、メッセージの伝搬にかかった時間を測定した。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
571
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
572 図\ref{fig:test}は遅延の分布を示したヒストグラムである。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
573 X軸はメッセージ伝達にかかった秒数(ms)、
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
574 Y軸は CHECK\_DELAY\_REPLY を送信した node の割合を表している。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
575
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
576 ほとんどのメッセージの伝達は 0.0 〜 4.0 ミリ秒内に収まっている。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
577 木の段数毎に、メッセージ伝達速度の差が生じている。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
578 深い段数の node ほど、メッセージ伝達速度が落ちている。
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
579
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
580
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
581 \begin{figure}[h]
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
582 \begin{center}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
583 \includegraphics[width=70mm]{./pic/test.pdf}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
584 \end{center}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
585 \caption{step1}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
586 \label{fig:test}
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
587 \end{figure}
0
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
588
1
10e5ea7ae31e Fix Encoding
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
589 \section{まとめ}
0
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
590
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
591 \begin{acknowledgment}
2
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
592 謝辞が必要であれば,ここに書く.
0
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
593 \end{acknowledgment}
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
594
1
10e5ea7ae31e Fix Encoding
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
595 % BibTeX を使用する場合 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
596 % \bibliographystyle{ipsjsort}
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
597 % \bibliography{ref}
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
598
1
10e5ea7ae31e Fix Encoding
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 0
diff changeset
599 % BibTeX を使用しない場合
0
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
600 \begin{thebibliography}{9}
2
d964ad17d606 Add oc-thesis
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 1
diff changeset
601 \bibitem{latex} 奥村晴彦, 黒木裕介: \textbf{LaTeX2e美文書作成入門}. 技術評論社, 2013.
0
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
602 \end{thebibliography}
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
603
f37f38f03508 Add prosym templete
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents:
diff changeset
604 \end{document}