From: "U.Nakamura" Date: 2004-12-28T15:00:30+09:00 Subject: [ruby-dev:25362] net/telnet.rbでのNULの扱い こんにちは、なかむら(う)です。 ふと思い出したのですが、[ruby-list::40320]からのスレッドで提 示されているnet/telnet.rbの件についてです。 大雑把に話をまとめると、Windows2000付属のtelnetサーバが、なぜ か\x00をいっぱいとりまぜて送ってくる(別にUnicodeというわけで はない)ということらしいので、telnetサーバが悪い、で終わりにし ちゃってもいいかもしれないですが、よく考えると、perlとRubyだ け問題があるにしても、他のtelnetクライアントで問題が出ている という話はついぞ聞いたことがありません。 そこで、RFC854(古いかも)を読んでみると、 NULL (NUL) 0 No Operation と明記されています。 で、ASCIIモードではCRの直後には必ずLFかNULを送れ、とは明記さ れているものの、受信時にNULを意味のある文字として拾えという記 述は存在しないように思えます。 と、いうことは、net/telnet.rbのあるべき挙動としては、受信時は 全てのNULを捨てるべきであるように思うのですが、いかがなもんで しょうか? そう思っていろいろ調べてみると、少なくともpythonのtelnetライ ブラリはそうしているようです。 # perlのは、問題が出ていると言われる通り、Rubyと同じでした ^^; 結論としては、こういうことでどうでしょうか? Index: lib/net/telnet.rb =================================================================== RCS file: /home/cvs/ruby/lib/net/telnet.rb,v retrieving revision 1.27 diff -u -1 -p -r1.27 telnet.rb --- lib/net/telnet.rb 13 May 2004 07:02:18 -0000 1.27 +++ lib/net/telnet.rb 28 Dec 2004 05:59:20 -0000 @@ -440,2 +440,5 @@ module Net + # remove NULL + string = string.gsub(/#{NULL}/no, '') unless @options["Binmode"] + string.gsub(/#{IAC}( それでは。 -- U.Nakamura