# HG changeset patch # User Tatsuki IHA # Date 1447151630 -32400 # Node ID 1706b0886a7832610b3ac995bb431beb3aff7ca2 # Parent 7cbb69880e625349871f5a187881390a84c4f53d Fix diff -r 7cbb69880e62 -r 1706b0886a78 paper/prosym.bib --- a/paper/prosym.bib Tue Nov 10 18:03:55 2015 +0900 +++ b/paper/prosym.bib Tue Nov 10 19:33:50 2015 +0900 @@ -16,14 +16,6 @@ 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を用いた授業用画面共有システムの設計・開発", @@ -31,11 +23,3 @@ month = "may", year = 2012 } - -@article{taninari:2011a, - author = "{Yu TANINARI and Nobuyasu OSHIRO and Shinji KONO}", - title = "JAVAによるVNCを用いた授業用画面共有システムの設計と開発", - journal = "日本ソフトウェア科学会", - month = "sep", - year = 2011 -} diff -r 7cbb69880e62 -r 1706b0886a78 paper/prosym.pdf Binary file paper/prosym.pdf has changed diff -r 7cbb69880e62 -r 1706b0886a78 paper/prosym.tex --- a/paper/prosym.tex Tue Nov 10 18:03:55 2015 +0900 +++ b/paper/prosym.tex Tue Nov 10 19:33:50 2015 +0900 @@ -1,5 +1,5 @@ % withpage: ページ番号をつける (著者確認用) -\documentclass[techrep, ,dvipdfmx]{ipsjprosym} +\documentclass[dvipdfmx]{ipsjprosym} \usepackage[dvipdfmx]{graphicx} \usepackage{url} \usepackage{listings, jlisting} @@ -51,7 +51,7 @@ $\backslash$#1\fi} % Title, Author %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\title{有線上のPC画面配信システムTreeVNCの改良} +\title{有線 LAN 上のPC画面配信システムTreeVNCの改良} \affiliate{IE}{琉球大学工学部情報工学科} @@ -76,7 +76,7 @@ 教員が操作する画面をそのまま学生に配信したり、 ゼミなどで、発表する学生の画面を切り替えたりすることを可能にしたい。 -TreeVNC画面配信システムは、 +TreeVNC画面配信システム\cite{oc:thesis}\cite{taninari:2012a}は、 参加したクライアントをバイナリツリー状に接続し、 配信コストをクライアントにバランスさせる仕組みになっている。 なので、多人数が参加しても処理性能が下がらない。 @@ -259,40 +259,6 @@ マルチディスプレイ全体を共有してしまう問題があるので、 それらを解決する必要がある。 - -\subsection*{[MulticastQueue]} -配信側の画面が更新されると、 VNCServer から画像データが FRAME\_BUFFER\_UPDATE messageとして送られてくる。 -TreeVNC は、画像の更新を複数の node に同時に伝えるため、 -MulticastQueue という Queue に画像データを格納する。 - -各 node は MulticastQueue からデータを取得するスレッドを持つ。 -MulticastQueue は複数のスレッドから使用される。 - -MulticastQueue は、 -java.util.concurrent.CountDownLatch を用いて実装されている。 -CountDownLatch とは、 -java の並列用に用意された API で、他のスレッドで実行中の操作が完了するまで、 -複数のスレッドを待機させることのできるクラスである。 -スレッドを解放するカウントを設定することができ、 -カウントが 0 になるまで await メソッドでスレッドをブロックすることができる。 - -TreeVNC では、それぞれの画像データにカウントが追加され、 -カウントが 0 になると、その画像データは消される。 -親 node がMulticastQueueを持っており、 -接続されている子 node の数だけ画像データにカウントを設定する。 -子 node が画像データを取得すると、そのカウントが減る。 -接続している全ての子 node が画像データを取得するとカウントが 0 になり、 -MulticastQueueから画像データが消される。 - -親node は、接続している全ての子nodeが画像データを取得するまで -MulticastQueueの中に持っている画像データを削除することができない。 -node が MulticastQueue からデータを取得せずに、 -Queue にデータが溜まり続けると、Memory Over Flowを起こしてしまう。 -この問題を避けるために、Timeout用のスレッドを用意している。 -Timeout スレッドは、ある一定時間取得されない画像データがある場合、 -そのデータを node の代わりにpollするという仕組みである。 -Timeout スレッドにより、Memory Over Flowを防ぐことができる。 - \section{QUALITYモードとSPEEDモード} 高解像度のまま拡大・縮小の処理を行うと、 PC のスペックによっては描画処理に時間がかかってしまうことがある。 @@ -330,7 +296,6 @@ \label{fig:multidisplay} \end{figure} - \section{無線LANへの対応} 授業でTreeVNCを使用する場合、 有線を使用するか否かは学生によって違う。 @@ -351,36 +316,20 @@ \label{fig:multinetworktree} \end{figure} -TreeVNC は、root が TreeManager というオブジェクトを持っている。 +TreeVNC は root が TreeManager というオブジェクトを持っている。 TreeManager は TreeVNC の接続部分を管理している。 TreeManager では木構造を管理する nodeList が生成される。 この nodeList を元に、新しい node の接続や、node の切断検出時の接続の切り替え等を行う。 root の保持しているネットワークインタフェース毎に TreeManager を生成する様に変更した。 -ソースコード\ref{createtreemanager}に、nodeList を生成する部分を示す。 -\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行目) -\end{itemize} - -新しい node が接続してきた際、 -interfaces から node のネットワークインタフェースと一致する TreeManager を取得する。 +新しい node が接続してきた際、 interfaces から node のネットワークインタフェースと一致する TreeManager を取得する。 その TreeManager に、node 接続の処理を任せる。 こうすることによって、TreeVNC を複数のネットワークインターフェース別に 木構造を構成することができる。 - \section{WANへの対応} 遠隔地からでもゼミや授業に参加できるよう、 別ネットワークから TreeVNC への接続を可能にした。 @@ -389,7 +338,7 @@ 別ネットワークからTreeVNCに参加する際、 直接配信側のネットワークの root に接続を行う。 この接続を Direct Connection と呼ぶ。 -Direct Connection した node はそのネットワークの root になり、node はそのネットワークの root に接続し、木を生成する。 +Direct Connection した node はそのネットワークの root になり、node はそのネットワークの root に接続し、木構造を生成する。 配信側の root は Direct Connection で接続された node に対して Framebuffer Update で 画像データを別ネットワークの node に送信する。 Framebuffer Update が送信された node はそのネットワークの root なので、子 node に対して Framebuffer Update を送信する。 @@ -435,7 +384,7 @@ root から CHECK\_DELAY 送信し、 末端 node まで各 node を伝いながら伝達して行く。 -CHECK\_DELAY\_REPLY には、CHECK\_DELAY から受け取った送信時刻をそのまま付つけて送信する。 +CHECK\_DELAY\_REPLY には、 CHECK\_DELAY から受け取った送信時刻をそのまま付つけて送信する。 CHECK\_DELAY を受け取った各 node は、 CHECK\_DELAY\_REPLY を接続している親 node に送信する。 @@ -485,15 +434,16 @@ WANに対応することで別ネットワークにいるユーザーが TreeVNC に参加することが可能となった。 -今後の課題として、画面切り替えの安定化、 ユーザビリティの向上、 共有機能の追加を行う。 +今後の課題として、画面切り替えの安定化、 WAN での画面切り替え、 ユーザビリティの向上、 共有機能の追加を行う。 現在のTreeVNCでは、share button を押すと、その時配信されている画面から、自動的に画面が切り替わってしまうという問題がある。 それを防ぐために share button が押されるとその時の配信者に切り替え確認を行う処理を追加する。 -また、今回追加した Direct Connection などの一部の機能はコマンドラインオプションで指定する必要があるため、一般ユーザーでは操作するのが困難である。 +今回追加した Direct Connection などの一部の機能はコマンドラインオプションで指定する必要があるため、一般ユーザーでは操作するのが困難である。 そこで、 今までコマンドラインオプションで指定していた機能を Viewer で操作するように変更を行う。 -共有機能の追加としては、音声、質問・意見 等が上げられる。 +共有機能の追加としては、音声、講義中の質問・意見 等が挙げられる。 + \nocite{*} \bibliographystyle{ipsjunsrt} \bibliography{prosym}