新思想

C# DNS 和 ping 源代码

C# DNS 和 ping 源代码

DNSandPing

DNSandPingbing

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();
        }
    }
}

源程序下载

执行程序下载

posted on 2015-11-30 22:58  新思想  阅读(944)  评论(0)    收藏  举报

导航