我正在使用 yesod 0.9.2.2 运行“cabal install && yesod devel”,但它只使用 ipv6 进行监听。有谁知道如何配置它来监听 ipv4 吗?我在 Windows 7 上运行它。
谢谢
到目前为止,您描述的症状已经在 BSD 和 Debian 上观察到,但看起来 Windows 也受到了影响。
这是 Yesod 的一个已知问题,或者实际上是 Wasp 的问题,或者更准确地说,是网络库的问题。跟进这个问题的一个地方是这个 githup 问题或当前关于 haskell-lists的讨论,这部分是由你的问题引起的。
虽然我目前没有类似的设置来测试这一点,但您可能会发现,如果有东西正在侦听 IPv6 端口 X,并且没有任何东西在同一端口 X 上侦听 IPv4,那么 IPv6 端口将接收连接。IPv6 服务器将看到来自“IPv6”地址 ::ffff:1.2.3.4 的连接(这称为 IPv4 映射的 IPv6 地址)。内核提供 IPv6 和 IPv4 端点之间的转换。IPv4 通过网络使用。
我不了解 Windows 7,但某些系统(例如某些Linux 发行版)默认情况下会通过设置特定的 sysctl 禁用此功能,这意味着服务器需要绑定到单独的 IPv4 和 IPv6 套接字(即,根据我的经验,这是更可取的选择)。应用程序可以自由地覆盖此默认行为。