用C#实现实现简单的 Ping 的功能,用于测试网络是否已经联通

简介:

用C#实现实现简单的 Ping 的功能,用于测试网络是否已经联通

1. 根据IP地址获得主机名称

/// <summary>
/// 根据IP地址获得主机名称
/// </summary>
/// <param name="ip">主机的IP地址</param>
/// <returns>主机名称</returns>
public string GetHostNameByIp(string ip)
{
ip = ip.Trim();
if (ip == string.Empty)
return string.Empty;
try
{
// 是否 Ping 的通
if (this.Ping(ip))
{
System.Net.IPHostEntry host = System.Net.Dns.GetHostEntry(ip);
return host.HostName;
}
else
return string.Empty;
}
catch (Exception)
{
return string.Empty;
}
}

说明:如果你的电脑可以上网你甚至可以查询到:IP地址“64.233.189.104”是 Google 的一个名为“hk-in-f104.google.com”的主机的IP地址。


关于代码中 this.Ping(ip) 方法后面再说。

既然说了如何“根据IP地址获得主机名称”,那就要再说说如何“根据主机名获得主机的IP地址”吧。

2. 根据主机名获得主机的IP地址

/// <summary>
/// 根据主机名(域名)获得主机的IP地址
/// </summary>
/// <param name="hostName">主机名或域名</param>
/// <example> GetIPByDomain("http://www.google.com%22);%3c/example>
/// <returns>主机的IP地址</returns>
public string GetIpByHostName(string hostName)
{
hostName = hostName.Trim();
if (hostName == string.Empty)
return string.Empty;
try
{
System.Net.IPHostEntry host = System.Net.Dns.GetHostEntry(hostName);
return host.AddressList.GetValue(0).ToString();
}
catch (Exception)
{
return string.Empty;
}
}

说明:如果你的电脑可以上网你甚至可以查询到:“www.google.com”的IP地址是“64.233.189.104”。

最后,再说说C#实现简单的 Ping 的功能,用于测试网络是否已经联通。

3. C#实现简单的 Ping 的功能,用于测试网络是否已经联通

/// <summary>
/// 是否能 Ping 通指定的主机
/// </summary>
/// <param name="ip">ip 地址或主机名或域名</param>
/// <returns>true 通,false 不通</returns>
public bool Ping(string ip)
{
System.Net.NetworkInformation.Ping p = new System.Net.NetworkInformation.Ping();
System.Net.NetworkInformation.PingOptions options = new System.Net.NetworkInformation.PingOptions();
options.DontFragment = true;
string data = "Test Data!";
byte[] buffer = Encoding.ASCII.GetBytes(data);
int timeout = 1000; // Timeout 时间,单位:毫秒
System.Net.NetworkInformation.PingReply reply = p.Send(ip, timeout, buffer, options);
if (reply.Status == System.Net.NetworkInformation.IPStatus.Success)
return true;
else
return false;
}

private void button1_Click(object sender, EventArgs e)//获取IP

{ textBox2.Text=GetIpByHostName(textBox1.Text); }

private void button2_Click(object sender, EventArgs e)//获取主机名

{ textBox1.Text=GetHostNameByIp(textBox2.Text); }

private void button3_Click(object sender, EventArgs e)//获取本机IP

{

string hostName = System.Net.Dns.GetHostName();

IPHostEntry ipEntry = System.Net.Dns.GetHostEntry(hostName);

//Dns.GetHostByName(myName);已过时

IPAddress[] addr = ipEntry.AddressList;

textBox2.Text = addr[0].ToString();

}

/// <summary>

/// 局域网搜索事件

/// </summary>

private void LanSearch()

{

string localhost = (Dns.GetHostEntry(Dns.GetHostName()))

.AddressList[0].ToString(); //本地主机IP地址

string str = localhost.Substring(0, localhost.LastIndexOf("."));

for (int i = 0; i < 255; i++) //建立255个线程扫描IP

{

string ip = str + "." + i.ToString();

this.Text = ip;

if (Ping(ip))

{

listBox1.Items.Add(ip);

Application.DoEvents();

}

progressBarSearch.Value = progressBarSearch.Value + 1;

}

}

private void button4_Click(object sender, EventArgs e)//在线主机

{

LanSearch();

}




本文转自94cool博客园博客,原文链接:http://www.cnblogs.com/94cool/archive/2009/08/13/1545575.html,如需转载请自行联系原作者


相关文章
|
29天前
|
监控 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C#)
39 0
|
29天前
|
数据采集 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用ForceIP强制修改网口IP功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用ForceIP强制修改网口IP功能(C#)
18 0
|
29天前
|
安全 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用短曝光功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用短曝光功能(C#)
27 0
|
29天前
|
编解码 监控 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Binning像素合并功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Binning像素合并功能(C#)
11 0
|
29天前
|
存储 编解码 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用UserSet功能保存和载入相机的各类参数(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用UserSet功能保存和载入相机的各类参数(C#)
29 0
|
3月前
|
JavaScript 前端开发 Java
javascript实现像java、c#之类的sleep暂停的函数功能
javascript实现像java、c#之类的sleep暂停的函数功能
35 0
|
29天前
|
存储 数据管理 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机本身的数据保存(CustomData)功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机本身的数据保存(CustomData)功能(C#)
21 0
|
29天前
|
编解码 监控 开发工具
Baumer工业相机堡盟工业相机如何通过BGAPI SDK设置相机的图像剪切(ROI)功能(C#)
Baumer工业相机堡盟工业相机如何通过BGAPI SDK设置相机的图像剪切(ROI)功能(C#)
30 0
|
5天前
|
SQL 分布式计算 DataWorks
dataworks数据集问题之测试联通性报错如何解决
DataWorks数据集是指在阿里云DataWorks平台内创建、管理的数据集合;本合集将介绍DataWorks数据集的创建和使用方法,以及常见的配置问题和解决方法。
20 2
|
5天前
|
编译器 C# 开发工具
C# 12 中新增的八大功能你都知道吗?
C# 12 中新增的八大功能你都知道吗?

热门文章

最新文章

相关产品

  • 云迁移中心