telnetプロトコル [雑感]
Qtで通信のプログラムを書いてみたた。
サーバ側をQtで書いていてクライアントはTera Termで試した。
サーバ側でreadyReadシグナルが発生するのがクライアント側でENTERを押したタイミングになる。
最初はreadyReadシグナルの仕様かと思ったのだがWireSharkでパケットを調べて見るとENTERキーを押した時にパケットを送信している。
いままでtelnetを使用していてクライアント側はこのよう挙動をしていなかったのでもしたらtelnetはサーバとクライアントで挙動のネゴシエーションを行うのか調べて見た。
マイクロソフトのサイトにtelentのプロトコルを解説しているページがあった。
http://support.microsoft.com/kb/231866/ja
telnetのコマンドがあるなんて知らなかった。
サーバからIAC 、WILL 、 Suppress Go Ahead (255,251,3)の3バイトを送信することによって、クライアントの挙動をENTERを押さなくてもパケットを送信するように変えることができた。
IAC、DO、echoも送信すべきなのだろうがTera Term側の設定でローカルエコーはしないことになっているので送信しなくても試したいことには問題がない。
Windows XPのころまで付属していたターミナルではデフォルトで1文字ずつ送信していたような気がする。
サーバ側をQtで書いていてクライアントはTera Termで試した。
サーバ側でreadyReadシグナルが発生するのがクライアント側でENTERを押したタイミングになる。
最初はreadyReadシグナルの仕様かと思ったのだがWireSharkでパケットを調べて見るとENTERキーを押した時にパケットを送信している。
いままでtelnetを使用していてクライアント側はこのよう挙動をしていなかったのでもしたらtelnetはサーバとクライアントで挙動のネゴシエーションを行うのか調べて見た。
マイクロソフトのサイトにtelentのプロトコルを解説しているページがあった。
http://support.microsoft.com/kb/231866/ja
telnetのコマンドがあるなんて知らなかった。
サーバからIAC 、WILL 、 Suppress Go Ahead (255,251,3)の3バイトを送信することによって、クライアントの挙動をENTERを押さなくてもパケットを送信するように変えることができた。
IAC、DO、echoも送信すべきなのだろうがTera Term側の設定でローカルエコーはしないことになっているので送信しなくても試したいことには問題がない。
Windows XPのころまで付属していたターミナルではデフォルトで1文字ずつ送信していたような気がする。
cannot connect to X server [How to]
仮想マシンの画面上の端末だと文字が小さいのでホストマシン上からSSHでログインして操作しているが、そこでXのアプリケーションを起動する方法を忘れてしまったので調べてみた。
以下のページに記述があった。
http://www.geocities.jp/ko_tyche/linux/xhost.html
ホストマシン上の端末から以下を入力する。
export DISPLAY=:0
環境変数DISPLAYを設定することでアプリケーションのウインドウを仮想マシンの画面上に表示できる。
export DISPLAY=:0.0でも同じになる。
だけど何故か
export DISPLAY=127.0.0.1:0.0
とか
export DISPLAY=IPアドレス:0.0
だとXサーバに接続できない
cannot connect to X server
になってしまう。
以下のページに記述があった。
http://www.geocities.jp/ko_tyche/linux/xhost.html
ホストマシン上の端末から以下を入力する。
export DISPLAY=:0
環境変数DISPLAYを設定することでアプリケーションのウインドウを仮想マシンの画面上に表示できる。
export DISPLAY=:0.0でも同じになる。
だけど何故か
export DISPLAY=127.0.0.1:0.0
とか
export DISPLAY=IPアドレス:0.0
だとXサーバに接続できない
cannot connect to X server
になってしまう。
テーマ・エンジンがありません [How to]
ubuntuにQt Creatorをインストールして試していたところ作成したプログラムを実行するとアプリケーション出力のウインドウに
Gtk-WARNING **: module_path にはテーマ・エンジンがありません: "pixmap"
と表示される。
pixmapで検索してみたところgtk2-engines-pixbufをインストールすると回避できるといくつかのページにかいてある。
sudo apt-get install gtk2-engines-pixbuf
これでWARNINGはでなくなった。
ubuntuソフトウエアセンターの検索ボックスにgtk2-engines-pixbufと入力するとパッケージが表示されるのでここからインストールしてもOK。
以下のページでパッケージに何が含まれるかがわかる。
http://packages.ubuntu.com/search?keywords=gtk2-engines-pixbuf
Pixbuf-based theme for GTK+ 2.xと書いてある。
Gtk-WARNING **: module_path にはテーマ・エンジンがありません: "pixmap"
と表示される。
pixmapで検索してみたところgtk2-engines-pixbufをインストールすると回避できるといくつかのページにかいてある。
sudo apt-get install gtk2-engines-pixbuf
これでWARNINGはでなくなった。
ubuntuソフトウエアセンターの検索ボックスにgtk2-engines-pixbufと入力するとパッケージが表示されるのでここからインストールしてもOK。
以下のページでパッケージに何が含まれるかがわかる。
http://packages.ubuntu.com/search?keywords=gtk2-engines-pixbuf
Pixbuf-based theme for GTK+ 2.xと書いてある。