代码拉取完成,页面将自动刷新
本功能主要是升级DKIM-Smtp-csharp时用到的一个MX查询类独立出来的。
clone下来用vs应该能够直接打开,经目测看起来没什么卵用的文件都svn:ignore掉了(svn滑稽。
//查询qq.com的ip(A记录)
var ip=new DNS_A().QueryOne("qq.com").Value; //111.161.64.48
//查询@qq.com的mx记录
var mx=new DNS_MX().QueryOne("qq.com").Value; //mx1.qq.com
DNS查询的所有功能都在这里面,形式统一为DNS_XXX
,比如DNS_A
查询A记录。
QueryOne(domain, options)
查询返回的第一条数据,比如第一个A记录IP值,如果没有配置相应解析返回错误。
QueryAll(domain, options)
查询本记录类型的所有值,如果没有配置相应解析,返回空数组。
注:所有查询默认使用标准查询,使用options
=
DNSQueryOptions.BYPASS_CACHE
可忽略缓存。
封装的一些通用方法。都是比较周边的功能。
控制台入口文件,用来测试的,里面包含了主要的使用用例。
如果需要查询的类型未实现,但类型在dnsapi
DNS Record Types列表内,则可以通过编写相应代码实现扩展。
比如我要实现DNAME
查询:
DNS_DNAME
,继承自DNSBase
。DNSBase.RegisterType("DNAME", 0x0027)
注册DNAME
类型。DNAME
,内部需要提供的字段参考查询DNAME返回的数据类型、DNS_PTR_DATAW数据结构。CNAME
方法。//实现DNS_DNAME查询
public class DNS_DNAME : DNSBase {
static DNS_DNAME(){
DNSBase.RegisterType("DNAME", 0x0027);
}
[StructLayout(LayoutKind.Sequential)]
private class DNAME : Record {
public IntPtr pNameHost;
}
protected override Type RecordType { get { return typeof(DNAME); } }
protected override string GetVal(object obj) {
return Marshal.PtrToStringUni(((DNAME)obj).pNameHost);
}
}
控制台运行:
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。