zoukankan      html  css  js  c++  java
  • DNS解析代码copy

    临时备忘

    View Code
    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 ARSoft.Tools.Net.Dns;
    using System.Net;
    using System.Diagnostics;
    namespace UseT
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                Trace.TraceError("xxx");
                var dnsServerIp = IPAddress.Parse("192.168.1.30");
                DnsClient dsnClient = new DnsClient(dnsServerIp, 3000);
                Stopwatch sw = new Stopwatch();
                sw.Start();
                Console.WriteLine("--------响应----------");
                var r = dsnClient.Resolve(textBox1.Text);
                if (r != null)
                {
                    foreach (var it in r.AnswerRecords)
                    {
                        var ar = it as ARecord;
                        if (ar != null)
                            Console.WriteLine(ar.Address.ToString());
                    }
                }
                sw.Stop();
                Console.WriteLine(sw.ElapsedMilliseconds);
    
              
            }
    
            private DnsServer Server { get; set; }
            private void button2_Click(object sender, EventArgs e)
            {
                DnsServer dnsServer = new DnsServer(10,10,ProcessQuery);
                Server = dnsServer;
                dnsServer.Start();
            }
    
            private void button3_Click(object sender, EventArgs e)
            {
                if (Server != null) Server.Stop();
            }
            private static Lazy<DnsClient> LazyClient = new Lazy<DnsClient>(()=>DnsClient.Default, true);
    
            private static DnsMessageBase ProcessQuery(DnsMessageBase message, IPAddress clientAddress, System.Net.Sockets.ProtocolType protocol)
            {
                
                message.IsQuery = false;
                DnsMessage query = message as DnsMessage;
    
                // 官方的样例文档中没有体现DNS请求发起者的IP,我在这里增加了。
                Console.WriteLine("Client Address:{0}", clientAddress.ToString());
                Console.WriteLine("query.Questions.Count:{0}", query.Questions.Count);
                Console.WriteLine("query.Questions.ToString():{0}", query.Questions.ToString());
                Console.WriteLine("query.Questions[0].ToString():{0}", query.Questions[0].ToString());
                Console.WriteLine("query.Questions[0].GetType():{0}", query.Questions[0].GetType().ToString());
                Console.WriteLine("query.Questions[0].Name:{0}", query.Questions[0].Name.ToString());
                Console.WriteLine("query.Questions[0].RecordType:{0}", query.Questions[0].RecordType.ToString());
                Console.WriteLine("query.Questions[0].RecordClass {0}", query.Questions[0].RecordClass.ToString());
    
                //加入自己的解析
                if (query.Questions[0].Name.Contains("xxx"))
                {
    
                    query.AnswerRecords.Add(new ARecord("", 3600, IPAddress.Parse("192.168.1.94")));
                    message.ReturnCode = ReturnCode.NoError;
                    return message;
    
                }
                else
                {
    
                    var r= LazyClient.Value.Resolve(query.Questions[0].Name);
                    if (r != null)
                    {
                        foreach (var it in r.AnswerRecords)
                        {
                            var ar = it as ARecord;
                            if (ar != null)
                            {
                                query.AnswerRecords.Add(ar);
                            }
                               
                        }
                        message.ReturnCode = ReturnCode.NoError;
                    }
                    return message;
    
                }
            }
    
        }
    }
  • 相关阅读:
    Spring Cloud Config 配置中心
    Spring Cloud Zuul 路由网关
    Spring Cloud Hystrix 断路器
    Spring Cloud feign 服务消费者
    Spring Cloud Ribbon 负载均衡
    Spring Cloud Eureka 服务注册与发现
    CSS编辑工具
    CSS简史
    CSS简介
    Less的内置函数
  • 原文地址:https://www.cnblogs.com/wdfrog/p/3015992.html
Copyright © 2011-2022 走看看