C# — 获取本机IP

@[C# — 获取本机IP]

C# — 获得本机IP

概述

使用时间戳(yyMMddHHmmss)生成唯一ID,多线程操作时不保证唯一性,需要添加物理唯一和扩大时间戳的精度(yyMMddHHmmssfff)。

获取本机IP:

using System.Net;
using System.Net.Sockets;

    public class IPUtil
    {
        /// 
        /// 获取本机地址
        /// 
        /// 
        public static string GetLocalIP()
        {
            String localIP = String.Empty;
            try
            {
                string HostName = Dns.GetHostName();//得到主机名
                IPHostEntry IpEntry = Dns.GetHostEntry(HostName);//解析主机名
                for (int i=0;i< IpEntry.AddressList.Length;i++)
                {
                    //从IP地址列表中筛选出IPv4类型的IP地址
                    //AddressFamily.InterNetwork表示此IP为IPv4,
                    //AddressFamily.InterNetworkV6表示此地址为IPv6类型
                    if (IpEntry.AddressList[i].AddressFamily== AddressFamily.InterNetwork)
                    {
                        localIP = IpEntry.AddressList[i].ToString();
                        break;
                    }
                }

            } catch (Exception ex)
            {
                //logHandle.ErrorLog("IPUtil", "GetLocalIP", ex);
            }
            return localIP;
        }
   }

设置新的唯一编号:

            //设置新编号时,增加物理地址,确保唯一性
            String ip =IPUtil.GetLocalIP();// 获取本机地址
            if (ip==String.Empty|| ip.IndexOf('.')<0)
            {
                //MessageBox.Show("生成编号失败(获取本机地址失败)");
                return;
            }
            String[] ipArr=ip.Split('.');
            string suffix = ipArr[ipArr.Length-1];
            suffix = String.Format("{0:D3}", int.Parse(suffix));
            string unique = suffix+DateTime.Now.ToString("yyMMddHHmmssfff");

你可能感兴趣的:(C#)