Я работал на простом 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);
}
}