title: 有線 LAN 上のPC画面配信システムTreeVNCの改良 author: Tatsuki IHA profile: lang: Japanese code-engine: coderay # 研究目的 授業やゼミ等で、それぞれがPC端末を持っている場合では、PCの機能を活かしたコミュニケーションが可能である。教員が操作する画面をそのまま学生に配信したり, ゼミなどで、発表する学生の画面を切り替えたりすることを可能にしたい。 画面配信システムTreeVNCは参加したクライアントをバイナリツリー状に接続し、配信コストを分散させる仕組みを取っている。そのため,多人数が参加しても処理性能が下がらない。また、ツリーのルートが参照しているVNC サーバーを変更することで、ケーブルの差し替えなしに画面の切替が可能となる。 本研究ではTreeVNCの改良として、複数のネットワークへの対応、 WANへの対応、 マルチディスプレイへの対応を行うとともに、TreeVNC 有用性を示すために画像データの遅延時間計測を行う # 近況 - multi display - Root Node での Lost Child # Multi Display - share する側の画面の座標情報をRoot に送信 - Root は FrameBufferUpdateReqeust で座標情報を送って画面データを取得 # Multi Display - 途中で止まる # 止まる原因 - SenderTask で FrameBufferUpdateReqeust Message を send するはずだが、Message Queue にデータが入っていない - ReceiverTask で Message Queue に FrameBufferUpdateReqeust を入れている # 止まる原因 - Reader から readByte する際に止まっている(socketRead0) - コード 読むとどこかでずれているわけでもなく - 別の Thread からFrameBufferUpdateReqeust を送ると動く(viewer の更新ボタンを連打すると動く) # 解決法 - 別ThreadでFrameBufferUpdateReqeust を一定時間毎に送信するようにする(先週) - しかし, ServerChange ができない場合がある事が判明 - ReceiverTask を stop させるときに Reader が止まって, thread が止まるのに時間がかかる場合がある - 止まる時間がまちまち # 解決法 - Reader に timeout つけました - この Reader は元はSocket の InputStream なので Socket に timeout を付けました ``` java socket.setSoTimeout(time) ``` # Root Node の Lost Child # 次 - そつろん - Root Node のserver Change - なせがいろいろな状況で Sound のport に繋がる - sound のコード - 書き込みと読み込みの並行 - -d で接続した時自分のが消えない場合がある - Nat越えた ServerChange ができるといいな - multi display のサイズ