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()+" "); } 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地址。