[ruby-list:50447] Re: WindowsでTCPServerをホスト指定しないで動かすと他ホストから接続できない
From:
Toshihiko Ichida <dogatana@...>
Date:
2016-11-03 13:40:38 UTC
List:
ruby-list #50447
市田です。 On 2016/11/02 17:12, Shin Kuboaki wrote: > 久保秋と申します。 > > 1)表題の動作は、みなさんも再現する現象でしょうか。 > 2)openメソッドの省略時引数を変更しませんか 複数PCでの確認はできてませんが、host を省略したときは AF_INET6 と出ます。ipv4 と ipv6 との違いで接続可否が決まっているのではと 思います。 server.rb require 'socket' host = ARGV.empty? ? nil : '' server = TCPServer.new(host, 3000) p server.addr sock = server.accept p sock.addr sock.close 実行結果: localhost を指定 > ruby server.rb ["AF_INET6", 3000, "::", "::"] ["AF_INET6", 3000, "::1", "::1"] > ruby server.rb dummy ["AF_INET", 3000, "0.0.0.0", "0.0.0.0"] ["AF_INET", 3000, "127.0.0.1", "127.0.0.1"] 同一ホスト内ですが、IPアドレスを指定して接続すると、 上の場合はipv6 アドレスを指定して接続できました。 下の場合はipv4 アドレスを指定して接続できています。 サーバとクライントが異なるアドレスファミリーの場合は接続できません。