Dyl*_*ens 3 networking ipv6 boost-asio
我正在尝试将 Boost 用于某些 IPv6 和多播网络通信。我需要构造一个使用特定网络接口索引的 IPv6 多播套接字。
我能够在 boost/asio/ip/detail/socket_option.hpp 中找到正确的多播选项来设置网络接口索引:explicit multicast_request(const boost::asio::ip::address_v6& multicast_address, unsigned long network_interface = 0)
问题是,我不知道如何找到“network_interface”参数的正确值。有没有办法使用我可以提供的本地 IPv6 地址获取 network_interface 值?我查看了文档和示例,但找不到任何内容。
——迪伦
每个平台都提供 API 来枚举网络接口,例如getifaddrs对于许多 Unix 和GetAdaptersAddressesWindows。请注意,在 Windows 上,IPv4 和 IPv6 适配器有一个单独的数字空间,这使得 API 调用if_nametoindex非常混乱。
您可能希望检查我在 OpenPGM 中使用的方法的可移植性,考虑到 Windows 并没有真正有用的适配器名称:
http://code.google.com/p/openpgm/source/browse/trunk/openpgm/pgm/getifaddrs.c
http://code.google.com/p/openpgm/source/browse/trunk/openpgm/pgm/nametoindex.c
http://code.google.com/p/openpgm/source/browse/trunk/openpgm/pgm/indextoaddr.c
http://code.google.com/p/openpgm/source/browse/trunk/openpgm/pgm/indextoname.c
| 归档时间: |
|
| 查看次数: |
1660 次 |
| 最近记录: |