【发布时间】:2020-03-27 13:59:46
【问题描述】:
背景
在我的程序开始时,我使用GetAdaptersAddresses 构建了一个适配器接口地址的链接列表。之后,在创建ipv6 slaac地址后,调用Socket()、Bind()和Listen()都成功,其中IfType是无线的,即IfType71(IF_TYPE_IEEE80211)。我的过滤器参数是family 和ifType。我通过连接和断开以太网电缆进行测试。对于每种情况,我的软件都会找到具有上述参数的活动接口:连接它首先找到以太网,断开连接它没有找到以太网,然后进一步寻找无线接口。相关代码 sn-ps 见 SOUnable to GetUnicastIpAddressEntry after CreateUnicastIpAddressEntry。
问题
但是,如果接口的 IfType 为 6 (IF_TYPE_ETHERNET_CSMACD),则 Socket() 成功,但 Bind() 和当然 Listen() 则失败。
问题
是否还有其他我遗漏的因素或接口参数可以决定结果?
尝试1
循环遍历所有 ipv6 接口,以凭经验确定是否有任何成功。两台机器上都没有。
尝试2
查找scope id并将其附加到地址,但是,我在接口链接列表中没有看到scope id参数。
【问题讨论】:
标签: bind ip-address ipv6 unicast windows-socket-api