IPMeow/test/IPMeow.Test/DnsTest.cs

56 lines
1.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Threading.Tasks;
using IPMeow.Dns;
namespace IPMeow.Test;
public class DnsTest
{
[Fact]
public async Task TestDns()
{
DnsMessage msg = new()
{
IsRecursionDesired = true,
IsRecursionAvailable = true,
MessageId = 0xbabe,
MessageType = DnsMessageType.Query,
Opcode = DnsMessageOpcode.Query,
Questions = new List<ResourceRecord>()
{
new ResourceRecord()
{
Class = ResourceRecordClass.IN,
Ttl = TimeSpan.Zero,
Name = "meow.lgbt",
Type = ResourceRecordType.A
},
},
ResponseCode = 0,
};
await Send(msg);
Console.WriteLine("sendt");
msg.IsRecursionDesired = false;
msg.IsAuthoritative = true;
msg.MessageType = DnsMessageType.Reply;
msg.Opcode = DnsMessageOpcode.Status;
msg.ResponseCode = DnsResponseCode.NxDomain;
await Send(msg);
}
private async Task Send(DnsMessage msg)
{
var data = msg.Serialize();
using UdpClient udp = new UdpClient(AddressFamily.InterNetwork);
udp.Connect(IPAddress.Parse("1.1.1.1"), 53);
await udp.SendAsync(data);
}
}