telnetサーバ

今現在、XPCOMtelnetサーバっぽいものを作ってみようと奮闘中。

  • nsIServerSocketでポート待ち受け
  • nsIInputStreamnsIConverterInputStreamUTF-8
  • nsIOutputStreamnsIConverterOutputStreamUTF-8
  • echo,quitコマンド作成
  • ん? キーバインドってどうやって作るんだ? クライアントからの入力をバッファに貯めずに即時送信する機構が必要だな。今のところクライアント側で行単位でバッファに貯めて送信しているっぽい。
  • どうやって? どう考えても一文字ずつ即時送信する必要があるぞ。
  • とりあえず、man telnet
  • おぉ、いろいろ載ってるCtrl + ]して、mode characterすると即時送信になるっぽい
  • しかし、通常のtelnetログインでこんなモードチェンジしなくても最初からこのモードになっているってことはサーバ側から何か要求を出せるはずだ。
  • むむっ! TELNET用のIACと呼ばれるエスケープシーケンス(0xFFらしい)があってそれをくっつけて端末と会話すれば良いっぽいな
  • そういえば、今のところサーバ→クライアントへの書き込みは全てUTF-8化してしまっている。nsIBinaryOutputStreamで書き込む仕組みも欲しいってことか ←今ここ

拡張機能telnetサーバというとmozreplがあるわけだけど、それとは違ったかたちのtelnetサーバというか差別化を図りたい。少なくともクライアントにキャラクタモード(?)で通信しましょうという会話をして、キーバインド操作の実装はしたいな。と思っているところ。
ということで暫く勉強の日々が続きそう。