背景
在我的程序开始时,我使用GetAdaptersAddresses构建了一个适配器接口地址的链接列表。后来,创建ipv6 slaac地址后,调用Socket(),Bind()都Listen()成功了,那里IfType是Wireless,也就是IfType71( 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在接口链接列表中看到该参数。