예제 #1
0
        private void SendResponse(DNSFrame frame, List <Record> answers, EndPoint sender)
        {
            var responseFrame = new DNSFrame();

            responseFrame.Question    = frame.Question;
            responseFrame.FrameHeader = frame.FrameHeader;
            responseFrame.FrameHeader.FrameFlags.isResponse = true;
            responseFrame.FrameHeader.AnswerCount           = (ushort)answers.Count;
            responseFrame.FrameHeader.NameServerCount       = 0;
            responseFrame.FrameHeader.AdditionalCount       = 0;
            var offset = (ushort)frame.sizeOfHeader;

            responseFrame.Answer = new Resource();
            responseFrame.data   = frame.data;
            for (int i = 0; i < answers.Count; i++)
            {
                responseFrame.Answer.Records.Add(answers[i]);
            }

            socket.SendTo(DNSFrameConverter.ToByte(responseFrame), sender);
        }
예제 #2
0
        private void SendResponce(DNSFrame frame, Pair answer, EndPoint sender, Record question)
        {
            var newFrame = new DNSFrame();

            newFrame.Question = new Resource();
            newFrame.Question.LenghtResource = question.LengthRecord;
            newFrame.Question.Records        = new List <Record>()
            {
                question
            };
            newFrame.FrameHeader = frame.FrameHeader;
            newFrame.FrameHeader.FrameFlags.isResponse = true;
            newFrame.Answer = new Resource {
                Records = answer.Answer
            };
            newFrame.Additional = new Resource {
                Records = answer.Additional
            };
            newFrame.FrameHeader.AnswerCount     = (ushort)answer.Answer.Count;
            newFrame.FrameHeader.AdditionalCount = (ushort)answer.Additional.Count;
            newFrame.data = frame.data;
            socket.SendTo(DNSFrameConverter.ToByte(newFrame), sender);
        }