C# DNS 和 ping 源代码
C# DNS 和 ping 源代码
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Management.Instrumentation; using System.Management; using System.Net; using System.Net.NetworkInformation; using System.Diagnostics; namespace DNSandPing { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private string GetStatusString(IPStatus status) { switch (status) { case IPStatus.Success: return "成功."; case IPStatus.DestinationHostUnreachable: return "目的主机未找到."; case IPStatus.DestinationNetworkUnreachable: return "目的网络未找到."; case IPStatus.DestinationPortUnreachable: return "目的端口未找到."; case IPStatus.DestinationProtocolUnreachable: return "目的协议未找到."; case IPStatus.PacketTooBig: return "数据包太大."; case IPStatus.TtlExpired: return "TTL 过期."; case IPStatus.ParameterProblem: return "参数问题."; case IPStatus.SourceQuench: return "源断开."; case IPStatus.TimedOut: return "超时."; default: return "Ping 失败."; } } private void button1_Click(object sender, EventArgs e) { textBox2.Text = string.Empty; StringBuilder sb = new StringBuilder(); if (textBox1.Text.Trim().ToLower() == "localhost") textBox1.Text = "127.0.0.1"; if (textBox1.Text.Trim() == "127.0.0.1") { ManagementObjectSearcher query = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = 'TRUE'"); ManagementObjectCollection queryCollection = query.Get(); sb.Append("本机信息:\r\n"); foreach (var items in queryCollection) { sb.Append("\r\n主机名字: " + items["DNSHostName"].ToString() + "\r\n物理地址: " + items["MACAddress"] + "\r\nIp地址: \r\n"); for (int i = 0; i < ((string[])items["IPAddress"]).Length; i++) sb.Append(((string[])items["IPAddress"])[i].ToString() + "\r\n"); sb.Append("子网掩码: \r\n"); for (int i = 0; i < ((string[])items["IPSubnet"]).Length; i++) { sb.Append(((string[])items["IPSubnet"])[i].ToString() + "\r\n"); } sb.Append("默认网关: \r\n"); for (int i = 0; i < ((string[])items["DefaultIPGateway"]).Length; i++) { sb.Append(((string[])items["DefaultIPGateway"])[i].ToString() + "\r\n"); } sb.Append("DNS服务器: \r\n"); for (int i = 0; i < ((string[])items["DNSServerSearchOrder"]).Length; i++) { sb.Append(((string[])items["DNSServerSearchOrder"])[i].ToString() + "\r\n"); } sb.Append("DHCP服务器: " + items["DHCPServer"] + "\r\n"); sb.Append("DNS域: " + items["DNSDomain"] + "\r\n"); sb.Append("DNS主机: " + items["DNSHostName"] + "\r\n"); sb.Append("ServiceName: " + items["ServiceName"] + "\r\n"); sb.Append("WINSHostLookupFile: " + items["WINSHostLookupFile"] + "\r\n"); sb.Append("WINSPrimaryServer: " + items["WINSPrimaryServer"] + "\r\n"); sb.Append("TcpipNetbiosOptions: " + items["TcpipNetbiosOptions"] + "\r\n"); sb.Append("IPXAddress: " + items["IPXAddress"] + "\r\n"); } } else { sb.Append(textBox1.Text.Trim() + "的IP地址: \r\n"); IPHostEntry remoteHost = Dns.GetHostEntry(textBox1.Text.Trim()); IPAddress[] remoteIP = remoteHost.AddressList; foreach (IPAddress ip in remoteIP) sb.Append(ip.ToString() + "\r\n"); } Ping pingSender = new Ping(); PingOptions options = new PingOptions(); options.DontFragment = true; byte[] buffer = Encoding.ASCII.GetBytes("test data for teach"); int timeout = 128; sb.Append("\r\nPinging " + textBox1.Text.Trim() + " . . ."); PingReply reply = pingSender.Send(textBox1.Text.Trim(), timeout, buffer, options); if (reply.Status == IPStatus.Success) { sb.Append("\r\n答复的主机地址: " + reply.Address.ToString()); sb.Append("\r\n往返时间: " + reply.RoundtripTime + "ms"); sb.Append("\r\n生存时间(TTL): " + reply.Options.Ttl); sb.Append("\r\n是否控制数据包的分段: " + reply.Options.DontFragment); sb.Append("\r\n缓冲区大小: " + reply.Buffer.Length); } else sb.Append("\r\n" + GetStatusString(reply.Status)); Process p = new Process(); p.StartInfo.FileName = "cmd.exe"; p.StartInfo.Arguments = "/c ping " + textBox1.Text.Trim(); p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardError = true; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.RedirectStandardInput = true; p.StartInfo.CreateNoWindow = true; p.Start(); sb.Append("\r\n\r\n" + p.StandardOutput.ReadToEnd()); textBox2.Text = sb.ToString(); } } }
浙公网安备 33010602011771号