あるパソコンの画面を、ほかのパソコンの画面からのぞいたり、操作したり
するソフトとして、
VNCがあります。
なんに使うの?っていうと、たとえば、
「奥さんの行動が怪しいとき」!!
ADSLを使って、動的にアドレス振られてるから大丈夫!と安心してる奥さんに
・こっそりと、奥さんのマシンにVNCサーバーをインストールして、
・IPConfigした結果を、ご主人に知らせるバッチプログラムをつくり、
・それを、起動時に動くようにしておくと、
だんなさんは、VNCViewerを使えば、奥さんの行動(パソコンでのやりとり)が手に取るようにわかり、不倫しそうになったら、邪魔することができるというソフト。。。
って、そういう使う方する人は、少ない、
つーか、いないと思うけど。。。
とにかく、離れたところから、IPアドレスを指定して、端末を監視、操作できるというソフトです。
で、そのソフト、
・サーバー(上の例だと、奥さんの端末に入れるほう。監視される!ほう)
と
・ビューワー(クライアント。監視するだんなさんのほう)
があります。
で、サーバーは、いいとして、クライアントのVNCViewerには、Java版というのがあります。。
おお、Javaで見れるなら、どんなプラットフォームでも、実行できて、さらに、拡張できて、いいじゃん!
と思うかもしれませんが、実際に、そのソースのMakeFileをみると、cp コマンドとか書いてあって、Linux向きです。
なので、Windowsで、Java版を使いたい!場合のメモ
コンパイルのしかた
前提:Javaは入っていて、パスは貼ってあるものとします。
つまり、どこのパスでもjavaやjavacを実行できる状態。
(1)VNCのJava版を、ダウンロードしよう。
(2)そうすると、「vnc-4.0-javasrc」とかいう、ソースのフォルダの下に、ReadMeとかMakefileとかある。
(3)(アクセサリの中にある)コマンドプロンプトで、(2)のフォルダに行く
(cdする)
(4)以下のように3つ、実行するのだ
javac rdr\*.java
javac rfb\*.java
javac vncviewer\*.java
(5)なんか、「ふるいコマンドを使ってる」とか言うワーリングが出るが、無視
実行の仕方
前提:Java入ってて、パス貼ってある。コンパイル終わった
・(3)のフォルダに行こう(cdする)
・次のコマンドを打とう
java vncviewer/VNCViewer
ちなみに、ログは、画面上に表示される。デバッグモードまでのログを出したいなら
java vncviewer/VNCViewer -log 100
ログに時間を出したい
しかし、これでは、奥さんの監視には不十分です!
ログに時間がでません。
そんな、あなたは、ここを修正。
rfb/LogWriter.java
プログラムみると、vlogっていうのが、いろいろ出てくるけど、それがこのログ。。だと思う
切断時間を知りたい
でも、監視にはまだまだです。なぜなら、
切断時間がわかんないからです。
どうするか。。。
接続と、切断は、vncviewer/CConn.java に書いてあります。
そこのメソッドのpublic void close() が、切断してコネクションクローズするとこなんで、そこに適当に書く
接続は、vncviewer/CConn.javaの中のメソッドpublic boolean initで、
sock = new java.net.Socket(serverHost, serverPort);
vlog.info("connected to host "+serverHost+" port "+serverPort);
ってやってるところがあるよね。そこで接続してるので、vlog.infoのあと、適当にアレンジして、時間でも追加して、書いておけばよい
これで、奥さんの監視もばっちし!
でも、「僕の愛は深くて、奥さんだけでなく、愛人も監視したいんだよ!」っていう人には、
multi VNCってのがある。
って、multiVNCは、愛人監視ソフトじゃあ、ないんですけど(^^;)
もっと、まじめなソフトです。
ちなみに、今日、書いたのは、
ウィリアムのいたずらの愛人監視のためでなく(当然)、
ましてや、ストーカーをやるとか、
探偵業に転職するためでもなく(なおさら当然)
ちょっとvncViewerを修正して、セッションの開始終了時間を出すことを頼まれていたので、その調べたことを忘れないようにメモしたかったからだけです。