From: TAKEUCHi Kahori Date: 2000-09-02T13:21:50+09:00 Subject: [ruby-list:24702] socket が動きません (rbcw146 on WinNT4SP6) こんにちは。たけうちかほりです。 昨日、会社の自分のマシンを NT4.0(SP6) にしました。で、 http://jarh.hoops.livedoor.com/ から、 ・ruby 1.4.6 (2000-08-16) [i386-cygwin] (http://jarh.hoops.livedoor.com/ruby/rbcw146.exe) ・cygwin1.dll - 1.1.4(0.26/3/2) 2000-08-03 20:53 (http://jarh.hoops.livedoor.com/cygwin/cygwin1-1.1.4.dll.zip) を持ってきてインストールしたんですが socket が動かなくて困っています。 TCPsocket の open & peeraddr 取得 & close ならエラーは出ないんですが、 write するとコケます。 下のスクリプト(sockettest.rb)を実行すると require 'socket' s = TCPsocket.open("xxx.xxx.co.jp", 80) p s.peeraddr s.write "GET / HTTP/1.0\n\n" while s.gets print end s.close 結果が下のようになります。 D:\kahori\ruby>ruby sockettest.rb ["AF_INET", 80, "xxx.xxx.co.jp", "xxx.xxx.xxx.xxx"] sockettest.rb:5:in `write': Invalid argument (Errno::EINVAL) from sockettest.rb:5 Invalid argument というのは何なんでしょう。どんな場合に起こりますか? s.write "GET / HTTP/1.0\n\n" を s.write (引数なし) にすると当然 sockettest.rb:5:in `write': wrong # of arguments(0 for 1) (ArgumentError) になります。s.write nil (引数 nil) だとエラーは起きないで、ソケット から来るはずの文字列を待ち続けます。 どなたかアドバイス下さいませ。よろしくお願いいたします。 -- たけうちかほり takeuchi@kahori.com