Browse Source

优化获取IP地址的函数

懒得勤快 3 years ago
parent
commit
e21dfc07ab

+ 11 - 0
Masuit.Tools.Abstractions/Extensions/BaseType/StringExtensions.cs

@@ -211,6 +211,17 @@ namespace Masuit.Tools
             return string.IsNullOrEmpty(s) ? value : s;
         }
 
+        /// <summary>
+        /// 转成非null
+        /// </summary>
+        /// <param name="s"></param>
+        /// <param name="valueFactory">为空时的替换值函数</param>
+        /// <returns></returns>
+        public static string IfNullOrEmpty(this string s, Func<string> valueFactory)
+        {
+            return string.IsNullOrEmpty(s) ? valueFactory() : s;
+        }
+
         /// <summary>
         /// 字符串掩码
         /// </summary>

+ 11 - 1
Masuit.Tools.Abstractions/Hardware/SystemInfo.cs

@@ -7,6 +7,7 @@ using System.Linq;
 using System.Management;
 using System.Net;
 using System.Net.NetworkInformation;
+using System.Net.Sockets;
 using System.Runtime.InteropServices;
 using System.Text;
 using System.Threading.Tasks;
@@ -524,7 +525,16 @@ namespace Masuit.Tools.Hardware
         /// <returns></returns>
         public static IPAddress GetLocalUsedIP()
         {
-            return NetworkInterface.GetAllNetworkInterfaces().OrderByDescending(c => c.Speed).Where(c => c.NetworkInterfaceType != NetworkInterfaceType.Loopback && c.OperationalStatus == OperationalStatus.Up).SelectMany(n => n.GetIPProperties().UnicastAddresses.Select(u => u.Address)).FirstOrDefault();
+            return GetLocalUsedIP(AddressFamily.InterNetwork);
+        }
+
+        /// <summary>
+        /// 获取当前使用的IP
+        /// </summary>
+        /// <returns></returns>
+        public static IPAddress GetLocalUsedIP(AddressFamily family)
+        {
+            return NetworkInterface.GetAllNetworkInterfaces().OrderByDescending(c => c.Speed).Where(c => c.NetworkInterfaceType != NetworkInterfaceType.Loopback && c.OperationalStatus == OperationalStatus.Up).Select(t => t.GetIPProperties()).Where(p => p.DhcpServerAddresses.Count > 0).SelectMany(p => p.UnicastAddresses).Select(p => p.Address).FirstOrDefault(p => !(p.IsIPv6Teredo || p.IsIPv6LinkLocal || p.IsIPv6Multicast || p.IsIPv6SiteLocal) && p.AddressFamily == family);
         }
 
         /// <summary>

+ 2 - 2
Masuit.Tools.Abstractions/Masuit.Tools.Abstractions.csproj

@@ -4,7 +4,7 @@
     <LangVersion>latest</LangVersion>
     <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
     <CodeAnalysisRuleSet />
-    <Version>2.4.8.10</Version>
+    <Version>2.4.9</Version>
     <Authors>懒得勤快</Authors>
     <Description>Masuit.Tools基础公共库,包含一些常用的操作类,大都是静态类,加密解密,反射操作,Excel简单导出,权重随机筛选算法,分布式短id,表达式树,linq扩展,文件压缩,多线程下载和FTP客户端,硬件信息,字符串扩展方法,日期时间扩展操作,中国农历,大文件拷贝,图像裁剪,验证码,断点续传,集合扩展等常用封装。</Description>
     <Copyright>懒得勤快,长空X</Copyright>
@@ -43,7 +43,7 @@
 
   <ItemGroup>
     <PackageReference Include="DnsClient" Version="1.6.0" />
-    <PackageReference Include="HtmlSanitizer" Version="7.1.488" />
+    <PackageReference Include="HtmlSanitizer" Version="7.1.512" />
     <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
     <PackageReference Include="System.ComponentModel.Annotations" Version="4.7.0" />
     <PackageReference Include="System.Diagnostics.PerformanceCounter" Version="4.7.0" />

+ 2 - 2
Masuit.Tools.AspNetCore/Masuit.Tools.AspNetCore.csproj

@@ -1,7 +1,7 @@
 <Project Sdk="Microsoft.NET.Sdk.Web">
 
     <PropertyGroup>
-        <TargetFrameworks>netcoreapp2.1;netcoreapp3.1;net5.0;net6.0</TargetFrameworks>
+        <TargetFrameworks>netcoreapp3.1;net5.0;net6.0</TargetFrameworks>
         <Description>
             包含一些AspNetCore常用的工具类。ModelBinder等
             官网教程:https://ldqk.org/55
@@ -18,7 +18,7 @@
         <LangVersion>latest</LangVersion>
         <RepositoryType>Github</RepositoryType>
         <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
-        <Version>1.0.5.10</Version>
+        <Version>1.0.6</Version>
         <FileVersion>1.0</FileVersion>
         <Company>masuit.com</Company>
         <AssemblyVersion>1.0</AssemblyVersion>

+ 2 - 2
Masuit.Tools.Core/Masuit.Tools.Core.csproj

@@ -18,7 +18,7 @@ github:https://github.com/ldqk/Masuit.Tools
         <UserSecretsId>830c282f-f7c1-42be-8651-4cd06ac8e73f</UserSecretsId>
         <RepositoryType>Github</RepositoryType>
         <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
-        <Version>2.4.8.10</Version>
+        <Version>2.4.9</Version>
         <FileVersion>2.4.5.6</FileVersion>
         <Company>masuit.com</Company>
         <AssemblyVersion>2.4.5.6</AssemblyVersion>
@@ -32,7 +32,7 @@ github:https://github.com/ldqk/Masuit.Tools
 
     <ItemGroup>
         <PackageReference Include="DnsClient" Version="1.6.0" />
-        <PackageReference Include="HtmlSanitizer" Version="7.1.488" />
+        <PackageReference Include="HtmlSanitizer" Version="7.1.512" />
         <PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1" PrivateAssets="All" />
         <PackageReference Include="System.Reflection.Emit.Lightweight" Version="4.7.0" />
         <PackageReference Include="SharpCompress" Version="0.31.0" />

+ 1 - 1
Masuit.Tools.Excel/Masuit.Tools.Excel.csproj

@@ -32,7 +32,7 @@
         <PackageReference Include="EPPlus" Version="6.0.4" />
         <PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.1.1" PrivateAssets="All" />
         <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
-        <PackageReference Include="SixLabors.ImageSharp" Version="2.1.1" />
+        <PackageReference Include="SixLabors.ImageSharp" Version="2.1.2" />
     </ItemGroup>
 
 </Project>

+ 1 - 1
Masuit.Tools.Net45/Masuit.Tools.Net45.csproj

@@ -389,7 +389,7 @@
       <Version>1.6.0</Version>
     </PackageReference>
     <PackageReference Include="Microsoft.AspNet.Mvc">
-      <Version>5.2.8</Version>
+      <Version>5.2.9</Version>
     </PackageReference>
     <PackageReference Include="Newtonsoft.Json">
       <Version>13.0.1</Version>

+ 1 - 1
Masuit.Tools.Net45/package.nuspec

@@ -4,7 +4,7 @@
     <!--*-->
     <id>Masuit.Tools.Net45</id>
     <!--*-->
-    <version>2.4.8.10</version>
+    <version>2.4.9</version>
     <title>Masuit.Tools</title>
     <!--*-->
     <authors>懒得勤快</authors>

+ 1 - 1
Masuit.Tools.NoSQL.MongoDBClient/Masuit.Tools.NoSQL.MongoDBClient.csproj

@@ -38,7 +38,7 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="MongoDB.Driver" Version="2.15.1" />
+    <PackageReference Include="MongoDB.Driver" Version="2.16.0" />
   </ItemGroup>
 
 </Project>

+ 2 - 2
Masuit.Tools/Masuit.Tools.csproj

@@ -193,10 +193,10 @@
       <Version>1.6.0</Version>
     </PackageReference>
     <PackageReference Include="HtmlSanitizer">
-      <Version>7.1.488</Version>
+      <Version>7.1.512</Version>
     </PackageReference>
     <PackageReference Include="Microsoft.AspNet.Mvc">
-      <Version>5.2.8</Version>
+      <Version>5.2.9</Version>
     </PackageReference>
     <PackageReference Include="Newtonsoft.Json">
       <Version>13.0.1</Version>

+ 1 - 1
Masuit.Tools/package.nuspec

@@ -4,7 +4,7 @@
     <!--*-->
     <id>Masuit.Tools.Net</id>
     <!--*-->
-    <version>2.4.8.10</version>
+    <version>2.4.9</version>
     <title>Masuit.Tools</title>
     <!--*-->
     <authors>懒得勤快</authors>

+ 3 - 3
Test/Masuit.Tools.Test/Masuit.Tools.Test.csproj

@@ -84,13 +84,13 @@
       <Version>5.0.0</Version>
     </PackageReference>
     <PackageReference Include="Microsoft.AspNet.Mvc">
-      <Version>5.2.8</Version>
+      <Version>5.2.9</Version>
     </PackageReference>
     <PackageReference Include="Microsoft.AspNet.Razor">
-      <Version>3.2.8</Version>
+      <Version>3.2.9</Version>
     </PackageReference>
     <PackageReference Include="Microsoft.AspNet.WebPages">
-      <Version>3.2.8</Version>
+      <Version>3.2.9</Version>
     </PackageReference>
     <PackageReference Include="Microsoft.Web.Infrastructure">
       <Version>2.0.0</Version>