gpt4 book ai didi

sockets - 如何确定将使用哪个网络接口(interface)(IP 地址)将数据包发送到特定 IP 地址?

转载 作者:行者123 更新时间:2023-12-03 11:50:55 29 4
gpt4 key购买 nike

我正在编写一个 SIP 堆栈,我需要在消息中插入一个 IP 地址。该地址必须是用于发送消息的地址。我知道目标 IP 并且需要确定将用于发送消息的 NIC(其地址)....

最佳答案

为了扩展 Remy Lebeau 的评论,GetBestInterfaceEx()是您最好的选择,如果您使用的是 Windows XP 或更新版本。这适用于 IPv4 和 IPv6 地址。

GetBestInterface/GetBestInterfaceEx 返回用于联系某个地址的最合适接口(interface)的索引(称为 IDX)。

然后,您可以通过使用 GetIpAddrTable 获取接口(interface)<->IP 地址映射将该索引映射到本地 IP 地址。或 GetAdaptersAddresses如果您是双堆栈(同时支持 IPv6 和 IPv4)。

遍历该表并找到与 IDX 匹配的 dwIndex(或 IfIndex,在 GetAdaptersAddresses 的情况下)的接口(interface)。

关于sockets - 如何确定将使用哪个网络接口(interface)(IP 地址)将数据包发送到特定 IP 地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2432493/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com