Как обработать UDP-запрос DNS - PullRequest
       26

Как обработать UDP-запрос DNS

0 голосов
/ 21 декабря 2018

Я работал на простом DNS-сервере.Я предпочел сделать это самостоятельно, так как это тоже опыт обучения.Однако я застрял, пытаясь понять запросы DNS.Проблема в том, что данные (в виде строки) появляются с некоторыми нечитаемыми символами, которые я не знаю, как обрабатывать.Я даже ожидал что-то вроде «WhoIs google.com код ответа 1234», но скорее получил то, что вы видите на скриншоте заголовок после запуска И мой исходный код ..

package com.donsoft.ambient;

import java.net.*;

public class Dns {

    public static void main(String[] args){
        try{
            DatagramSocket sock = new DatagramSocket(53);
            //Now for reading the packets
            while(true){
                byte[] buffer = new byte[256]; //I think that size is good
                DatagramPacket in = new DatagramPacket(buffer, buffer.length);
                sock.receive(in);
                String data = new String(in.getData());
                if(data!=null){
                    process(in);
                }
                Thread.sleep(200); //To reduce CPU usage
            }
        }catch(Exception error){error.printStackTrace();}
    }
    public static void process(DatagramPacket pack){
        //I just print it out
        //But this is supposed to read the query and respond
        //Am hooked at the point of formatting the data
        String data = new String(pack.getData());
        System.out.println(data);
    }

}
...