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嘗試連接時決定最佳路線 –