[#50446] WindowsでTCPServerをホスト指定しないで動かすと他ホストから接続できない — Shin Kuboaki <kuboaki@...>

久保秋と申します。

11 messages 2016/11/02
[#50447] Re: WindowsでTCPServerをホスト指定しないで動かすと他ホストから接続できない — Toshihiko Ichida <dogatana@...> 2016/11/03

市田です。

[#50448] Re: WindowsでTCPServerをホスト指定しないで動かすと他ホストから接続できない — Toshihiko Ichida <dogatana@...> 2016/11/04

市田です。

[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

In This Thread