0
我有一个系统具有多个网卡,所以多个IP地址,我必须使用初始化需要我的本地地址和远程地址的SDK。C++ WinSock选择本地接口连接
我想自动选择本地端点。目前我正在枚举所有本地地址(通过GetAdaptersAddresses
)检查最佳匹配(是正确的,我应该使用子网掩码)。
但是,假设这个工作是由路由表完成的,是否有任何给定远程地址的Windows API让我回到正确的本地端点?
我有一个系统具有多个网卡,所以多个IP地址,我必须使用初始化需要我的本地地址和远程地址的SDK。C++ WinSock选择本地接口连接
我想自动选择本地端点。目前我正在枚举所有本地地址(通过GetAdaptersAddresses
)检查最佳匹配(是正确的,我应该使用子网掩码)。
但是,假设这个工作是由路由表完成的,是否有任何给定远程地址的Windows API让我回到正确的本地端点?
是否有任何Windows API给定远程地址让我回到正确的本地端点?
看一看GetBestInterface()
和GetBestInterfaceEx()
。
这两个函数都返回一个接口索引。然后,您可以通过枚举具有GetAdaptersInfo()
/GetAdaptersAddresses()
的网络适配器来检索接口的IP,直到找到具有匹配接口索引的适配器。
为什么你需要指定一个特定的本地地址?连接到远程地址时,SDK是否会自动选择合适的本地接口?如果您必须指定地址,是否尝试过使用“0.0.0.0”(IPv4)或“::”(IPv6)通配符地址?这应该让操作系统在SDK尝试连接时决定最佳路线 –