本地主机上的哪个网络接口连接到主机B

问题描述:

假设我的计算机A连接到多个网络。在这些网络之一上是另一个主机B。本地主机上的哪个网络接口连接到主机B

是否有可能通过主机A的C#确定主机B如何到达主机A?该解决方案必须同时处理IPv4和IPv6。它不需要处理NAT。

有人可能会说,我想弄清楚其中的主机A的网络接口,一个连接到主机B

这是永远不可能告诉另一台主机将您的联络方式,因为它是由该主机的路由表。

但是,通常路由是对称的,这意味着远程主机将以到达该远程主机的相同方式到达您。您可以检查路由表。在Windows上,该命令将是“route -n”。这可能通过某些API暴露。

如果主机A和B已连接,则该连接将显示在netstat中。

如果你控制具有连接套接字的代码,那么你只需要获得对等体。对不起,我没有C#代码来做到这一点。

你钓到的鱼是How to detemine which network interface (ip address) will be used to send a packet to a specific ip address?

你可以找到的PInvoke为GetBestAddress。我无法找到支持IPv6的GetBestAddressEx的一些pinvoke示例