• Ping检测工具(QQ皮肤实现)


       最新版的Ping检查工具下载地址: 
             http://www.sufeinet.com/thread-748-1-1.html
    (更新时间2011-12-04)

    博客上也写了不少文章,希望做一些组件和工具出来让大家使用。也希望大家帮忙推广,多提建议,在做技术的同时把一个技术和思想产品化其实我感觉挺好的

    一直都有这个想法,而且也可以把技术惯串起来

       今天利用之前的C#仿QQ皮肤 做界面,使用一些.net代码来实现Ping的功能。这个工具我会慢慢更新希望大家支持先来秀秀图片

    1.项目基本结构

    一共上两个项目 一个是皮肤的类库,一个是Ping功能的实现

    以后我写工具的话都会以皮肤为基础,希望大家先下载使用

    2.PIng界面

    在这里你不但可以输入IP地址,还可以输入域名网址

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

    虽然是个小的工具,但是也是算是走出了第一步吧。

    工具里面是源代码,大家可以直接使用Vs2010打开,使用和编辑。

    在这上面我放上来一些得要的代码方便查阅吧

    View Code
    /// <summary>
    /// 类说明:PIng检查类
    /// 编码日期:2011-11-17
    /// 编 码 人: 苏飞
    /// 联系方式:361983679 Email:sufei.1013@163.com Blogs:http://sufei.cnblogs.com
    /// </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);
    }
    }
    }

     

    本人的博客不再维护从2013年就不再维护了 需要我帮助的朋友请到我的个人论坛 http://www.sufeinet.com 进行讨论,感谢大家对我的支持!
  • 相关阅读:
    C语言I博客作业09
    C语言I博客作业08
    14
    13
    12
    11
    10
    9
    8
    7
  • 原文地址:https://www.cnblogs.com/sufei/p/2277939.html
Copyright © 2020-2023  润新知