わたなべです.

Kentaro Inagaki / 稲垣 健太郎 <inagaki / tg.rim.or.jp> writes:

:よくわからないのですが、テキストが流れてきた後で制御コードが
:流れているのが問題なのだろうかとか思っているのですが…

えっと, Dump_log ってあまり役に立たないので,
Net::Telnet からパクってみました.
その結果こんな感じで ff fb 26 の応答がないのが原因みたいです.
むりやり IAC DONT ENCRYPT を返したらいけました.
#Net::Telnet だと Dump_log がそうなってたので.
#でもどう修正すべきかよくわからない.

# 0x00000: 54 72 79 69  6e 67 20 6c  6f 63 61 6c  68 6f 73 74  Trying localhost
# 0x00010: 2e 2e 2e 0a                                         ....

# 0x00000: 43 6f 6e 6e  65 63 74 65  64 20 74 6f  20 6c 6f 63  Connected to loc
# 0x00010: 61 6c 68 6f  73 74 2e 0a                            alhost..

< 0x00000: ff fd 25                                            ..%

> 0x00000: ff fc 25                                            ..%

< 0x00000: ff fb 26 ff  fd 18 ff fd  20 ff fd 23  ff fd 27 ff  ..&..... ..#..'.
< 0x00010: fd 24                                               .$

> 0x00000: ff fc 18                                            ...

> 0x00000: ff fc 20                                            .. 

> 0x00000: ff fc 23                                            ..#

> 0x00000: ff fc 27                                            ..'

> 0x00000: ff fc 24                                            ..$

--- telnet.rb-1.10 Wed Jan 19 02:49:07 2000 +++ telnet.rb Mon Jan 24 17:16:01 2000 @@ -447,2 +447,23 @@ @dumplog.binmode + def @dumplog.log_dump(dir, x) + len = x.length + addr = 0 + offset = 0 + while 0 < len + if len < 16 + line = x[offset, len] + else + line = x[offset, 16] + end + hexvals = line.unpack('H*')[0] + hexvals.concat ' ' * (32 - hexvals.length) + hexvals = format "%s %s %s %s " * 4, *hexvals.unpack('a2' * 16) + line.gsub! /[\000-\037\177-\377]/n, '.' + printf "%s 0x%5.5x: %s%s\n", dir, addr, hexvals, line + addr += 16 + offset += 16 + len -= 16 + end + print "\n" + end end @@ -461,3 +482,3 @@ @log.write(message) if @options.has_key?("Output_log") - @dumplog.write(message) if @options.has_key?("Dump_log") + @dumplog.log_dump('#', message) if @options.has_key?("Dump_log") @@ -475,3 +496,3 @@ @log.write($!.to_s + "\n") if @options.has_key?("Output_log") - @dumplog.write($!.to_s + "\n") if @options.has_key?("Dump_log") + @dumplog.log_dump('#', $!.to_s + "\n") if @options.has_key?("Dump_log") raise @@ -484,3 +505,3 @@ @log.write(message) if @options.has_key?("Output_log") - @dumplog.write(message) if @options.has_key?("Dump_log") + @dumplog.log_dump('#', message) if @options.has_key?("Dump_log") end @@ -596,3 +617,3 @@ c = @sock.sysread(1024 * 1024) - @dumplog.print(c) if @options.has_key?("Dump_log") + @dumplog.log_dump('<', c) if @options.has_key?("Dump_log") if @options["Telnetmode"] @@ -628,2 +649,3 @@ IO::select(nil, [@sock]) + @dumplog.log_dump('>', string[-length..-1]) if @options.has_key?("Dump_log") length -= @sock.syswrite(string[-length..-1])