首页 > 编程语言 >C# 获取本机IP地址

C# 获取本机IP地址

时间:2024-01-11 13:34:54浏览次数:26  
标签:return string C# ip System 获取 static IP地址 using

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Net.NetworkInformation;

namespace Miracom.MESCore.Utils
{
    /// <summary>
    /// 封装IP相关方法
    /// 包含方法:
    /// + static List getIPAddressList()
    /// + static string getIPAddress()
    /// + static string getIPAddressBySocket()
    /// + static string getIPAddressByNetworkInterface(NetworkInterfaceType _type)
    /// 
    /// </summary>
    /// <Author>CY</Author>
    public static class IPHelper
    {
        /// <summary>
        /// 获取本机所有的IP地址
        /// </summary>
        /// <returns>IP字符串列表</returns>
        public static List<string> getIPAddressList()
        {
            List<string> ipList = new List<string>();
            IPHostEntry ipEntry = Dns.GetHostEntry(Dns.GetHostName());
            foreach (var ip in ipEntry.AddressList)
            {
                ipList.Add("IP Address: " + ip.ToString());
            }
            return ipList;
        }
        /// <summary>
        /// 获取本机IPv4地址
        /// </summary>
        /// <returns>IPv4字符串</returns>
        public static string getIPAddress()
        {
            IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName());
            foreach (IPAddress ip in host.AddressList)
            {
                if (ip.AddressFamily == AddressFamily.InterNetwork)//如果需要获取ipv6地址,使用AddressFamily.InterNetworkV6
                {
                    return ip.ToString();
                }
            }
            return null;
        }
        /// <summary>
        /// 通过使用UDP Socket连接来查看本机IP地址
        /// 因为是获取网络连接中实际使用的IP,所以更准确
        /// </summary>
        /// <returns>IPv4字符串</returns>
        public static string getIPAddressBySocket()
        {
            string localIP = string.Empty;
            using (Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, 0))
            {
                socket.Connect("8.8.8.8", 65530);
                IPEndPoint endPoint = socket.LocalEndPoint as IPEndPoint;
                localIP = endPoint.Address.ToString();
            }
            return localIP;
        }
        /// <summary>
        /// 使用NetworkInterface查看 并返回指定类型的IP地址
        /// </summary>
        /// <param name="_type">可选参数:IP的具体类型,默认为Ethernet类型</param>
        /// <returns>指定的IP字符串</returns>
        public static string getIPAddressByNetworkInterface(NetworkInterfaceType _type = NetworkInterfaceType.Ethernet)
        {
            foreach (NetworkInterface item in NetworkInterface.GetAllNetworkInterfaces())
            {
                if (item.NetworkInterfaceType == _type && item.OperationalStatus == OperationalStatus.Up)
                {
                    foreach (UnicastIPAddressInformation ip in item.GetIPProperties().UnicastAddresses)
                    {
                        if (ip.Address.AddressFamily == AddressFamily.InterNetwork)
                        {
                            return ip.Address.ToString();
                        }
                    }
                }
            }
            return null;
        }

    }
}

 

标签:return,string,C#,ip,System,获取,static,IP地址,using
From: https://www.cnblogs.com/zhufeiyan/p/17958366

相关文章

  • AXI Channel
    AXIChannelaxi与ahb不同就是分为不同的channelwriteaddresschannel-表明一个transaction基本的属性,包含本次传输的地址\类型\大小(多少字节)\包含几次transferwritedatachannel-需要有wdata\字节选通(比如128bit,有多少个字节有效)writeresponse-slave接收到数......
  • 无涯教程-Redis - CONFIG SET 命令函数
    RedisCONFIGSet命令用于在运行时重新配置服务器,而无需重新启动Redis。CONFIGSET-语法以下是RedisCONFIGSet命令的基本语法。redis127.0.0.1:6379>CONFIGSetparametervalueCONFIGSET-示例redis127.0.0.1:6379>CONFIGGet"requirePass"""redis12......
  • linux环境编译 TPC-H tools
    上传压缩包复制修改makefile文件make-fmakefile可以看到dbgen和qgen是新生成的......
  • Top-N推荐算法 Top-N recommendation Algorithms
    引言推荐算法是计算机专业中的一种算法,通过一些计算,能够推测用户喜欢的东西,在互联网环境中应用比较广泛。Top-N算法在生活中非常常见,比如学术论文推荐论文、音乐软件推荐歌曲等。今天看到一篇名叫"ARevisitingStudyofAppropriateOfflineEvaluationforTop-NRecommendati......
  • 玩 inkscape/adobe illustrator 玩的
    如有需要可提供矢量版本挺好玩的......
  • C语言int * (* (*fp1) (int) ) [10]声明是啥意思呢?
    intaa一个int类型的变量int*pp是一个指针变量,指向int类型对象const关键字,除非右边是一个类型说明符,那么它作用于该类型说明符,否则作用于左边的符号constint*p这里const右边是int类型说明符,所以作用于int,a是一个指针变量,指向const的int类型变量*p=1这样使用将会报错,因为指......
  • Conditional Git Configuration 有条件配置Git信息
    本文学习自Blog本文介绍Git的一个特性,具有潜在的实用性。该特性就是“有条件地为Git项目配置Git信息”。这意味着开发者能根据简单的条件设置,为Git项目仓库自动添加或覆盖添加Git配置信息。下面通过一个简单的例子进行说明。在系统层面的Git配置中,添加如下内容:[includeIf"git......
  • 设备制造行业中,CRM系统有哪些功能比较好用?
    近些年,制造业和别的行业一样,经历过翻天覆地的转型。从以分销为基础到客户至上,所有行业都在确定商业模式的全局性变化。在这样的环境下,不管什么规模的设备制造企业都意识到将创新与技术融进业务流程的必要性。CRM管理系统是促进这一转型的核心技术之一,并在其中彰显了主导地位。让......
  • 为什么要用CRM做市场营销?CRM营销功能有哪些优势?
    现如今的企业想要做好营销,不仅仅依赖于一句玄之又玄的slogan亦或是电子邮件的狂轰乱炸。要想做好市场活动营销需要一个前提——那就是CRM管理系统发挥作用的地方。但CRM系统关于营销的功能太多了——对于不太了解的人来说很容易不知所措。那么,CRM系统做好市场销售具备哪些功能?我......
  • CRM系统选型:小微企业适用的CRM有哪些特点?
    小型企业主的日子着实不好过,从营销和销售到客户支持和保留,这些基本都要亲力亲为,才能确保将客户放在首位。如果您要是一个小企业主,那么相信您能懂这个感觉,恨不得自己长出八只手,才能让一切井井有条——其实,您只是需要一个强大的CRM管理系统,就能让这一切变得简单。下面我们从CRM选......