zoukankan      html  css  js  c++  java
  • WINFORM 局域网PING 工具(技术改变世界cnblog)

    需求:

    1.实时更新  日期时间

    2.可以ping多个IP 地址,必须判断 IP地址的正确性,不能为广播地址

    3.对ping结果的显示

    4.调用CMD命令

    5.实现点击关闭,触发 关闭或者不关闭

    缺点:由于能力有限,未能从异步和线程角度 考虑问题,导致 性能不是很好。

    View Code
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Diagnostics;



    namespace WindowsFormsApplication6
    {
    public partial class Form1 : Form
    {

    public Form1()
    {
    InitializeComponent();



    }


    private void Form1_Load(object sender, EventArgs e)
    {

    label1.Text = DateTime.Now.ToLocalTime().ToString();//加载的时候就显示时间
    //实时更新
    timer1.Enabled = true;
    timer1.Interval = 1000;

    }

    private void timer1_Tick(object sender, EventArgs e)
    {
    label1.Text = DateTime.Now.ToLocalTime().ToString() ;
    }

    private void button1_Click(object sender, EventArgs e)
    {
    listBox1.Items.Clear();
    //判断正确的输入格式
    if (textBox1.Text == string.Empty || textBox2.Text == string.Empty)
    {

    MessageBox.Show("IP地址不为空", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
    return;
    }
    else
    {
    if (textBox2.Text.Length > 3 | textBox2.Text.Length<=0)
    {
    MessageBox.Show("第二组IP有误", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
    return;
    }

    else if (int.Parse(textBox2.Text) == 255 || int.Parse(textBox2.Text) == 0)
    {
    MessageBox.Show("第二组IP为广播地址", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
    return;
    }
    else
    {
    string[] ips = textBox1.Text.Split('.');
    if (ips.Length != 4)//因为IP是4段
    {

    MessageBox.Show("第一组IP有误", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
    return;
    }
    if (int.Parse(ips[3]) == 0 || int.Parse(ips[3]) == 255)
    {
    MessageBox.Show("第一组IP为广播地址", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
    return;
    }

    int i1=int.Parse(ips[3]);
    int i2=int.Parse(textBox2.Text);
    if(i1>i2)
    {
    MessageBox.Show("后面IP太小", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
    return;
    }
    string temp;
    for (int i = i1; i <= i2; i++)
    {
    temp=Ping(i.ToString());
    if (temp.Contains("Received = 1"))
    {
    listBox1.Items.Add(string.Format("提示:192.168.0.{0}存在", i));
    continue ;
    }
    else
    {
    listBox1.Items.Add(string.Format("提示:192.168.0.{0}可能不存在", i));
    continue;
    }
    }
    }
    }

    }
    private string Ping(string ip)//调用Ping方法
    {
    Process p = new Process();
    p.StartInfo.FileName = "cmd.exe";//获取程序的事件 注意FileName包含路径
    p.StartInfo.UseShellExecute = false;
    //重定向 标准输出 输入 错误
    p.StartInfo.RedirectStandardInput = true;
    p.StartInfo.RedirectStandardOutput = true;
    p.StartInfo.RedirectStandardError = true;
    p.StartInfo.CreateNoWindow = true;//不显示窗口
    p.Start();
    p.StandardInput.WriteLine(string.Format("ping -n 1 192.168.0.{0}",ip));
    p.StandardInput.WriteLine("exit");
    return p.StandardOutput.ReadToEnd();

    }

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
    DialogResult result=MessageBox.Show("是否要关闭软件","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Warning);

    if (result == DialogResult.Yes)
    {
    e.Cancel =false;//这是一个关闭事件,不取消事件,也就是不关闭
    }
    else
    {
    e.Cancel = true;//这是一个关闭事件,取消事件,就是关闭
    }
    }

    private void richTextBox1_TextChanged(object sender, EventArgs e)
    {

    }




    }
    }



  • 相关阅读:
    【转】winrar命令行详解
    【转】关于色彩空间sRGB和Adobe RGB...
    深入解读TPC-C指标
    解决因 RsFX devicer 而无法卸载 SQL Server 的问题
    LUHN算法
    信用卡卡号编排的含义
    关于第三方API调用的工具 WebApiClient.JIT 的使用记录
    ocelot.json模板
    C#进阶之事件与委托(Event&Delegate)
    C#进阶之面向对象(OOP)
  • 原文地址:https://www.cnblogs.com/IAmBetter/p/2321797.html
Copyright © 2011-2022 走看看