Самый простой способ будет:
UdpClient u = new UdpClient(remoteAddress, 1);
IPAddress localAddr = ((IPEndPoint)u.Client.LocalEndPoint).Address;
Теперь, если вам нужен объект NetworkInterface, вы делаете что-то вроде:
foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces())
{
IPInterfaceProperties ipProps = nic.GetIPProperties();
// check if localAddr is in ipProps.UnicastAddresses
}
Другой вариант - использовать P / Invoke и вызвать GetBestInterface () , чтобы получить индекс интерфейса, а затем снова выполнить цикл по всем сетевым интерфейсам. Как и прежде, вам придется копаться в GetIPProperties()
, чтобы перейти к свойству IPv4InterfaceProperties.Index
.