/// <summary> /// Queries a dns server for specified records. /// </summary> /// <param name="name"> Domain, that should be queried </param> /// <param name="recordType"> Type the should be queried </param> /// <param name="recordClass"> Class the should be queried </param> /// <returns> The complete response of the dns server </returns> public DnsMessage Resolve(string name, RecordType recordType, RecordClass recordClass) { if (String.IsNullOrEmpty(name)) { throw new ArgumentException("Name must be provided", "name"); } DnsMessage message = new DnsMessage() { IsQuery = true, OperationCode = OperationCode.Query, IsRecursionDesired = true, IsEDnsEnabled = true }; message.Questions.Add(new DnsQuestion(name, recordType, recordClass)); return SendMessage(message); }
/// <summary> /// Send a custom message to the dns server and returns the answer. /// </summary> /// <param name="message"> Message, that should be send to the dns server </param> /// <returns> The complete response of the dns server </returns> public DnsMessage SendMessage(DnsMessage message) { if (message == null) throw new ArgumentNullException("message"); if ((message.Questions == null) || (message.Questions.Count == 0)) throw new ArgumentException("At least one question must be provided", "message"); return SendMessage<DnsMessage>(message); }
/// <summary> /// Send a custom message to the dns server and returns the answer asynchronously. /// </summary> /// <param name="message"> Message, that should be send to the dns server </param> /// <param name="requestCallback"> /// An <see cref="System.AsyncCallback" /> delegate that references the method to invoked then the operation is complete. /// </param> /// <param name="state"> /// A user-defined object that contains information about the receive operation. This object is passed to the /// <paramref /// name="requestCallback" /> /// delegate when the operation is complete. /// </param> /// <returns> /// An <see cref="System.IAsyncResult" /> IAsyncResult object that references the asynchronous receive. /// </returns> public IAsyncResult BeginSendMessage(DnsMessage message, AsyncCallback requestCallback, object state) { if (message == null) throw new ArgumentNullException("message"); if ((message.Questions == null) || (message.Questions.Count == 0)) throw new ArgumentException("At least one question must be provided", "message"); return BeginSendMessage<DnsMessage>(message, requestCallback, state); }
/// <summary> /// Queries a dns server for specified records asynchronously. /// </summary> /// <param name="name"> Domain, that should be queried </param> /// <param name="recordType"> Type the should be queried </param> /// <param name="recordClass"> Class the should be queried </param> /// <param name="requestCallback"> /// An <see cref="System.AsyncCallback" /> delegate that references the method to invoked then the operation is complete. /// </param> /// <param name="state"> /// A user-defined object that contains information about the receive operation. This object is passed to the /// <paramref /// name="requestCallback" /> /// delegate when the operation is complete. /// </param> /// <returns> /// An <see cref="System.IAsyncResult" /> IAsyncResult object that references the asynchronous receive. /// </returns> public IAsyncResult BeginResolve(string name, RecordType recordType, RecordClass recordClass, AsyncCallback requestCallback, object state) { if (String.IsNullOrEmpty(name)) { throw new ArgumentException("Name must be provided", "name"); } DnsMessage message = new DnsMessage() { IsQuery = true, OperationCode = OperationCode.Query, IsRecursionDesired = true, IsEDnsEnabled = true }; message.Questions.Add(new DnsQuestion(name, recordType, recordClass)); return BeginSendMessage(message, requestCallback, state); }