代码实现获取局域网使用的所有本地ip(C# ,Net开发)
private void button1_Click(object sender, EventArgs e)//按钮的点击事件
{
getIP();//运行该方法
}
public void getIP()
{
//获取本地机器名
string _myHostName = Dns.GetHostName();
//获取本机IP
string _myHostIP = Dns.GetHostEntry(Dns.GetHostName()).AddressList.FirstOrDefault<IPAddress>(a => a.AddressFamily.ToString().Equals("InterNetwork")).ToString();
//MessageBox.Show(_myHostIP);
//截取IP网段
string ipDuan = _myHostIP.Remove(_myHostIP.LastIndexOf('.'));
//MessageBox.Show(ipDuan);
//枚举网段计算机
Ping myPing = new Ping();
string data = "";
byte[] buffer = Encoding.ASCII.GetBytes(data);
List<string> ipList = new List<string>();
for (int i = 1; i <= 255; i++)
{
string pingIP = ipDuan + "." + i.ToString();
PingReply pingReply = myPing.Send(pingIP, 120, buffer);
if (pingReply.Status == IPStatus.Success)
{
ipList.Add(pingIP);
label1.Text = "答复的主机地址:" + pingReply.Address.ToString() + "\n";
label1.Text += "往返时间:" + pingReply.RoundtripTime.ToString() + "\n";
label1.Text += "生存时间:" + pingReply.Options.Ttl.ToString() + "\n";
label1.Text += "是否控制数据包的分段:" + pingReply.Options.DontFragment.ToString() + "\n";
label1.Text += "缓冲区大小:" + pingReply.Buffer.Length.ToString() + "\n";
label1.Refresh();
ipLists.Text += pingIP;
}
else
{
//label3.Text = pingIP + "不在线";
//label3.Refresh();
}
}
if (ipList.Count>0)
{
for (int i = 0; i < ipList.Count; i++)
{
ipLists.Text += ipList[i] + "\n";
}
}
}