我有以下代码来接收UDP数据包:
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);
}
我收到的数据报是使用dig命令和localhost进行DNS查询。 (挖掘@localhost -p 1234 test.com)我知道DNS查询格式如下所示:http://www.networksorcery.com/enp/protocol/dns.htm
我希望能够从数据报中读取各个位以查看不同的代码(如QR代码等)并读取查询。我理解这是如何在C中完成的,因为我可以在那里读取单个位,但我想在Java中这样做。我很难搞清楚如何有效地解析数据报,因为我收到一个字节数组,而packet.getData()将垃圾值打印到控制台。有没有人有任何建议?
答案 0 :(得分:0)
您可以使用掩码检查字节中的位:
int bit0 = b & 0x01;
int bit1 = b & 0x02;
int bit2 = b & 0x04;
...
int bit7 = b & 0x80;