(转)用C#实现实现简单的 Ping 的功能,用于测试网络是否已经连通
本文转载自:http://blog.csdn.net/xiamin/archive/2009/02/14/3889696.aspx
用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("www.google.com");</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().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 = ; // 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[].ToString();
}
/// <summary>
/// 局域网搜索事件
/// </summary>
private void LanSearch()
{
string localhost = (Dns.GetHostEntry(Dns.GetHostName()))
.AddressList[].ToString(); //本地主机IP地址
string str = localhost.Substring(, localhost.LastIndexOf("."));
for (int i = ; i < ; i++) //建立255个线程扫描IP
{
string ip = str + "." + i.ToString();
this.Text = ip;
if (Ping(ip))
{
listBox1.Items.Add(ip);
Application.DoEvents();
}
progressBarSearch.Value = progressBarSearch.Value + ;
}
}
private void button4_Click(object sender, EventArgs e)//在线主机
{
LanSearch();
}
(转)用C#实现实现简单的 Ping 的功能,用于测试网络是否已经连通的更多相关文章
- C#实现简单的 Ping 的功能,用于测试网络是否已经联通
/// <summary> /// 是否能 Ping 通指定的主机 /// </summary> /// <param name="ip">ip ...
- C# Ping的例子,可用于测试网络,延迟xx毫秒 C#编写网站测速
C#编写网站测速 WebClient wcl = new WebClient(); Stopwatch spwatch = new Stopwatch(); spwatch.Start(); byte ...
- Ping N个IP测试网络连通性
#-----------------------Smokeping移动节点-------------------##! /bin/bashecho "------------- Statin ...
- CSharpGL(24)用ComputeShader实现一个简单的图像边缘检测功能
CSharpGL(24)用ComputeShader实现一个简单的图像边缘检测功能 效果图 这是红宝书里的例子,在这个例子中,下述功能全部登场,因此这个例子可作为使用Compute Shader的典型 ...
- 构建简单的Maven工程,使用测试驱动的方式开发项目
构建简单的Maven工程很简单,这里写这篇随笔的原因是希望自己能记住几个小点. 一.安装Maven 1.下载maven:https://maven.apache.org/download.cgi 2. ...
- 完成一段简单的Python程序,用于实现一个简单的加减乘除计算器功能
#!/bin/usr/env python#coding=utf-8'''完成一段简单的Python程序,用于实现一个简单的加减乘除计算器功能'''try: a=int(raw_input(" ...
- Selenium + PhantomJS + python 简单实现爬虫的功能
Selenium 一.简介 selenium是一个用于Web应用自动化程序测试的工具,测试直接运行在浏览器中,就像真正的用户在操作一样 selenium2支持通过驱动真实浏览器(FirfoxDrive ...
- iOS开发——使用技术OC篇&简单九宫格锁屏功能的实现与封装
简单九宫格锁屏功能的实现与封装 首先来看看最后的实现界面. 在这开始看下面的内容之前希望你能先大概思考活着回顾一下如果 你会怎么做,只要知道大概的思路就可以. 由于iphone5指纹解锁的实现是的这个 ...
- 简单 TCP/IP 服务功能
本主题使用每台 Windows 计算机上提供的 Echo 和 Quote of the Day 服务.在所有 Windows 版本中都提供了简单 TCP/IP 服务功能.该功能会提供了以下服务:Cha ...
随机推荐
- ModelForm操作
ModelForm a. class Meta: model, # 对应Model的 fields=None, # 字段 exclude=None, # 排除字段 labels=None, # 提示信 ...
- CentOS服务器安装Anaconda
今天拿到了服务器,但是需要的环境都没有,从头开始配. 需要的环境很多,从装Anaconda开始. 版本相关:输入命令 cat /etc/redhat-release,我的版本是 CentOS Linu ...
- Apple Pay接入详细教程
Apple Pay接入详细教程 来源:Yasin的简书 链接:http://www.jianshu.com/p/738aee78ba52# Apple Pay运行环境:iPhone6以上设备,操作 ...
- makeinfo - 翻译 Texinfo 文档
SYNOPSIS 总览 makeinfo [OPTION]... TEXINFO-FILE... DESCRIPTION 描述 将 Texinfo 源文档翻译为各种其他格式,默认是可以用 Emacs ...
- 解密Qt安装目录的结构
http://c.biancheng.net/view/3866.html 了解 Qt 安装目录的结构虽然不是编程必须的,但是它能练就我们的内功,让我们对 Qt 的编程环境了如指掌.Windows 和 ...
- MFC学习笔记2---简单计算器
前言 学习了鸡啄米网页的前三部分后,我们就可以做一个小软件出来了,我选择先做一个计算器. 这是Win7系统自带的计算器: 为了提升成就感,我将计算器的大部分内容去除,于是就变成这样: 这样就只剩下了1 ...
- Linux架构之Nginx之HTTPS
第52章 Nginx之HTTPS 第52章 Nginx之HTTPS 1.HTTPS安全证书基本概述 1.1 模拟服务器篡改内容 1.1.1 配置目标网站nginx 1.1.2 配置网页 1.1.3 访 ...
- Jmeter--函数助手之随机函数_Random(随机函数)
各函数调用方法如下:1)__Random( , , ),获取值的方式:${__Random( param1,param2 ,param3 )},param1为随机数的下限,param2为随机数的上限, ...
- 北京师范大学第十五届ACM决赛-重现赛 B Borrow Classroom (树 ——LCA )
链接:https://ac.nowcoder.com/acm/contest/3/B 来源:牛客网 Borrow Classroom 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 2 ...
- 写了一个简单的 Mybatis
写了一个简单的 Mybatis,取名 SimpleMybatis . 具备增删改查的基本功能,后续还要添加剩下的基本数据类型和Java集合类型的处理. 脑图中有完整的源码和测试的地址 http://n ...