首页 > 其他分享 >.NET Core获取当前IP方法(IPHelper)

.NET Core获取当前IP方法(IPHelper)

时间:2024-03-19 14:59:15浏览次数:27  
标签:Core IPHelper IP ipadd System Address var instanceIp

 

using System.Linq;
using System.Net;
using System.Net.NetworkInformation;
using System.Net.Sockets;
 
namespace XLL.Common.Helper
{
    public class IpHelper
    {
        /// <summary>
        /// 获取当前IP地址
        /// </summary>
        /// <param name="preferredNetworks"></param>
        /// <returns></returns>
        public static string GetCurrentIp(string preferredNetworks)
        {
            var instanceIp = "127.0.0.1";

            try
            {
                // 获取可用网卡
                var nics = NetworkInterface.GetAllNetworkInterfaces()?.Where(network => network.OperationalStatus == OperationalStatus.Up);

                // 获取所有可用网卡IP信息
                var ipCollection = nics?.Select(x => x.GetIPProperties())?.SelectMany(x => x.UnicastAddresses);

                foreach (var ipadd in ipCollection)
                {
                    if (!IPAddress.IsLoopback(ipadd.Address) && ipadd.Address.AddressFamily == AddressFamily.InterNetwork)
                    {
                        if (string.IsNullOrEmpty(preferredNetworks))
                        {
                            instanceIp = ipadd.Address.ToString();
                            break;
                        }

                        if (!ipadd.Address.ToString().StartsWith(preferredNetworks)) continue;
                        instanceIp = ipadd.Address.ToString();
                        break;
                    }
                }
            }
            catch
            {
                // ignored
            }

            return instanceIp;
        }
    }
}

使用

 // 获取当前程序IP
var currentIp = IpHelper.GetCurrentIp(null);

 

标签:Core,IPHelper,IP,ipadd,System,Address,var,instanceIp
From: https://www.cnblogs.com/chocolatexll/p/18082820

相关文章

  • 在 Docker 容器中运行 ASP.NET Core 应用
    创建Docker支持生成Dockerfile文件在解决方案asp.netcore项目下右键添加Dockerfile支持、选择目标OS为Linux,生成Dockerfile文件#Seehttps://aka.ms/customizecontainertolearnhowtocustomizeyourdebugcontainerandhowVisualStudiousesthisDockerfiletobuild......
  • pipeline拉取代码构建上传制品
    pipeline{agent{label'ubuntu'}stages{stage('拉取代码'){steps{checkoutscmGit(branches:[[name:'main']],extensions:[submodule(depth:1,parentCredentials:true,recursiveSub......
  • F5 BIG-IP Next 20.1.0 - 多云安全和应用交付
    F5BIG-IPNext20.1.0-多云安全和应用交付BIG-IP是硬件平台和软件解决方案的集合,提供专注于安全性、可靠性和性能的服务请访问原文链接:https://sysin.org/blog/f5-big-ip-next/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgBIG-IPNext您所熟知和信赖的BIG-......
  • .Net Core微服务 - Seq 日志聚合
    Seq简介Seq是一款使用现代化技术构建的结构化日志存储,查询,分析工具。比起ELK这种组合要轻量级许多。只需要一个安装包就具有数据存储,查询,图表分析功能。它对windows友好,直接提供了安装包。当然也可以使用docker来部署。Seq对于单个用户是免费的,这对于一些小团队并没有什......
  • .Net Core微服务 - Serilog+Seq记录日志
    Serilog介绍Serilog是用于.NET应用程序的诊断日志记录库。它易于设置,具有干净的API,并且可以在所有最新的.NET平台上运行。Serilog通过NuGet分发,项目包括一个Seirlog核心项目Seirlog和很多接收器sinks(超过100个),这些接收是通过插件的方式来实现将日志写入到各种终端、文件......
  • 在Linux/Ubuntu/Debian中使用iFuse访问iOS 设备(例如 iPhone 或 iPad)上的文件可双向复
    iFuse是一款工具,可让你在Linux系统上安装iOS设备(例如iPhone或iPad),使你能够访问其文件系统并与设备传输文件。以下是有关如何使用iFuse的基本指南:安装依赖项:在安装iFuse之前,确保你的系统上已安装所需的依赖项。这些依赖项通常包括libimobiledevice和libim......
  • Maven Archetype自定义工程模板(Eclipse中,其他IDE同理)
    1.问题在Eclipse中,我们想创建一个web项目,使用web-app脚手架进行创建,但是里面的模板并不是我们想要的比如我想自定义pom.xml里面的内容,设定jdk版本,groupID等等,配置Web项目基本依赖以及我想要设置一个基本的index.jsp(符合基本模板的)和web.xml中设置web-app的版本为3.1......
  • Codeforces Round 920 (Div. 3)----->E. Eat the Chip
    一,思路:1.这是一道博弈论的题目(两个人都绝顶聪明,所以每个人都会按最优方案进行)。这题你会发现,两个人从一开始就已经确定了结局。2.如假如他们俩的棋子在竖直方向上距离相差的值是偶数,那么一定就两个结果Alice赢或者平局,反之奇数则是Bob赢或者平局(仔细分析一下就能得知)。3.所......
  • Hadoop平台搭建 配置IP
    一.创建虚拟机二.开启虚拟机进行编辑1.选择中文简体2.选择最小安装3.修改时间4.配置分区5.打开网络,修改主机名6.设置root密码123456三.登录root用户,输入密码四.查看IP地址  无IP动态IP不可使用 改用静态IP五.使用静态IP1.使用root用户修改当前的网卡......
  • LT6911UXE PIN对PIN LT6911UXC HDMI桥接到MIPIDSI/CSI/2 PORT LVDS,支持标准的4K60HZ分
    LT6911UXE描述: LT6911UXE是一款高性能HDMI2.0到MIPIDSI/CSI转换器,可用于VR、智能手机和显示器应用。HDMI2.0输入支持高达6Gbps的数据速率,这为60Hz的视频提供了足够的带宽。同时,还支持HDCP2.3进行数据解密。对于MIPIDSI/CSI输出,LT6911UXE具有可配置的单端口或双端口MIPIDSI......