【问题标题】:bind () to an IPv6 address in windows 7 is Failing with Error code :: WSAEADDRNOTAVAIL (10049)在 Windows 7 中将 () 绑定到 IPv6 地址失败并显示错误代码 :: WSAEADDRNOTAVAIL (10049)
【发布时间】:2011-08-27 00:15:53
【问题描述】:

我正在尝试使用两台 windows-7 机器建立一个私有 ipv6 网络来测试我的应用程序。我已经编写了一个示例代码来测试套接字 API。我创建了一个 IPv6 套接字。当我尝试使用链接本地地址(从 ipconfig 命令获得)bind 时,错误代码为 10049。

请告知,为什么 bind 与 Ipv6 地址在 windows-7 机器上失败?

【问题讨论】:

  • 你能发布一个小代码示例来演示你的问题吗?

标签: windows-7 bind ipv6


【解决方案1】:

如果您使用的是链接本地 IPv6 地址,您可能需要在 sockaddr_in6 结构中设置 sin6_scope_id 字段以指示您要侦听的接口。链接本地地址是不明确的,因为every interface must have a link-local address assigned,它们都使用相同的前缀。 (fe80::/64)

您可能应该 bind() 将您的侦听套接字指向未指定的地址(全零或 ::),所以这不是问题,但对于发送方来说仍然是一个问题。如果不指定sin6_scope_id,系统将不知道在哪个接口上发送数据包。

为避免此问题,最好设置一个支持router advertisements 的 IPv6 路由器,这样您就可以获得global unicast(或至少unique local)地址。

【讨论】:

    猜你喜欢
    • 2020-02-27
    • 1970-01-01
    • 2011-02-20
    • 2017-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    相关资源
    最近更新 更多