From: "青山 和光" Date: 1998-02-25T10:05:08+09:00 Subject: [ruby-list:6737] Re: telnet In-Reply-To: [ruby-list:6694] telnet 助田さん、おはようございます。 >>[ruby-list:6694] telnet >>From: 助田 雅紀 >> >>どなたか Perl の Net-Telnet みたいなライブラリ作った >>方いませんか? 残念ながら作ってはいませんが、うまくいっていないというのは、telnet の プロトコルが http のように見やすいものではないからでしょう。 最後に付けたようなスクリプトで telnet のやりとりを見てみたのですが、こ んな感じのようです。 右側の説明は「インターネットシステムハンドブック」(インプレス)という本 に載っていたものです。 ちょっと Telnet.pm は必要なライブラリもあわせると大きいので簡単には移 植できませんが、似たような動きをさせるだけなら簡単そうなので後で作って みます。 server:"\377" 255 次のオクテットを制御コードとして解釈せよ server:"\375" 253 指定されたオプションを実行する事を期待する server:"\030" 24 端末の種類 server:"\377" 255 server:"\375" 253 server:" " 32 端末速度 server:"\377" 255 server:"\375" 253 server:"#" 35 X ディスプレイ配置 server:"\377" 255 server:"\375" 253 server:"'" 39 ? cliant:"\377" 255 cliant:"\373" 251 指定されたオプションについて、実行を開始するか確認 cliant:"\030" 24 cliant:"\377" 255 cliant:"\373" 251 cliant:" " 32 cliant:"\377" 255 cliant:"\373" 251 cliant:"#" 35 cliant:"\377" 255 cliant:"\373" 251 cliant:"'" 39 server:"\377" 255 ... #!/usr/local/bin/ruby require "socket" require "thread" port = TCPserver.open(2323) cliant = port.accept server = TCPsocket.open("localhost", 23) Thread.start do while TRUE while c = server.read(1) print "server:", c.inspect, "\t", c.unpack("C"), "\n" cliant << c end end end while TRUE while c = cliant.read(1) print "cliant:", c.inspect, "\t", c.unpack("C"), "\n" server << c end end 青山 和光 Wakou Aoyama