背景
在我的程序开始时,我使用GetAdaptersAddresses构建了一个适配器接口地址的链接列表。后来,创建ipv6 slaac
地址后,调用Socket()
,Bind()
都Listen()
成功了,那里IfType
是Wireless,也就是IfType
71( IF_TYPE_IEEE80211
)。我的过滤器参数是family
和ifType
。我通过连接和断开以太网电缆进行测试。对于每种情况,我的软件都会找到具有上述参数的活动接口:连接它首先找到以太网,断开连接它没有找到以太网,然后进一步寻找无线接口。有关相关代码片段,请参阅 CreateUnicastIpAddressEntry 之后的 SO Unable to GetUnicastIpAddressEntry 。
问题
但是,如果接口IfType
是 6 ( IF_TYPE_ETHERNET_CSMACD
),则Socket()
成功,但Bind()
当然Listen()
会失败。
问题
是否还有其他我遗漏的因素或接口参数可以决定结果?
尝试1
循环遍历所有 ipv6 接口只是为了凭经验确定是否有任何成功。两台机器上都没有。
尝试2
查找scope id
并将其附加到地址,但是,我没有scope id
在接口链接列表中看到该参数。