http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 37268|回复: 39
打印 上一主题 下一主题

[工具] Ping检测工具下载(QQ皮肤实现附源码)

[复制链接]
跳转到指定楼层
楼主
发表于 2012-10-26 10:53:23 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
最新版的Ping检查工具下载地址  只要回复下本贴就可以看到下载地址了。
Ping检查工具.zip (1.73 MB, 下载次数: 1639)
博客上也写了不少文章,希望做一些组件和工具出来让大家使用。也希望大家帮忙推广,多提建议,在做技术的同时把一个技术和思想产品化其实我感觉挺好的
一直都有这个想法,而且也可以把技术惯串起来
   今天利用之前的C#仿QQ皮肤做界面,使用一些.net代码来实现Ping的功能。这个工具我会慢慢更新希望大家支持先来秀秀图片
1.项目基本结构
一共上两个项目 一个是皮肤的类库,一个是Ping功能的实现
以后我写工具的话都会以皮肤为基础,希望大家先下载使用

2.PIng界面
在这里你不但可以输入IP地址,还可以输入域名网址

查询结果,超时时间,包大小,次数大家可以自己定义

虽然是个小的工具,但是也是算是走出了第一步吧。
工具里面是源代码,大家可以直接使用Vs2010打开,使用和编辑。
在这上面我放上来一些得要的代码方便查阅吧
[C#] 纯文本查看 复制代码
View Code 

/// <summary>
/// 类说明:PIng检查类
/// 编码日期:2011-11-17
/// 编 码 人:  苏飞
/// 联系方式:361983679  Email:[url=mailto:sufei.1013@163.com]sufei.1013@163.com[/url]  Blogs:[url=http://sufeinet.com]http://sufeinet.com[/url]
/// </summary>
using System;
using System.Collections.Generic;
using System.Web;
using System.Text.RegularExpressions;
using System.Diagnostics;

namespace Ping检查工具
{
    public class SpeedServices
    {
        #region codes

        //超时时间
        private const int TIME_OUT = 100;
        //包大小
        private const int PACKET_SIZE = 32;
        //Ping的次数
        private const int TRY_TIMES = 1;

        //取时间的正则
        private static Regex _reg = new Regex(@"时间=(.*?)ms", RegexOptions.Multiline | RegexOptions.IgnoreCase);
        Process proc_Ping = new Process();

        /// <summary>
        /// 得到速度值单位KB
        /// </summary>
        /// <param name="strCommandline">传入的命令行</param>
        ///<param name="packetSize">包的大小</param>
        ///<returns>KB</returns>
        private float LaunchPing(string strCommandline, int packetSize)
        {
            SetProcess(strCommandline);
            proc_Ping.Start();
            string strBuffer = proc_Ping.StandardOutput.ReadToEnd();
            proc_Ping.Close();
            return ParseResult(strBuffer, packetSize);
        }

        /// <summary>
        /// 设属性
        /// </summary>
        /// <param name="strCommandline">传入的命令行</param>
        private void SetProcess(string strCommandline)
        {
            //命令行
            proc_Ping.StartInfo.Arguments = strCommandline;
            //是否使用操作系统外壳来执行
            proc_Ping.StartInfo.UseShellExecute = false;
            //是否在新窗口中启动
            proc_Ping.StartInfo.CreateNoWindow = true;
            //exe名称默认的在System32下
            proc_Ping.StartInfo.FileName = "ping.exe";
            proc_Ping.StartInfo.RedirectStandardInput = true;
            proc_Ping.StartInfo.RedirectStandardOutput = true;
            proc_Ping.StartInfo.RedirectStandardError = true;
        }

        /// <summary>
        /// 得到Ping的结果包括统计信息
        /// </summary>
        /// <param name="strCommandline">传入的命令行</param>
        ///<param name="packetSize">包的大小</param>
        ///<returns>KB</returns>
        private string LaunchPingStr(string strCommandline, int packetSize)
        {
            SetProcess(strCommandline);
            proc_Ping.Start();
            string strBuffer = proc_Ping.StandardOutput.ReadToEnd();
            proc_Ping.Close();
            return strBuffer;
        }

        /// <summary>
        /// 取速度值
        /// </summary>
        /// <param name="strBuffer"></param>
        /// <param name="packetSize"></param>
        /// <returns></returns>
        private float ParseResult(string strBuffer, int packetSize)
        {
            if (strBuffer.Length < 1) return 0.0F;

            MatchCollection mc = _reg.Matches(strBuffer);
            if (mc == null || mc.Count < 1 || mc[0].Groups == null) return 0.0F;
            int avg;
            if (!int.TryParse(mc[0].Groups[1].Value, out avg)) return 0.0F;
            if (avg <= 0) return 1024.0F;

            return (float)packetSize / avg * 1000 / 1024;
        }

        #endregion 公共方法

        /// <summary>
        /// 得到网速
        /// </summary>
        /// <param name="strHost">主机名或ip</param>
        /// <returns>kbps/s</returns>
        public float PingKB(string strHost)
        {
            return LaunchPing(string.Format("{0} -n {1} -l {2} -w {3}", strHost, TRY_TIMES, PACKET_SIZE, TIME_OUT), PACKET_SIZE);
        }

        /// <summary>
        /// 得到Ping结果字符串
        /// </summary>
        /// <param name="strHost">主机名或ip</param>
        /// <param name="PacketSize">发送测试包大小</param>
        /// <param name="TimeOut">超时</param>
        /// <param name="TryTimes">测试次数</param>
        /// <returns>kbps/s</returns>
        public string GetPingStr(string strHost, int PacketSize, int TimeOut, int TryTimes)
        {
            return LaunchPingStr(string.Format("{0} -n {1} -l {2} -w {3}", strHost, TryTimes, PacketSize, TimeOut), PacketSize);
        }

        /// <summary>
        /// 根据传入的参数返回Ping速度结果
        /// </summary>
        /// <param name="strHost">主机名或ip</param>
        /// <param name="PacketSize">发送测试包大小</param>
        /// <param name="TimeOut">超时</param>
        /// <param name="TryTimes">测试次数</param>
        /// <returns>kbps/s</returns>
        public float PingKB(string strHost, int PacketSize, int TimeOut, int TryTimes)
        {
            return LaunchPing(string.Format("{0} -n {1} -l {2} -w {3}", strHost, TryTimes, PacketSize, TimeOut), PacketSize);
        }
    }
}

本帖被以下淘专辑推荐:



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
推荐
 楼主| 发表于 2013-5-21 16:24:51 | 只看该作者
dcx 发表于 2013-5-21 16:14
我是下载的您的那个ping检查工具压缩包,里面有完整的代码,我就想了解一下,在那里面能不能修改后,实现 ...

这个你看下代码吧, 如果你看懂了,肯定能修改,如果你没看明白我跟你说你也不一定能理解。再研究下吧。没多少代码。相信你应该能研究出来

板凳
发表于 2012-12-11 14:18:21 | 只看该作者
下载要积分不啊,大哥。
地板
 楼主| 发表于 2012-12-11 14:31:42 | 只看该作者
tenheng 发表于 2012-12-11 14:18
下载要积分不啊,大哥。

不要积分啊,注册用户可以直接下载的
5
发表于 2012-12-18 13:01:24 | 只看该作者
收藏.~
6
发表于 2013-1-5 14:29:56 | 只看该作者
谢谢分享!支持一下!
7
发表于 2013-2-8 16:01:07 | 只看该作者
热天热天任天堂热
8
发表于 2013-5-21 16:10:37 | 只看该作者
   大神,您的那个ping程序,能不能将结果字符串里的丢包率和平均时延写入数据库啊???
9
 楼主| 发表于 2013-5-21 16:12:03 | 只看该作者
dcx 发表于 2013-5-21 16:10
大神,您的那个ping程序,能不能将结果字符串里的丢包率和平均时延写入数据库啊???

这个只是介绍Ping功能,不做数据存储,文章中的代码不是源码,你可以自行修改

10
发表于 2013-5-21 16:14:37 | 只看该作者
站长苏飞 发表于 2013-5-21 16:12
这个只是介绍Ping功能,不做数据存储,文章中的代码不是源码,你可以自行修改

我是下载的您的那个ping检查工具压缩包,里面有完整的代码,我就想了解一下,在那里面能不能修改后,实现将丢包率和时延写入到数据库里?


您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-4-20 06:08

© 2014-2021

快速回复 返回顶部 返回列表