花了一天,随便写的个小程序,源码公开,有需要的可以 拿去。我写这个程序的本意是可以ping有固定IP的圈存机,如何网络不通会自己返回其相应的位置。
程序说明,程序可以自动ping预先写入的一组IP地址,也可以手动ping输入的ip.
代码如下:
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 using System.Net.Sockets; 10 using System.Net; 11 using System.Net.NetworkInformation; 12 13 namespace Ping_test 14 { 15 public partial class ManiForm : Form 16 { 17 public ManiForm() 18 { 19 InitializeComponent(); 20 21 } 22 //表示可变字符串 23 24 // IcmpPacket packet = new IcmpPacket(0, 0, 0, 45, 0, 4); 25 // Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Icmp); 26 27 private void button1_Click(object sender, EventArgs e) 28 { 29 try 30 { 31 IPAddress myIP = IPAddress.Parse(textBox1.Text); 32 } 33 catch(Exception ex) 34 { 35 MessageBox.Show("不是有效的IP"); 36 return; 37 } 38 this.Text = "正在ping...."; 39 // listBox1.Items.Clear(); 40 Ping pingSender = new Ping(); 41 PingOptions options = new PingOptions(); 42 43 // Use the default Ttl value which is 128, 44 // but change the fragmentation behavior. 45 options.DontFragment = true; 46 47 // Create a buffer of 32 bytes of data to be transmitted. 48 string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; 49 byte[] buffer = Encoding.ASCII.GetBytes(data); 50 int timeout = 120; 51 for (int i = 0; i < 4; i++) 52 { 53 PingReply reply = pingSender.Send(textBox1.Text, timeout, buffer, options); 54 displayReply(reply); 55 timeDelay(800); //0.8s 56 57 } 58 this.Text = "已完成"; 59 } 60 private void button3_Click(object sender, EventArgs e) 61 { 62 this.Close(); 63 Application.Exit(); 64 } 65 66 67 private void button2_Click(object sender, EventArgs e) 68 { 69 string[] ipaddress = new string[4]; 70 ipaddress[0] = "192.168.1.1"; 71 ipaddress[1] = "192.168.1.2"; 72 ipaddress[2] = "192.168.1.3"; 73 ipaddress[3] = "192.168.1.4"; 74 for (int i = 0; i < 4; i++) 75 { 76 textBox1.Text = ipaddress[i]; 77 button1_Click(this, e); 78 } 79 80 } 81 private void displayReply(PingReply reply) //显示结果 82 { 83 StringBuilder sbuilder; 84 sbuilder = new StringBuilder(); 85 if (reply.Status == IPStatus.Success) 86 { 87 88 sbuilder.Append(string.Format("地址: {0} ", reply.Address.ToString())); 89 sbuilder.Append(string.Format("时间: {0} ", reply.RoundtripTime)); 90 sbuilder.Append(string.Format("生存期: {0} ", reply.Options.Ttl)); 91 // sbuilder.Append(string.Format("Don't fragment: {0} ", reply.Options.DontFragment)); 92 sbuilder.Append(string.Format("缓存: {0} ", reply.Buffer.Length)); 93 listBox1.Items.Add(sbuilder.ToString()); 94 } 95 else 96 { 97 98 switch(textBox1.Text) 99 { 100 case "192.168.1.1": 101 { 102 sbuilder.Append("地址:"+textBox1.Text + " 一号圈存机不可达!"); 103 listBox1.Items.Add(sbuilder.ToString()); 104 break; 105 } 106 case "192.168.1.2": 107 { 108 sbuilder.Append("地址:"+textBox1.Text + " 二号圈存机不可达!"); 109 listBox1.Items.Add(sbuilder.ToString()); 110 break; 111 } 112 case "192.168.1.3": 113 { 114 sbuilder.Append("地址:"+textBox1.Text + " 三号圈存机不可达!"); 115 listBox1.Items.Add(sbuilder.ToString()); 116 break; 117 } 118 case "192.168.1.4": 119 { 120 sbuilder.Append("地址:"+textBox1.Text + " 四号圈存机不可达!"); 121 listBox1.Items.Add(sbuilder.ToString()); 122 break; 123 } 124 125 } //switch 126 127 128 } 129 this.listBox1.SelectedIndex = this.listBox1.Items.Count - 1; 130 } 131 /// <summary> 132 /// 延时函数 133 /// </summary> 134 /// <param name="iInterval"></param> 135 private void timeDelay(int iInterval) 136 { 137 DateTime now = DateTime.Now; 138 while (now.AddMilliseconds(iInterval) > DateTime.Now) 139 { } 140 return; 141 } 142 143 private void button4_Click(object sender, EventArgs e) 144 { 145 this.listBox1.Items.Clear(); 146 } 147 148 149 150 } 151 }