From: Mitsuru Ogino Date: 2003-08-12T23:21:49+09:00 Subject: [ruby-list:38091] Re: ポートが閉じているときの例外など 荻野です。 connect(2) というのは、すなおに connect(2) だということにやっと 気がつきました。でも、ruby レベルで呼び出すのに Errno::EINVAL と いうのは普通はあり得ないように思うのですが… On 2003.8.12, at 20:33 Asia/Tokyo, IWAOKA Masahiro wrote: >> バージョンよりも、システムによるのかも知れません。少なくとも >> linux 2.4.20ではECONNREFUSEDになりました。 > > 自ホストと他ホストの差じゃないでしょうか? FreeBSD 4.8-STABLE では > 以下のようになります。 FreeBSD 5.1R(+いくつかのセキュリティパッチ)では、差はないようです。 $ ruby -v -rsocket -e 'TCPSocket.new("127.0.0.1", 12312)' ruby 1.6.8 (2003-03-26) [i386-freebsd5] -e:1:in `new': Invalid argument - "connect(2)" (Errno::EINVAL) from -e:1 $ ruby -v -rsocket -e 'TCPSocket.new("192.168.0.2", 12312)' ruby 1.6.8 (2003-03-26) [i386-freebsd5] -e:1:in `new': Invalid argument - "connect(2)" (Errno::EINVAL) from -e:1 まわりに他のマシンというと Debian Woody マシンしかないのですが、 $ uname -a Linux ursula 2.4.18 #1 Thu Aug 8 12:47:02 JST 2002 i686 unknown では、 $ ruby -v -rsocket -e 'TCPSocket.new("localhost", 12312)' ruby 1.6.7 (2002-03-19) [i386-linux] -e:1:in `new': Connection refused - "connect(2)" (Errno::ECONNREFUSED) from -e:1 $ ruby -v -rsocket -e 'TCPSocket.new("xxx.xxx.xxx.xxx", 12312)' ruby 1.6.7 (2002-03-19) [i386-linux] -e:1:in `new': Connection refused - "connect(2)" (Errno::ECONNREFUSED) from -e:1 でした。したがってどうもなかださんのおっしゃるとおり、システムに よることは間違いないようです。FreeBSD のポーティングの問題かも知 れませんが。5.1R, 4.8R でも差がありますし。 昨日のメールには書き漏らしていましたが、ruby 自体は FreeBSD 5.1R 付属の Ports システムを使用して make install だけしたものです。 -- 荻野 充 (おぎの みつる) ... 「萩(はぎ)」にあらず Verama Systems Key fingerprint = 7F26 5414 1805 F31B 1617 10B7 C117 07AE 1691 9BD1