SSブログ

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文字ずつ送信していたような気がする。


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。