windows-7 - 将 () 绑定(bind)到 Windows 7 中的 IPv6 地址失败,错误代码::WSAEADDRNOTAVAIL (10049)

标签 windows-7 bind ipv6

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

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

最佳答案

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

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

为避免此问题,最好设置一个执行 router advertisements 的 IPv6 路由器。 , 所以你可以得到 global unicast (或者至少是 unique local )地址。

关于windows-7 - 将 () 绑定(bind)到 Windows 7 中的 IPv6 地址失败,错误代码::WSAEADDRNOTAVAIL (10049),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6027401/

相关文章:

unicode - 记事本可以读取UTF-32吗?

c# - 带有 Windows 7 拖动增强功能的无边框窗体

javascript - 在初始点击事件 (A) 之后绑定(bind)点击事件 (B) 会导致事件 B 立即触发

python - 强制 python mechanize/urllib2 只使用 A 请求?

linux - 确定适配器的首选 IPv6 源地址

.net - 确定哪个 w3wp.exe 进程属于 Windows 7/IIS7.5 中的哪个 App Pool?

windows-7 - 读取远程专用队列的 MSMQ 问题(再次)

javascript - javascript 的绑定(bind)方法似乎没有按预期工作

Haskell:将lambda表达式与绑定(bind)函数一起使用时的变量范围

postgresql - 为什么我的 Web 应用程序使用 ipv6 连接到本地 postgres