У меня есть следующий код, чтобы принимать пакеты UDP:Чтения бит из пакета UDP в Java
DatagramSocket socket = new DatagramSocket(Integer.parseInt(port));
byte[] buffer = new byte[2048];
DatagramPacket packet = new DatagramPacket(buffer,buffer.length);
while(true)
{
socket.receive(packet);
byte[] data = packet.getData();
packet.setLength(buffer.length);
}
Датаграммы Я получаю от использования команды копания с локальным хостом, чтобы сделать запрос DNS. (dig @localhost -p 1234 test.com) Я знаю, что формат запросов DNS выглядит так, как показано на этом сайте: http://www.networksorcery.com/enp/protocol/dns.htm
Я хочу, чтобы иметь возможность читать отдельные биты из дейтаграммы, чтобы увидеть разные коды (например QR-код и т. д.) и читать запросы. Я понимаю, как это делается в C, так как я могу читать отдельные биты там, но я хотел бы сделать это на Java. Мне трудно понять, как эффективно анализировать дейтаграмму, поскольку я получаю массив байтов, а package.getData() выводит значения мусора в консоль. У кого-нибудь есть совет?
Странный код. Вы понимаете, что 'buffer == data'? И что вы shoild сбрасываете длину * до * каждый получает? – EJP