[ruby-list:50452] Re: WindowsでTCPServerをホスト指定しないで動かすと他ホストから接続できない
From:
Shin Kuboaki <kuboaki@...>
Date:
2016-11-06 14:29:06 UTC
List:
ruby-list #50452
久保秋です。 市田さん、なかむらさん、ありがとうございます。 個人的には、このようなことに頭を悩ませても仕方ないと思うので、 >> Socket.tcp_server_socketsとかSocket.tcp_server_loopとかいった >> 素敵なメソッドを使うのがよろしいのではないかと思います。 > > はい、そのほうがよさそうなことがわかりました。 ただ元々、UnixとWindowsとで仕様が異なる > > > UNIX プラットフォームでは、IPv4 と IPv6 の両方の受信接続を同一の > > ソケットで受信します。Microsoft Windows は、IPv4 と IPv6 の両方の > > 受信接続を同一のソケットで受信できません。 > https://www.ibm.com/support/knowledgecenter/ja/SSKTMJ_9.0.1/ > admin/plan_receivingincomingconnectionsonipv6oripv4sockets_c.html > > まさに、私はこのことがわかっておらず、 TCPServerの動作に一貫性がないと誤解していたようです。 > とは言え > https://github.com/dogatana/ruby/blob/trunk/ext/socket/ipsocket.c#L65 > が(何となく)IPv4 を返す工夫に見えます。 > > INET6 の定義の意味を知らずに言うのもおかしいのですが、 > !defined(INET6) の ! がなければUnixとWindowsとで同じ挙動になって > それはそれで嬉しい気がします。 > こちらについては、識者の方に議論の余地があるなら、検討いただければと思います。 -- kuboaki