如果套接字绑定(bind)到IN6ADDR_ANY
或INADDR_ANY
,并且您使用诸如recvfrom()
之类的调用在套接字上接收消息。有没有办法找出消息来自哪个接口(interface)?
对于IPv6链接范围消息,我希望recvfrom()
的from参数将把scope_id
字段初始化为接口(interface)ID。不幸的是,在我的测试程序中将其设置为0
。
有人知道找出此信息的方法吗?
最佳答案
除了绑定(bind)到每个接口(interface)之外,我还不知道使用IPv4的方式。
IPv6已添加IPV6_PKTINFO套接字选项以解决此缺点。启用该选项后,struct in6_pktinfo
将作为辅助数据返回。