一、Ping类

引用命名空间

using System.Net.NetworkInformation

控制台版

using System;
using System.Collections.Generic;
using System.Net.NetworkInformation;
using System.Text;
using System.Threading;
namespace ping
{
class Program
{
static void Main(string[] args)
{
//允许应用程序确定远程计算机是否可访问网络的类
Ping pingSender = new Ping();
//用于控制如何 Ping 传输数据包
PingOptions options = new PingOptions();
//
options.DontFragment = true;
//创建要传输的N字节数据的缓冲区
string data=string.Empty;
for (int i = ; i < ; i++)
{
//32个字节
data += "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
} //
byte[] buffer = Encoding.ASCII.GetBytes(data);
//
int timeout = ;
//PingReply提供有关的状态和生成的数据的信息的类
//
int a = ;
while (a == )
{
PingReply reply = pingSender.Send("61.135.169.121", timeout, buffer, options);
//
if (reply.Status == IPStatus.Success)
{
Console.WriteLine("答复的主机地址: {0}", reply.Address.ToString());
Console.WriteLine("往返时间: {0}ms", reply.RoundtripTime);
Console.WriteLine("生存时间(TTL): {0}ms", reply.Options.Ttl);
Console.WriteLine("是否控制数据包的分段: {0}", reply.Options.DontFragment);
Console.WriteLine("缓冲区大小: {0}", reply.Buffer.Length);
Console.WriteLine(" ");
//等待1秒
Thread.Sleep(); }
else
{
Console.WriteLine(" ");
Console.WriteLine("请求超时");
Console.WriteLine(" ");
Thread.Sleep();
}
}
Console.ReadLine();
}
}
}

winfrom版

from1

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Net.NetworkInformation;
using System.Net;
namespace pingFrom
{
public partial class Form1 : Form
{
System.Timers.Timer t = new System.Timers.Timer();
public Form1()
{
InitializeComponent();
//??????????
System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
} private void button1_Click(object sender, EventArgs e)
{
IPAddress ip;
if (IPAddress.TryParse(textBox1.Text, out ip) == false)
{
MessageBox.Show("非法的IP地址");
return;
}
t.Elapsed += new System.Timers.ElapsedEventHandler(changeShifts);
t.Enabled = true;
t.AutoReset = true; //每到指定时间Elapsed事件是触发一次(false),还是一直触发(true)
} private void button2_Click(object sender, EventArgs e)
{
t.Enabled = false;
}
//timer
public void changeShifts(object source, System.Timers.ElapsedEventArgs e)
{
DateTime dtime = DateTime.Now;
//textBox2.Text += "abc";
//允许应用程序确定远程计算机是否可访问网络的类
Ping pingSender = new Ping();
//用于控制如何 Ping 传输数据包
PingOptions options = new PingOptions();
//
options.DontFragment = true;
int timeout = ;
//创建要传输的N字节数据的缓冲区
string data = string.Empty;
for (int i = ; i < ; i++)
{
//32个字节
data += "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
}
byte[] buffer = Encoding.ASCII.GetBytes(data);
//
//PingReply提供有关的状态和生成的数据的信息的类
PingReply reply = pingSender.Send(textBox1.Text, timeout, buffer, options);
//
if (reply.Status == IPStatus.Success)
{
string str = "目标地址" + textBox1.Text + ",往返时间" + reply.RoundtripTime + "ms ,生存时间(TTL)" + reply.Options.Ttl + "ms, 发送数据大小" + reply.Buffer.Length + "字节";
textBox2.AppendText(str);
textBox2.AppendText("\r\n");
textBox2.AppendText("\r\n");
oracleDB.sqlSuccess("mengpc", textBox1.Text, Convert.ToString(reply.RoundtripTime), Convert.ToString(reply.Options.Ttl), Convert.ToString(reply.Buffer.Length), dtime); }
else
{
textBox2.AppendText("请求超时");
textBox2.AppendText("\r\n");
textBox2.AppendText("\r\n");
string remark = "请求超时";
oracleDB.sqlFail("mengpc", textBox1.Text, dtime, remark);
}
this.textBox2.SelectionStart = this.textBox2.Text.Length;
this.textBox2.SelectionLength = ;
this.textBox2.ScrollToCaret(); } private void button3_Click(object sender, EventArgs e)
{
textBox2.Text = "";
} private void button4_Click(object sender, EventArgs e)
{
Form2 frm = new Form2();
frm.ShowDialog();
}
}
}

from2

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data; namespace pingFrom
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
DateTime dtime1 = Convert.ToDateTime(dateTimePicker1.Text);
DateTime dtime2 = Convert.ToDateTime(dateTimePicker2.Text);
if (dtime1.CompareTo(dtime2) == )
{
MessageBox.Show("开始节点要小于结束节点");
}
DataTable dt = oracleDB.query(dtime1, dtime2).Tables[];
int num = dt.Rows.Count;
System.TimeSpan t3 = dtime2 - dtime1;
double getMillisecond = t3.TotalMilliseconds;
label3.Text = "厉时" + getMillisecond + "秒,一共" + num + "条数据";
int count = ;
int ttl = ;
foreach (DataRow dr in dt.Rows)
{ if (Convert.ToString(dr["REMARKS"]) == "请求超时")
{
count += ;
}
string a = Convert.ToString(dr["ROUNDTRIPTIME"]);
if (Convert.ToInt32(dr["ROUNDTRIPTIME"]) > )
{
ttl += ;
}
}
label4.Text = "请求超时的数据共有 " + count + " 条";
label5.Text = "ping值大于100的共有 " + ttl + " 条";
}
}
}

oracleDB.cs

using System;
using System.Collections.Generic;
using System.Text;
using System.Data.OleDb;
using System.Data; namespace pingFrom
{
class oracleDB
{
/// <summary>
/// PING通
/// </summary>
/// <param name="loclaName"></param>
/// <param name="targetIp"></param>
/// <param name="roundtripTime"></param>
/// <param name="ttl"></param>
/// <param name="bufferSize"></param>
/// <param name="dtime"></param>
public static void sqlSuccess(string loclaName, string targetIp, string roundtripTime,string ttl,string bufferSize,DateTime dtime)
{
string str = "Provider=OraOLEDB.Oracle.1;User ID=MES;Password=zidonghua;Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = ORCL)))";
//测试用sql: insert into PINGTABLE (LOCALNAME,TARGETIP,ROUNDTRIPTIME,TTLTIME,BUFFERSIZE,PINGTIME,INSERTTIME) VALUES('mengpc','192.166.208.60','8ms','50ms','320byte',sysdate,to_date('2017-2-1 23:59:59','yyyy-mm-dd hh24-mi-ss'))
string sql = string.Format(@"insert into PINGTABLE (LOCALNAME,TARGETIP,ROUNDTRIPTIME,TTLTIME,BUFFERSIZE,PINGTIME,INSERTTIME)
VALUES('{0}','{1}','{2}','{3}','{4}',to_date('{5}','yyyy-mm-dd hh24-mi-ss'),sysdate)", loclaName, targetIp, roundtripTime, ttl, bufferSize, dtime);
using (OleDbConnection conn = new OleDbConnection(str))
{
conn.Open();
OleDbCommand command = new OleDbCommand(sql, conn);
command.ExecuteNonQuery();
} }
/// <summary>
/// 网络不通
/// </summary>
/// <param name="loclaName"></param>
/// <param name="targetIp"></param>
/// <param name="dtime"></param>
/// <param name="remark"></param>
public static void sqlFail(string loclaName, string targetIp, DateTime dtime,string remark)
{
string str = "Provider=OraOLEDB.Oracle.1;User ID=MES;Password=zidonghua;Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = ORCL)))";
string sql = string.Format(@"insert into PINGTABLE (LOCALNAME,TARGETIP,ROUNDTRIPTIME,PINGTIME,INSERTTIME,REMARKS)
VALUES('{0}','{1}',0,to_date('{2}','yyyy-mm-dd hh24-mi-ss'),sysdate,'{3}')", loclaName, targetIp, dtime, remark);
using (OleDbConnection conn = new OleDbConnection(str))
{
conn.Open();
OleDbCommand command = new OleDbCommand(sql, conn);
command.ExecuteNonQuery();
} } public static DataSet query(DateTime dtime1, DateTime dtime2)
{ string str = "Provider=OraOLEDB.Oracle.1;User ID=MES;Password=zidonghua;Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = ORCL)))";
string sql = string.Format("select * from PINGTABLE where PINGTIME>= to_date('{0}','yyyy-mm-dd hh24-mi-ss') and PINGTIME< to_date('{1}','yyyy-mm-dd hh24-mi-ss')", dtime1, dtime2);
using (OleDbConnection conn = new OleDbConnection(str))
{
conn.Open();
OleDbCommand command = new OleDbCommand(sql, conn);
OleDbDataAdapter adapter = new OleDbDataAdapter(command);
DataSet ds = new DataSet();
adapter.Fill(ds);
return ds;
}
} }
}

建表

#创建用户命令
create user MES identified by zidonghua
#授予dba权限
grant connect,resource,dba to MES;
#创建表
create table pingTable(id int,localName varchar2(80),targetIP varchar2(50),roundtripTime varchar2(50),ttlTime varchar2(50),bufferSize varchar2(50),pingTime date,insertTime date,remarks varchar2(200));
# COMMENT ON COLUMN pingTable.localName IS '本地主机名'
/
COMMENT ON COLUMN pingTable.targetIP IS '目标IP地址'
/
COMMENT ON COLUMN pingTable.roundtripTime IS '返回时间'
/
COMMENT ON COLUMN pingTable.ttlTime IS '生存时间'
/
COMMENT ON COLUMN pingTable.bufferSize IS '数据大小'
/
COMMENT ON COLUMN pingTable.pingTime IS 'ping的当时时间'
/
COMMENT ON COLUMN pingTable.insertTime IS '插入数据库时间'
/
COMMENT ON COLUMN pingTable.remarks IS '备注'
/
####### 序列,触发器
CREATE SEQUENCE SEQ_pingTable
START WITH 1
INCREMENT BY 1
NOMINVALUE
NOMAXVALUE
CACHE 20
NOORDER; --
-- TRIGGER: TR_BD_APPLY_MATERIAL
-- create or replace trigger TR_pingTable before insert on pingTable for each row begin select SEQ_pingTable.nextval into :new.ID from dual; end;
/
#####

(39)C#Ping类的更多相关文章

  1. WebRequest与WebResponse抽象类,DNS静态类、Ping类

    一.概述 1.WebRequest: 对统一资源标识符 (URI) 发出请求. 这是一个 abstract 类. WebRequest的派生类:PackWebRequest.FileWebReques ...

  2. Java基础知识强化39:StringBuffer类之StringBuffer的删除功能

    1. StringBuffer的删除功能: public StringBuffer  deleteCharAt(int index):删除指定位置的字符,并返回字符串缓冲区本身. public Str ...

  3. C# Ping的例子,可用于测试网络,延迟xx毫秒 C#编写网站测速

    C#编写网站测速 WebClient wcl = new WebClient(); Stopwatch spwatch = new Stopwatch(); spwatch.Start(); byte ...

  4. C# 使用ping命令

    方法一:调用cmd 的ping命令 private static string CmdPing(string strIp) { Process p = new Process(); p.StartIn ...

  5. C#.net干货,最全公共帮助类

    比较全面的c#帮助类,日常工作收集,包括前面几家公司用到的,各式各样的几乎都能找到,所有功能性代码都是独立的类,类与类之间没有联系,可以单独引用至项目,分享出来,方便大家,几乎都有注释,喜欢的请点赞, ...

  6. 干货,比较全面的c#.net公共帮助类

    比较全面的c#帮助类 比较全面的c#帮助类,日常工作收集,包括前面几家公司用到的,各式各样的几乎都能找到,所有功能性代码都是独立的类,类与类之间没有联系,可以单独引用至项目,分享出来,方便大家,几乎都 ...

  7. Ribbon Ping机制

    在负载均衡器中,提供了 Ping 机制,每隔一段时间,会去 Ping 服务器,判断服务器是否存活,该工作由 com.netflix.loadbalancer.IPing 接口的实现类负责,如果单独使用 ...

  8. Java类的继承与多态特性-入门笔记

    相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...

  9. Java实现ping功能的三种方法及Linux的区分

    前大半部份转自:https://blog.csdn.net/futudeniaodan/article/details/52317650 检测设备的运行状态,有的是使用ping的方式来检测的.所以需要 ...

随机推荐

  1. linux 上安装配置l2tp的客户端

    有些时候我们外网linux服务器需要访问内网的服务器,这时候就需要在外网服务器上配置l2tp的客户端,连接到VPN访问内网服务器. 安装: yum -y install xl2tpd ppp 安装成功 ...

  2. PHP将html内容转换为image图片

    /** * 将html内容转换为image图片 * @param $htmlcontent * @param $toimagepath * @author james.ou 2011-11-1 */ ...

  3. 配置wamp开发环境之mysql的配置

    此前我已经将wamp配置的Apache.PHP.phpmyadmin全部配置完成,以上三种配置参照 配置wamp开发环境 下面我们来看看mysql的配置,这里用的是mysql5.5.20,下载地址: ...

  4. poj-2386 lake counting(搜索题)

    Time limit1000 ms Memory limit65536 kB Due to recent rains, water has pooled in various places in Fa ...

  5. CentOS7搭建DNS服务器

    DNS是域名系统(Domain Name System)的缩写,它的作用是将主机名解析成IP(正向解析),从IP地址查询其主机名(反向解析). DNS的工作原理(1)客户机发出查询请求当被询问到有关本 ...

  6. JDK1.8 HashMap$TreeNode.rotateLeft 红黑树左旋

    红黑树介绍 1.节点是红色或黑色. 2.根节点是黑色. 3.每个叶子节点都是黑色的空节点(NIL节点). 4 每个红色节点的两个子节点都是黑色.(从每个叶子到根的所有路径上不能有两个连续的红色节点) ...

  7. Python之log的处理方式

    配置文件: #! /usr/bin/env python # -*- coding: utf-8 -*- """ logging配置 """ ...

  8. luogu2762 太空飞行计划问题

    最大权闭合子图 参考这,胡伯涛论文. 10,8,6,3这个简单割对应的闭合子图是A1,B1,B2 输出路径时,最后一次层次图中,与源点相连的点即选做的实验,与汇点相连的点即选用的仪器. #includ ...

  9. A+B问题的异常解法

    先%XZZ为敬 http://www.cnblogs.com/xzz_233/p/a-plus-b-problem.html 万恶之源:https://www.luogu.org/discuss/sh ...

  10. canvas 动画库 CreateJs 之 EaselJS(下篇)

    本文来自网易云社区 作者:田亚楠 继承 对应原文:Inheritance 我们可以继承已有的「显示对象」,创建新的自定义类.实现方法有很多种,下面介绍其中之一. 举例:实现一个继承于 Containe ...