C# 获取本机IP地址以及转换字符串

本文提供了IP地址在字符串形式与整数形式之间的相互转换方法,并介绍了如何获取本机的IP地址。同时,还包含了验证IP地址有效性的正则表达式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        /// <summary>
        /// IP地址转化
        /// </summary>
        /// <param name="ipaddr">整型的IP地址</param>
        /// <returns>字符串的IP地址</returns>
        private string UintIPToStringIP(uint ipaddr)
        {
            string hexStr = ipaddr.ToString("X8");
            int ip1 = Convert.ToInt32(hexStr.Substring(0, 2), 16);
            int ip2 = Convert.ToInt32(hexStr.Substring(2, 2), 16);
            int ip3 = Convert.ToInt32(hexStr.Substring(4, 2), 16);
            int ip4 = Convert.ToInt32(hexStr.Substring(6, 2), 16);
            return ip4 + "." + ip3 + "." + ip2 + "." + ip1;
        }

        /// <summary>
        /// IP地址转化
        /// </summary>
        /// <param name="ipaddr">字符串的IP地址</param>
        /// <returns>整型的IP地址</returns>
        private uint StringIPToUintIP(string ipaddr)
        {
            string[] ips = ipaddr.Split('.');
            return Convert.ToUInt32(ips[3]) * 256 * 256 * 256 + Convert.ToUInt32(ips[2]) * 256 * 256 + Convert.ToUInt32(ips[1]) * 256 + Convert.ToUInt32(ips[0]);          
        }

        /// <summary>
        /// 获取本机IP地址
        /// </summary>
        /// <returns></returns>
        private string GetLocalIPAddress()
        {
            string resultIP = string.Empty;
            System.Net.IPAddress[] ips = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()).AddressList;
            foreach (System.Net.IPAddress ip in ips)
            {
                if (IsCorrentIP(ip.ToString()))
                {
                    resultIP = ip.ToString();
                    break;
                }
            }
            return resultIP;
        }

        /// <summary>
        /// 验证IP地址是否有效
        /// </summary>
        /// <param name="ip"></param>
        /// <returns></returns>
        private bool IsCorrentIP(string ip)
        {
            string pattrn = @"(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])";
            if (System.Text.RegularExpressions.Regex.IsMatch(ip, pattrn))
            {
                return true;
            }
            else
            {
                return false;
            }
        }

 

转载于:https://www.cnblogs.com/wangboke/p/6112226.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值