利用C# 获取本机IP地址并且测试IP地址是否能够Ping通
static void Main(string[] args)
{
string hostName = Dns.GetHostName();//本机名
IPAddress[] ipHost = Dns.GetHostAddresses(hostName);//会返回所有地址,包括IPv4和IPv6
foreach (IPAddress ip in ipHost)
{
if (IsRightIP(ip.ToString()))
{
Console.WriteLine(ip.ToString());
IsPingIP(ip.ToString());
}
}
Console.WriteLine();
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)
{
Console.WriteLine("IPv4");
Console.WriteLine(IpEntry.AddressList[i].ToString());
}
if (IpEntry.AddressList[i].AddressFamily==AddressFamily.InterNetworkV6)
{
Console.WriteLine("IPv6");
Console.WriteLine(IpEntry.AddressList[i].ToString());
}
}
Console.ReadKey();
}
///
/// 判断IP地址是否正确
///
///
///
public static bool IsRightIP(string strIPadd)
{
//利用正则表达式判断字符串是否符合IPv4格式
if (Regex.IsMatch(strIPadd, "[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}"))
{
//根据小数点分拆字符串
string[] ips = strIPadd.Split('.');
if (ips.Length == 4 || ips.Length == 6)
{
//如果符合IPv4规则
if (System.Int32.Parse(ips[0]) < 256 && System.Int32.Parse(ips[1]) < 256 & System.Int32.Parse(ips[2]) < 256 & System.Int32.Parse(ips[3]) < 256)
//正确
{
return true;
}
//如果不符合
else
{
//错误
return false;
}
}
else
{
//错误
return false;
}
}
else
{
//错误
return false;
}
}
///
/// Ping IP地址
///
///
///
public static bool IsPingIP(string strIP)
{
try
{
//创建Ping对象
Ping ping = new Ping();
//接受Ping返回值
PingReply reply = ping.Send(strIP, 1000);
if (reply.Status==IPStatus.Success)
{
//Ping通
return true;
}
//Ping失败
return false;
}
catch
{
//Ping失败
return false;
}
}