c#实现验证某个IP地址是否能ping通
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Net.NetworkInformation;
using System.Threading;
namespace Manager.Common
{
public static class NetCommon{
/// <summary>
/// 验证IP地址字符串的正确性
/// </summary>
/// <param name="strIP">要验证的IP地址字符串</param>
/// <returns>格式是否正确,正确为 true 否则为 false</returns>
public static bool CheckIPAddr(string strIP)
{
if (string.IsNullOrEmpty(strIP))
{
return false;
}
// 保持要返回的信息
bool bRes = true;
int iTmp = ; // 保持每个由“.”分隔的整型
string[] ipSplit = strIP.Split('.');
if (ipSplit.Length < || string.IsNullOrEmpty(ipSplit[]) ||
string.IsNullOrEmpty(ipSplit[]) ||
string.IsNullOrEmpty(ipSplit[]) ||
string.IsNullOrEmpty(ipSplit[]))
{
bRes = false;
}
else
{
for (int i = ; i < ipSplit.Length; i++)
{
if (!int.TryParse(ipSplit[i], out iTmp) || iTmp < || iTmp > )
{
bRes = false;
break;
}
}
} return bRes;
}
/// <summary>
/// 验证某个IP是否可ping通
/// </summary>
/// <param name="strIP">要验证的IP</param>
/// <returns>是否可连通 是:true 否:false</returns>
public static bool TestNetConnectity(string strIP)
{
if (!NetUtil.CheckIPAddr(strIP))
{
return false;
}
// Windows L2TP VPN和非Windows VPN使用ping VPN服务端的方式获取是否可以连通
Ping pingSender = new Ping();
PingOptions options = new PingOptions(); // Use the default Ttl value which is 128,
// but change the fragmentation behavior.
options.DontFragment = true; // Create a buffer of 32 bytes of data to be transmitted.
string data = "testtesttesttesttesttesttesttest";
byte[] buffer = Encoding.ASCII.GetBytes(data);
int timeout = ;
PingReply reply = pingSender.Send(strIP, timeout, buffer, options); return (reply.Status == IPStatus.Success);
}
/// <summary>
/// 连续几次查看是否某个IP可以PING通
/// </summary>
/// <param name="strIP">ping的IP地址</param>
/// <param name="WaitSecond">每次间隔时间,单位:秒</param>
/// <param name="iTestTimes">测试次数</param>
/// <returns>是否可以连通</returns>
public static bool TestNetConnected(string strIP, int WaitSecond, int iTestTimes)
{
for (int i = ; i < iTestTimes - ; i++)
{
if (TestNetConnectity(strIP))
{
return true;
}
Thread.Sleep(WaitSecond * );
} return TestNetConnectity(strIP);
}
}
}
c#实现验证某个IP地址是否能ping通的更多相关文章
- red hat7 系统可以ping通ip地址但是不能ping通域名
在red hat7中ifconfig后出现这样的情况,ens33是物理网卡,与eth0一样只是不同的名字.但是只能ping通ip地址不能ping通域名. 解决方法: 在文件 /etc/resolv.c ...
- “ping某个IP地址,如果ping不通则在dos窗口或弹出MsgBox提示原因”的批处理bat命令
“ping某个IP地址,如果ping不通则在dos窗口提示原因”的批处理bat命令 @echo off&setlocal enabledelayedexpansion title Ping检测 ...
- iptables常用规则:屏蔽IP地址、禁用ping、协议设置、NAT与转发、负载平衡、自定义链
iptables常用规则:屏蔽IP地址.禁用ping.协议设置.NAT与转发.负载平衡.自定义链 时间 -- :: IT社区推荐资讯 原文 http://itindex.net/detail/4772 ...
- 解决可以Ping通ip地址,但Ping不通域名的思路
在正常的网络故障处理中,ping命令是大家经常用到的,出现ping通ip地址,但ping域名是出现超时情况,一般是由于TCP/IP协议中的“DNS设置”不正确,请检查其中的配置,或者更换其他可用的DN ...
- 常用正则表达式大全,手机、电话、邮箱、身份证(最严格的验证)、IP地址、网址、日期等
<script type="text/javascript">/* * 手机号码格式 * 只允许以13.15.18开头的号码 * 如:13012345678.15929 ...
- Android中验证输入是否为汉字及手机号,邮箱验证,IP地址可用port号验证
1,验证是否为汉字 // 验证昵称 private boolean verifyNickname() { String nickname = edt_username.getText().toStri ...
- 正则表达式验证合法的IP地址
IPv4地址 最初设计互联网络时,为了便于寻址和层次化构造网络,每个IP地址包括两个标识码(ID),即网络ID和主机ID.同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上的 ...
- linux永久更改eth0的ip地址后仍然ping不通过
编辑文件/etc/sysconfig/network-scripts/ifcfg-eth0 引用:DEVICE=eth0 //设备名称,不要修改 BOOTPROTO=static //不要修改 BRO ...
- Linux下可以ping ip地址但无法ping域名解决方法
分析:当前系统无法解决域名至ip地址故障. 步骤阅读 2 三:解决过程: 1.分析dns故障: 2.物理机可以ping 地址,但无法ping域名: 3.检查/etc/resolv.conf: 注: ( ...
随机推荐
- lombok插件使用
1.1 lombok介绍 lombok 是一个可以帮助我们简化java代码编写的工具类,尤其是简化javabean的编写,可以通过采用注解的方式,消除代码中的构造方法,getter/setter等代码 ...
- Linux系统下实时监控网口速率的shell脚本
修改后的脚本文件 #!/bin/bash #Modified by lifei4@datangmobile.cn echo ===DTmobile NetSpeedMonitor=== sleep 1 ...
- 6.Insert Documents-官方文档摘录
总结 1.插入单文档 db.inventory.insertOne( { item: "canvas", qty: , tags: , w: 35.5, uom: "cm ...
- JavaScript教程3-js深入
1.JS流程控制语句 (1).if 判断 if 语句是基于条件成立时才执行相应的代码. if...else 语句是在指定的条件成立时执行if后的代码,在条件不成立时执行else后的代码. if...e ...
- 关于CSDN 2016博客之星评选活动的感触
一.前言 想想去年的这个时候还接到CSDN邀请,参加了"CSDN 2015博客之星"的评选活动, CSDN2015博客之星评选之拉票环节 而今年却没有接到CSDN的邀请,内心有点小 ...
- LeetCode232:Implement Queue using Stacks
Implement the following operations of a queue using stacks. push(x) – Push element x to the back of ...
- Java中Collections和Collection的区别
java.util.Collection Collection 层次结构 中的根接口.Collection 表示一组对象,这些对象也称为 collection 的元素.一些 collection 允许 ...
- kibana 创建饼图
1.在 visualize 里面选择饼图 2.选择数据源 3.选择 terms 聚合类型. 选择字段 xxx.keyword 保存即可.
- Oracle 11g数据库详解
常见异常: ORA-14025:不能为实体化视图或实体化视图日志指定PARTITION ORA-14026:PARTITION和CLUSTER子句互相排斥 ORA-14027:仅可以指定一个PARTI ...
- sql 使用select 生成json
) FROM ( SELECT ( '{"organizationTitle":"' + [Name] + '"' ,',"orgainization ...