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