1 Star 0 Fork 1

xiangyuecn / DNS-csharp

Create your Gitee Account
Explore and code with more than 12 million developers,Free private repositories !:)
Sign up
This repository doesn't specify license. Please pay attention to the specific project description and its upstream code dependency when using it.
Clone or Download
contribute
Sync branch
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
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);
	}
}

相关截图

控制台运行:

控制台运行

Empty file

About

C# .NET Framework下进行DNS查询,实现了 A, MX, CNAME, NS, PTR, TXT 记录的查询 expand collapse
C#
Cancel

Releases

No release

Contributors

All

Activities

Load More
can not load any more
C#
1
https://gitee.com/xiangyuecn/DNS-csharp.git
git@gitee.com:xiangyuecn/DNS-csharp.git
xiangyuecn
DNS-csharp
DNS-csharp
master

Search