Mercurial > hg > Papers > 2014 > oc
view report.tex @ 3:f281e372d8f2
update
author | oc |
---|---|
date | Wed, 29 Oct 2014 11:12:27 +0900 |
parents | b59646b8471a |
children | f8cb6edde76f |
line wrap: on
line source
\documentclass[twocolumn,twoside,9.5pt]{jarticle} \usepackage[dvips]{graphicx} \usepackage{picins} \usepackage{fancyhdr} %\pagestyle{fancy} \lhead{\parpic{\includegraphics[height=1zw,keepaspectratio,bb=0 0 251 246]{pic/emblem-bitmap.pdf}} 琉球大学主催 工学部情報工学科 中間発表予稿} \rhead{} \cfoot{} \setlength{\topmargin}{-1in \addtolength{\topmargin}{15mm}} \setlength{\headheight}{0mm} \setlength{\headsep}{5mm} \setlength{\oddsidemargin}{-1in \addtolength{\oddsidemargin}{11mm}} \setlength{\evensidemargin}{-1in \addtolength{\evensidemargin}{21mm}} \setlength{\textwidth}{181mm} \setlength{\textheight}{261mm} \setlength{\footskip}{0mm} \pagestyle{empty} \begin{document} \title{授業やゼミ向けの画面共有システムTreeVNCの機能拡張} \author{115747H 大城美和 {}{} 指導教員 : 河野真治} \date{} \maketitle \thispagestyle{fancy} \section{はじめに} % 目的を先に書く 本研究では、 ゼミや講義の質を高め、快適にプレゼンテーションを聴講でき、 参加者同士が充分なコミュニケーションを取れることを目的としている。 %TreeVNCに新たな機能の実装を行う。 本研究室では、TreeVNCという画面共有システムを開発している。 TreeVNCに新たな機能の実装を行っていく。 % TreeVNCの負荷分散の話 TreeVNCは、接続しに来たクライアントをバイナリツリー状に接続する。 多人数で使用する場合でも、各nodeに最大2台分のクライアントしか接続されない。 従来のVNCの場合、rootに多人数分のクライアントが接続される。 TreeVNCとVNCとでは、配信する画像データをコピーする回数が違う。 TreeVNCは、rootへの負担を各nodeに分散するため、 処理性能の低下を防いでいる。 % 画面共有ボタンの話 ゼミで画面共有を行う場合、発表者が頻繁に入れ替わる。 プロジェクタを使用している場合、 入れ替えの度にケーブルを挿し直す必要がある。 TreeVNCには、画面共有ボタンが付いており、 発表者はそれを押すことによって、画面を切り替えをスムーズに行える。 \begin{figure}[htpb] \begin{center} \includegraphics[width=90mm]{pic/TreeVNC.eps} \end{center} \label{fig:figure1} \caption{TreeVNCの図} \end{figure} \newpage \section{VNC} VNC(Virtual Network Computing)は、 RFBプロトコルを使用し遠隔操作を行うリモートデスクトップソフトである。 VNCはサーバ側とクライアント(ビューア)側に分かれていて、 サーバを起動し、クライアントがサーバに接続を行い遠隔操作を可能にする。 \section{TreeVNC} TreeVNCは、TightVNCのjava版のビューアを元に 作成された画面共有システムである。 \section{TreeVNCのリファクタリング} TreeVNCをリファクタリングを行い、大幅な変更を加えた。 \subsection{port番号の変更} TreeVNCは複雑の分散アルゴリズムを用いたシステムであり、 デバッグを行う環境を整える必要がある。 従来のTreeVNCでは、固定長ポートを複数利用していた。 そのせいで通信プロトコルが複雑になり、 1台で複数のTreeVNCを立ち上げることができなかった。 ダイナミックにportを変更することによって、 1つのnodeに対して複数のTreeVNCを起動することを可能にした。 最低限のソケットポートを開けることによって、 メモリの使用を抑えた。 rootと子node間の通信を行うmessageは以下である。 子nodeが最初にrootへと通信を行うmessage (FIND\_ROOT、FIND\_ROOT\_REPLY)、 node間の接続を行うmessage (CONNECT\_TO\_AS\_LEADER、CONNECT\_TO)、 どのnodeと接続するかを知らせるmessage (WHERE\_TO\_CONNECT)、 親nodeとの接続が切れてしまった場合のmessage (LOST\_PARENT)、 新しいnodeが接続した場合のmessage (NEW\_NODE)、 クライアントが画面共有ボタンを押した際のmessage (SERVER\_CHANGE\_REQUEST)、 rootとnode間の通信における遅延を計測するためのmessage (CHECK\_DELAY\_REPLY) \subsection{Treeの構成の変更} TreeVNCを、複数のネットワークインターフェイスで 使用できるようにリファクタリングを行った。 従来のTreeVNCは、単一のネットワークでしか使用出来なかった。 複数のネットワークインターフェースで、 別の木構造を形成するように設計し直した。 TreeVNCは、rootがnodeListというリストを持って木構造を管理している。 複数のネットワークインターフェースで木構造を形成する場合、 このnodeListをネットワークインターフェース毎に作成しておく。 新しいnodeを接続する際、nodeのネットワークインターフェースを取得し、 どのnodeListに登録されるかが決まる。 こうすることによって、TreeVNCを複数のネットワークインターフェイスで 使用することができる。 \begin{figure}[htpd] \begin{center} \includegraphics[width=90mm]{pic/MultiNetworkTree.eps} \end{center} \caption{マルチネットワークに対応したTreeVNCの図} \label{fig:figure2} \end{figure} \subsection{ホスト切り替え時の挙動の修正} 画面の切り替えを行う際、ホスト側の画面の ビデオフィードバックが生じてしまい、 その結果が他のユーザに共有されてしまう問題を解決した。 ホストを切り替える際にviewerを閉じる様、設計した。 また、元のホストでは、viewerが立ち上がる様にした。 ビデオフィードバックが共有されないよう、 手動でviewerを最小化する必要がなくなった。 \section{まとめ} TreeVNCに上記の様なリファクタリングを行うことによって、 今後の開発環境を整い、 通信できるネットワークインターフェースの幅が広がり、 TreeVNCの利便性が向上した。 \section{今後の課題} \subsection{画像データの遅延} 現在のTreeVNCでは、 全画像データの書き換えが立て続けに起こってしまった場合、 データの受け渡し処理で遅延が発生する。 VNCServerから立て続けに大きい画像データが送信されたことを検知し、 送られてきた全てのデータを画面に出力するのではなく、 最新のデータのみを取得し出力するといった実装を行う。 \subsection{エラーハンドリング} % SeverChange時の子nodeのエラーメッセージがrootに出力される。 クライアントが画面の切替を行った際に生じた クライアントのエラーが、rootに出力されるという問題がある。 クライアントのエラーを検出した際にそのクライアントのIDを取得する。 木構造を下に辿って、 エラーメッセージを含むデータを クライアントに送信する。 下へと降る際、各nodeでIDの確認をし、 一致した箇所でエラーメッセージを出力するような実装を行う。 %\section{新機能の実装} %%参加者同士の充分なコミュニケーションを提供するために、以下の機能が考えられる。 %TreeVNCを使用し、参加者が充分なコミュニケーションを行うために、以下の機能が考えられる。 \subsection{音声データの共有} 現在TreeVNCが共有しているのは画面のデータのみである。 遠隔からプレゼンテーションや授業を聴講したい場合、 画面のデータに加えて音声データが欲しい。 TreeVNCに、画像データと共に音声データを追加する。 \subsection{画面の大きさをホスト側で変更できる} 現在のTreeVNCは、ホスト側の画面全体を送信している。 マルチディスプレイを持っているホストだと、 2つの画面が共有されてしまう。 これでは発表者が切り替わる毎に、 クライアント側で画面の大きさを手動で変更しなければならない。 そこで、画面の大きさをホスト側で変更したい。 ホスト側にviewerの代わりに枠を用意し、 その枠内のデータのみを共有するといった機能を追加する。 この機能を追加することによって、 本来共有する必要のないデータを共有することがなくなる。 \begin{thebibliography}{9} \bibitem{1} TightVNC: VNC-Compatible Free Remote Control / Remote Desktop Software\\ \verb|http://www.tightvnc.com/| \bibitem{2} 谷成雄, 河野真治, 授業やゼミ向けの画面共有システムTreeVNCの設計と実装 A Screen Sharing System using Tree Structure for Seminar and Classwork 平成25年度 学位論文(修士) \end{thebibliography} \end{document}