一、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. COMP9021--6.6

    1. 在print结尾处添加end='' print默认在字符串结尾处添加换行符,添加end=''后表示这个语句并没有结束,结尾不换行 2. 为了减少重复代码以及便于修改,我们可以编写函数 1) 函数 ...

  2. yield关键字有什么作用

    所属网站分类: python基础 > 语句 作者:goodbody 链接: http://www.pythonheidong.com/blog/article/10/ 来源:python黑洞网  ...

  3. LeetCode(215) Kth Largest Element in an Array

    题目 Find the kth largest element in an unsorted array. Note that it is the kth largest element in the ...

  4. 线段树、前缀数组:HDU1591-Color the ball(区间更新、简单题)

    Color the ball Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...

  5. 【草稿】JS中如何操作时间

    如何声明时间变量 如何设置时间变量的时.分.秒.毫秒 如何根据字符串变量,声明指定的时间变量 如何比较两个时间变量 代码如下: $(function () { var d = new Date(); ...

  6. SQL_2_查询Select语句的使用

    查询一词在SQL中并不是很恰当,在SQL中查询除了向数据库提出问题之外,还可以实现下面的功能: 1>建立或删除一个表 2>插入.修改.或删除一个行或列 3>用一个特定的命令从几个表中 ...

  7. Splay的用法

    splay区间增减查询 #include<cstdio> #include<algorithm> using namespace std; ; const int INF = ...

  8. CodeForces 519E 树形DP A and B and Lecture Rooms

    给出一棵树,有若干次询问,每次询问距两个点u, v距离相等的点的个数. 情况还挺多的,少侠不妨去看官方题解.^_^ #include <iostream> #include <cst ...

  9. 使用 Scene 类在 XNA 中创建不同的场景(八)

    平方已经开发了一些 Windows Phone 上的一些游戏,算不上什么技术大牛.在这里分享一下经验,仅为了和各位朋友交流经验.平方会逐步将自己编写的类上传到托管项目中,没有什么好名字,就叫 WPXN ...

  10. 【LeetCode】Binary Tree Preorder Traversal(二叉树的前序遍历)

    这道题是LeetCode里的第144道题. 题目要求: 给定一个二叉树,返回它的 前序 遍历. 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3] 进阶: 递归算法很 ...