From 640b71d2c8e0b120dfedbffcca440695c87b81bf Mon Sep 17 00:00:00 2001 From: sssir Date: Tue, 24 Sep 2019 23:22:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=83=A8=E5=88=86linux?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E8=8E=B7=E5=8F=96=E6=9C=AC=E6=9C=BAip?= =?UTF-8?q?=E5=87=BA=E9=94=99=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/DotnetSpider/Common/Framework.cs | 8 +------ src/DotnetSpider/Common/NetworkHelper.cs | 28 ++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 7 deletions(-) create mode 100644 src/DotnetSpider/Common/NetworkHelper.cs diff --git a/src/DotnetSpider/Common/Framework.cs b/src/DotnetSpider/Common/Framework.cs index e6a01b94..e644c4b6 100644 --- a/src/DotnetSpider/Common/Framework.cs +++ b/src/DotnetSpider/Common/Framework.cs @@ -68,13 +68,7 @@ namespace DotnetSpider.Common TotalMemory = (int) (infoDic["MemTotal:"] / 1024); } - var networkInterface = NetworkInterface.GetAllNetworkInterfaces() - .First(i => i.NetworkInterfaceType == NetworkInterfaceType.Ethernet || - i.NetworkInterfaceType == NetworkInterfaceType.Wireless80211); - var unicastAddresses = networkInterface.GetIPProperties().UnicastAddresses; - IpAddress = unicastAddresses.First(a => - a.IPv4Mask.ToString() != "255.255.255.255" && a.Address.AddressFamily == AddressFamily.InterNetwork) - .Address.ToString(); + IpAddress = NetworkHelper.CurrentIpAddress(); OsDescription = $"{Environment.OSVersion.Platform} {Environment.OSVersion.Version}"; } diff --git a/src/DotnetSpider/Common/NetworkHelper.cs b/src/DotnetSpider/Common/NetworkHelper.cs new file mode 100644 index 00000000..58c63862 --- /dev/null +++ b/src/DotnetSpider/Common/NetworkHelper.cs @@ -0,0 +1,28 @@ +using System; +using System.Linq; +using System.Net; +using System.Net.NetworkInformation; +using System.Net.Sockets; + +namespace DotnetSpider.Common +{ + public static class NetworkHelper + { + public static string CurrentIpAddress() + { + var networkInterfaces = NetworkInterface.GetAllNetworkInterfaces() + .Where(i => i.NetworkInterfaceType == NetworkInterfaceType.Ethernet || + i.NetworkInterfaceType == NetworkInterfaceType.Wireless80211); + var unicastAddresses = networkInterfaces + .Select(i => i.GetIPProperties()) + .SelectMany(p => p.UnicastAddresses); + var addressInfo = unicastAddresses + .Where(a => a.IPv4Mask.ToString() != "255.255.255.255" && + a.Address.AddressFamily == AddressFamily.InterNetwork && + !IPAddress.IsLoopback(a.Address)) + .FirstOrDefault(); + var ipAddress = addressInfo?.Address.ToString() ?? "127.0.0.1"; + return ipAddress; + } + } +} \ No newline at end of file