xml地图|网站地图|网站标签 [设为首页] [加入收藏]
窗体关闭事件,Net的DNS解析模块
分类:编程

 

      这两天在做爬虫的功课,前几天读书的开始和结果是有关DNS解析模块的造作的。使用的库为AENCORESoft.Tools.Net,它是二个非常强盛的开源DNS控件库,包蕴.Net SPF validation, SenderID validation以致DNS Client、DNS Server接口。使用该接口可轻巧完毕DNS顾客伏乞端及服务器深入分析端。

体系地址:,

Nuget包地址:。

率先引进Nuget包:

 

Install-Package ARSoft.Tools.Net

 

 

上边起头具体落到实处:

/// <summary>
/// DNS解析
/// </summary>
/// <param name="dnsServer">DNS服务器IP</param>
/// <param name="timeOut">解析超时时间</param>
/// <param name="url">解析网址</param>
/// <param name="isSuccess">是否解析成功</param>
/// <returns>解析到的IP信息</returns>
public static IPAddress DnsResolver(string dnsServer, int timeOut, string url, out bool isSuccess)
{
    //初始化DnsClient,第一个参数为DNS服务器的IP,第二个参数为超时时间
    var dnsClient = new DnsClient(IPAddress.Parse(dnsServer), timeOut);
    //解析域名。将域名请求发送至DNS服务器解析,第一个参数为需要解析的域名,第二个参数为
    //解析类型, RecordType.A为IPV4类型
    //DnsMessage dnsMessage = dnsClient.Resolve("www.sina.com", RecordType.A);
    var s = new Stopwatch();
    s.Start();
    var dnsMessage = dnsClient.Resolve(DomainName.Parse(url));
    s.Stop();
    Console.WriteLine(s.Elapsed.Milliseconds);
    //若返回结果为空,或者存在错误,则该请求失败。
    if (dnsMessage == null || (dnsMessage.ReturnCode != ReturnCode.NoError && dnsMessage.ReturnCode != ReturnCode.NxDomain))
    {
        isSuccess= false;
    }
    //循环遍历返回结果,将返回的IPV4记录添加到结果集List中。
    if (dnsMessage != null)
        foreach (var dnsRecord in dnsMessage.AnswerRecords)
        {
            var aRecord = dnsRecord as ARecord;
            if (aRecord == null) continue;
            isSuccess = true;
            return aRecord.Address;
        }
    isSuccess= false;
    return null;
}

调用方法:

bool isSuccess;
IPAddress ip = DnsResolver("223.5.5.5", 200, "shaoweicloud.cn", out isSuccess);
if (isSuccess)
    Console.WriteLine(ip);

 

  本案例通过兑现三个登记页面包车型客车编写制定,来带你了解FLASK-WTF的运用.

先点击选中窗体,再找到相应事件。

 

  

图片 1

懂的利用办法后大家能够对它做进一步封装,获得DnsResolver类:

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Net;
using ARSoft.Tools.Net;
using ARSoft.Tools.Net.Dns;


namespace Crawler.Protocol { public class DnsResolver { public TimeSpan TimeSpan { get; set; } public string Url { get; set; } public List Record { get; set; } public string DnsServer { get; set; } public int TimeOut { get; set; } public ReturnCode ReturnCode { get; set; } public bool IsSuccess { get; private set; } public DnsResolver(string url, string dnsServer = "223.5.5.5", int timeOut = 200) { Url = url; DnsServer = dnsServer; TimeOut = timeOut; Record=new List(); Dig(); }
public void Dig() { //初阶化DnsClient,第多少个参数为DNS服务器的IP,第二个参数为超时时间 var dnsClient = new DnsClient(IPAddress.Parse(DnsServer), TimeOut); var s = new Stopwatch(); s.Start(); //深入分析域名。将域名央浼发送至DNS服务器剖判,参数为急需深入分析的域名 var dnsMessage = dnsClient.Resolve(DomainName.Parse(Url)); s.Stop(); TimeSpan = s.Elapsed; //若再次回到结果为空,只怕存在错误,则该央求失利。 if (dnsMessage == null || (dnsMessage.ReturnCode != ReturnCode.NoError && dnsMessage.ReturnCode != ReturnCode.NxDomain)) IsSuccess = false; //循环遍历重回结果,将重临的IPV4笔录增多到结果集List中。 if (dnsMessage != null) foreach (var dnsRecord in dnsMessage.AnswerRecords) { var aRecord = dnsRecord as ARecord; if (aRecord == null) continue; IsSuccess = true; Record.Add(aRecord); } if (dnsMessage != null) ReturnCode = dnsMessage.ReturnCode; } } }

调用方法:

DnsResolver dns = new DnsResolver("shaoweicloud.cn");
if (dns.IsSuccess)
    Console.WriteLine(dns.Record[0]);

 

         至此,DNS分析模块就基本竣事了,至于缘何标题中标明了半成品,是因为笔者想在大旨的DNS深入分析作用的基础上依据分析到DNS音讯中的TTL做风华正茂套消息缓存机制,收缩不须求的重新查询,方今还在牵挂接纳何种格局,后续达成会更新。

  主要功效为表单基础的成效--手提式有线电话机号码无法不为十一人数,且经过数据库查找不可能有意气风发度登记的了,密码要求输入五次且必须一致,且有着剧情无法为空的提醒等内容.那么今后就起来把!

 

  

那是百度上找的七个事例,首如若:要先点击选中窗体,再到事件栏去找FormClosing事件,然后双击那么些事件步入代码编辑状态,然后进行更上一层楼操作。

  生机勃勃.创设表单类.

  1. 找到窗体属性面框,然后采用方面像闪电的标示,那一个是事件,选取Form1_FormClosing方法,然后双击。

    图片 2

  2.  

    在主程序里面增加一个主意实现,具体的贯彻代码如下图所示。

    图片 3

  3.  

    运行程序,然后采取关闭窗口,就能弹出来下图所示的标识,能够多屡屡试验弹指间。

    图片 4

  4.  

    首先选用flask-wtf你必须保障您的情形中早就设置wtf,借使您是python3的条件,我们能够透过 pip3 install Flask-WTF 来张开安装.

 

    安装好了以往我们来开展导入:    

      from flask_wtf import Form
      from wtforms import StringField, SubmitField, PasswordField, ValidationError
      from wtforms.validators import DataRequired, EqualTo, Length
      from models import USER

    

    让大家一步步来领会!!

    

    第大器晚成行代码大家从 falsk-wtf 中程导弹入了 Form 类,将来大家创建的保有表单类都要持续自这么些类.

    第二行代码大家从 wtforms  中程导弹入了 StringField,SubmitField,PasswordField,ValidationError ,那么那么些事物是用来干什么的呢?作者相信就算有一点点过局部HTML的人相应都认得HTML表单中<input>元素的type="text",type="submit",type="password"那类属性吧.原理是同样的.

    第三行代码大家又从 wtforms.validators 中程导弹入了 DataRequired,EqualTo,Length ,在那之中 DataRequired用来注脚表单数据不能够为空, EqualTo 常用来比较四个代码是还是不是出色, Length 用来界定字符长度.

    第四行代码是导入数据库模型的USE普拉多类,用来查询数据库中是或不是早已登记了手机号.借使已经登记了,再用第二行代码的 ValidationError 来抛出警示.

本文由澳门新葡亰手机版发布于编程,转载请注明出处:窗体关闭事件,Net的DNS解析模块

上一篇:没有了 下一篇:没有了
猜你喜欢
热门排行
精彩图文