using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; namespace GetIPv4Application
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void btn_getIPv4_Click(object sender, EventArgs e)
{
ShowIP();
}
void ShowIP()
{
richTextBoxIPv4.Text = string.Empty;
//ipv4地址也可能不止一个
foreach (string ip in GetLocalIpv4())
{
this.richTextBoxIPv4.AppendText(ip.ToString()+"\n");
}
return;
}
string[] GetLocalIpv4()
{
//事先不知道ip的个数,数组长度未知,因此用StringCollection储存
IPAddress[] localIPs;
localIPs = Dns.GetHostAddresses(Dns.GetHostName());
StringCollection IpCollection = new StringCollection();
foreach (IPAddress ip in localIPs)
{
//根据AddressFamily判断是否为ipv4,如果是InterNetWorkV6则为ipv6
if (ip.AddressFamily == AddressFamily.InterNetwork)
IpCollection.Add(ip.ToString());
}
string[] IpArray = new string[IpCollection.Count];
IpCollection.CopyTo(IpArray, 0);
return IpArray;
}
}
}
注:当有虚拟网卡时会获取到多个ip地址。