view 2016/2016_01_26/slide.md @ 31:b7908b2f86c0 default tip

Update slide 2018_01_30
author Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
date Tue, 30 Jan 2018 18:43:00 +0900
parents bb0326d253f1
children
line wrap: on
line source

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 のサイズ