telnetサーバ
今現在、XPCOMでtelnetサーバっぽいものを作ってみようと奮闘中。
- nsIServerSocketでポート待ち受け
- nsIInputStreamをnsIConverterInputStreamでUTF-8化
- nsIOutputStreamをnsIConverterOutputStreamでUTF-8化
- echo,quitコマンド作成
- ん? キーバインドってどうやって作るんだ? クライアントからの入力をバッファに貯めずに即時送信する機構が必要だな。今のところクライアント側で行単位でバッファに貯めて送信しているっぽい。
- どうやって? どう考えても一文字ずつ即時送信する必要があるぞ。
- とりあえず、
man telnet
- おぉ、いろいろ載ってるCtrl + ]して、
mode character
すると即時送信になるっぽい - しかし、通常のtelnetログインでこんなモードチェンジしなくても最初からこのモードになっているってことはサーバ側から何か要求を出せるはずだ。
- むむっ! TELNET用のIACと呼ばれるエスケープシーケンス(0xFFらしい)があってそれをくっつけて端末と会話すれば良いっぽいな
- そういえば、今のところサーバ→クライアントへの書き込みは全てUTF-8化してしまっている。nsIBinaryOutputStreamで書き込む仕組みも欲しいってことか ←今ここ
拡張機能でtelnetサーバというとmozreplがあるわけだけど、それとは違ったかたちのtelnetサーバというか差別化を図りたい。少なくともクライアントにキャラクタモード(?)で通信しましょうという会話をして、キーバインド操作の実装はしたいな。と思っているところ。
ということで暫く勉強の日々が続きそう。