Telnetサーバから永遠に文字が送られてきても表示し続けるプログラム。


 ポイントは、
 1.Telnetサーバから送られ続けられる文字を、限られたメモリ範囲内にいかに新しいデータを保持するか。
 2.新しく取り込んだ文字を、いかにスムーズにスクロール表示しするか。
 だ。

1.について

確保したメモリをロール状にすることをイメージして、確保した容量を越えたら先頭から上書きしていく。
単純だが、これでメモリを複雑に操作することなく無限にデータが取り込める。

   イメージは下記図だ。
iTerm 確保したメモリ領域を、






丸めたイメージで使う。
2.について

改行毎に先頭文字のアドレスを保持する変数を用意し、配列のサイズを越えたら先頭から上書きしていく。

概要は下記図だ。
iTerm 確保したメモリ領域を、

画面の表示サイズは、80カラムx24行で、20ページ分を用意する場合、

80 × 24 × 20 = 38400byte
となるので、これ+αのメモリを確保しておけば良いし、先頭アドレスのテーブル数も、

24 × 20 = 480行
となるので、480以上用意すれば良いだろう。


この考え(簡単に書いたが実際の処理は複雑だ)でプログラムにすると、こんな感じiTermMain.cppになる。
また、telnetアクセスするのがiTermProc.cppiTermWinSock.cppiTermNegotiation.cppで、
これはそのヘッダiTerm.hと、リソースはこれiTerm.rcだ。

※ 但し、ネゴシエーションの処理は簡易な実装なので、Telnetサーバに合わせた変更が必要だ。


ここに掲載しているソフトウエアは、オープンソース・ソフトウェアですが、著作権は著作者に帰属します。
本ソフトウェアによる損害が生じても、いかなる保証は出来きません。あらかじめ承知ください。
戻る