C# WINFORM 局域网PING 工具(技术改变世界-cnblog)
WINFORM 局域网PING 工具(技术改变世界-cnblog)
需求:
1.实时更新  日期时间
2.可以ping多个IP 地址,必须判断 IP地址的正确性,不能为广播地址
3.对ping结果的显示
4.调用CMD命令
5.实现点击关闭,触发 关闭或者不关闭
 
缺点:由于能力有限,未能从异步和线程角度 考虑问题,导致 性能不是很好。
 
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)
        {
        }
       
        
        
    }
}
分类: WinForm
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号