区域索引如何与sockaddr_in6结构中的scope_id相关联?IPv6区域索引和scope_id
功能似乎不同平台之间,我很想知道它们是如何相关的。 Windows例如有一个SCOPE_ID structure(以及只是一个32位值)。 Mac OSX只有一个32位值。显然,32位值是要走的路,但它的布局究竟如何?它仍然是最高的4位是“水平”?网络字节顺序如何影响这个?
此外,我假设,在windows下,IP地址(例如FF80 :: 1%1)中给出的区域索引直接转换为上述结构的底部28位。它如何在Mac OSX下使用名称而不是数字(例如FF80 :: 1%en0)工作。我是否将它编码为四个CC?同样,我似乎还记得,linux使用4个字符,它们不可能适用于28位。
那么有人可以向我解释这个烂摊子吗?当我完成后,我真的需要编写一个关于所有这些的教程,因为在网络上有关于ipv6的宝贵信息。
编辑:是网络字节顺序的scope_id?我只是看着从recvfrom返回的scope_id,它似乎是小端顺序......这不可能是正确的吗?
干杯......很好的答案,但我失去了一件事。您的interface_req_t太大,无法放入scope_id字段中... – Goz 2010-07-06 11:38:03
我使用该结构来指定API的接口,在调用中,我可以使用getifaddrs()/ GetAdapterAddresses()来查找匹配的接口#/ scope# 。 – 2010-07-07 02:57:39