Вы можете сделать это, запросив сетевые интерфейсы, хотя это будет включать все локальные адреса, поэтому вам, возможно, придется добавить предложение where
, чтобы выбрать тот, который вы хотите, если есть несколько интерфейсов (которые, вероятно, будут). Это, конечно, не прямой порт вашего скрипта, но, надеюсь, будет полезным:
var localAddress =
(from ni in NetworkInterface.GetAllNetworkInterfaces()
where ni.NetworkInterfaceType != NetworkInterfaceType.Loopback
let props = ni.GetIPProperties()
from ipAddress in props.UnicastAddresses
select ipAddress).FirstOrDefault();
Примечание. Если вам нужны только адреса IPv4, вы можете изменить запрос на:
var localAddress =
(from ni in NetworkInterface.GetAllNetworkInterfaces()
where ni.NetworkInterfaceType != NetworkInterfaceType.Loopback
let props = ni.GetIPProperties()
from ipAddress in props.UnicastAddresses
where ipAddress.AddressFamily == AddressFamily.InterNetwork // IPv4
select ipAddress).FirstOrDefault();