C# 获取本机IP

来源:互联网 发布:java文件压缩中文乱码 编辑:程序博客网 时间:2024/05/31 00:39

方法一:

        private void Form1_Load(object sender, EventArgs e)        {            GetIP();        }        private void GetIP()        {            //本机名             string hostName = Dns.GetHostName();                //会返回所有地址,包括IPv4和IPv6             System.Net.IPAddress[] addressList = Dns.GetHostAddresses(hostName);            //在listbox中列出所有的IP地址包括IPv4和IPv6             foreach (IPAddress ip in addressList)            {                listBox1.Items.Add(ip.ToString());            }            //将IPv4赋值给label6 (addressList[1]代表IPv4,addressList[0]代表IPv6)            label6.Text = addressList[1].ToString();        }

更改后,从多种IP中选出IPv4,并在listBox中显示出来

        private void Form1_Load(object sender, EventArgs e)        {            //本机名            string hostName = Dns.GetHostName();                 //会返回所有地址,包括IPv4和IPv6              System.Net.IPAddress[] addressList = Dns.GetHostAddresses(hostName);             //ip = addressList[1].ToString();            //label1.Text = addressList[0].ToString();            foreach (IPAddress ip in addressList)             {                listBox1.Items.Add(ip.ToString() + "\n");            }            for (int i = 0; i < addressList.Length; i++)            {                if (addressList[i].ToString().Length <= 15)                {                    listBox1.Items.Add(addressList[i].ToString() + "\n");                    ip = addressList[i].ToString();                }            }        }



方法二:

使用IPHostEntry获取本机局域网地址

        private void Form1_Load(object sender, EventArgs e)        {           label6.Text = GetLocalIp();        }        static string GetLocalIp()          {              string hostname = Dns.GetHostName();//得到本机名               IPHostEntry localhost = Dns.GetHostEntry(hostname);              IPAddress localaddr = localhost.AddressList[1];              return localaddr.ToString();          }

方法三:

通过获取CMD里ipconfig命令的结果来得到IP 

要添加引用using System.Diagnostics;

        private void Form1_Load(object sender, EventArgs e)        {            Process cmd = new Process();            cmd.StartInfo.FileName = "ipconfig.exe";//设置程序名               cmd.StartInfo.Arguments = "/all";  //参数               //重定向标准输出               cmd.StartInfo.RedirectStandardOutput = true;            cmd.StartInfo.RedirectStandardInput = true;            cmd.StartInfo.UseShellExecute = false;            cmd.StartInfo.CreateNoWindow = true;//不显示窗口(控制台程序是黑屏)               //cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;//暂时不明白什么意思               /*             收集一下 有备无患             关于:ProcessWindowStyle.Hidden隐藏后如何再显示?             hwndWin32Host = Win32Native.FindWindow(null, win32Exinfo.windowsName);             Win32Native.ShowWindow(hwndWin32Host, 1);     //先FindWindow找到窗口后再ShowWindow             */            cmd.Start();            string info = cmd.StandardOutput.ReadToEnd();            cmd.WaitForExit();            cmd.Close();            textBox1.AppendText(info);                   }

方法四:

通过向网站向一些提供IP查询的网站发送webrequest,然后分析返回的数据流 

string strUrl = "提供IP查询的网站的链接";         Uri uri = new Uri(strUrl);         WebRequest webreq = WebRequest.Create(uri);         Stream s = webreq .GetResponse().GetResponseStream();         StreamReader sr = new StreamReader(s, Encoding.Default);         string all = sr.ReadToEnd();          int i = all.IndexOf("[") + 1;         //分析字符串得到IP          return ip;         /*         我用的是http://www.ip.cn/getip.php?action=getip&ip_url=&from=web            (这种链接很容易找的,百度“IP”得到一些网站,分析一下网站的链接就能得到)         返回的数据是:          <div class="well"><p>当前 IP:<code>0.0.0.0</code> 来自:XX省XX市 电信</p><p>GeoIP: Beijing, China</p></div>          解析这段就行        */



0 0
原创粉丝点击