1 Star 0 Fork 1

xiangyuecn / DNS-csharp

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

DNS-csharp的帮助文档

本功能主要是升级DKIM-Smtp-csharp时用到的一个MX查询类独立出来的。

跑起来

clone下来用vs应该能够直接打开,经目测看起来没什么卵用的文件都svn:ignore掉了(svn滑稽。

支持

  • 查询A记录
  • 查询CNAME记录
  • 查询TXT记录
  • 查询MX记录
  • 查询NS记录
  • 查询PTR记录
  • 支持扩展别的记录类型查询方法

举个例子

//查询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

方法文档

EMail_DKIM.cs

DNS查询的所有功能都在这里面,形式统一为DNS_XXX,比如DNS_A查询A记录。

QueryOne(domain, options)查询返回的第一条数据,比如第一个A记录IP值,如果没有配置相应解析返回错误。

QueryAll(domain, options)查询本记录类型的所有值,如果没有配置相应解析,返回空数组。

注:所有查询默认使用标准查询,使用options = DNSQueryOptions.BYPASS_CACHE可忽略缓存。

DNS_Unit.cs

封装的一些通用方法。都是比较周边的功能。

Program.cs

控制台入口文件,用来测试的,里面包含了主要的使用用例。

扩展查询类型

如果需要查询的类型未实现,但类型在dnsapi DNS Record Types列表内,则可以通过编写相应代码实现扩展。

比如我要实现DNAME查询:

  1. 新建一个类DNS_DNAME,继承自DNSBase
  2. 先调用DNSBase.RegisterType("DNAME", 0x0027)注册DNAME类型。
  3. 编写代码,编写一个内部类DNAME,内部需要提供的字段参考查询DNAME返回的数据类型DNS_PTR_DATAW数据结构
  4. 剩余的编写方法可以参考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);
	}
}

相关截图

控制台运行:

控制台运行

空文件

简介

C# .NET Framework下进行DNS查询,实现了 A, MX, CNAME, NS, PTR, TXT 记录的查询 展开 收起
C#
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
C#
1
https://gitee.com/xiangyuecn/DNS-csharp.git
git@gitee.com:xiangyuecn/DNS-csharp.git
xiangyuecn
DNS-csharp
DNS-csharp
master

搜索帮助