1
일반적으로 DNS 응답을 디코딩하려고합니다. 나는 응답의 'questions'섹션에서 이름을 검색하는 것으로까지 만들었지 만 'answers'섹션에서 IP 주소를 추출 할 수는 없습니다. 나는 InetAddress.getByName()을 잘 알고 있지만 필요한 것은 아니다. 내 기본 문제는 정말 무엇을하고 있었는지에주의를 지불하지 않고 내의 readShort()를 사용하여 그래서 나는 DNS 응답에서 IP 가져 오기
private static void disectQuery(byte[] received) {
ByteArrayInputStream bais = new ByteArrayInputStream(received);
DataInputStream DataIS = new DataInputStream (bais);
DNSResponse Response = new DNSResponse();
try {
Response.TID = DataIS.readShort();
Response.Flags = DataIS.readShort();
Response.NumQuestions = DataIS.readShort();
Response.NumAnswers = DataIS.readShort();
Response.NumAuthorities = DataIS.readShort();
Response.NumAdditional = DataIS.readShort();
String rest = null;
int questionsLeft = Response.NumQuestions;
while(questionsLeft-- > 0) {
byte[] buffer = new byte[lastHostQueried.length()+1];
DataIS.readFully (buffer);
rest = new String(buffer, "latin1");
int queryType = DataIS.readShort();
int queryClass = DataIS.readShort();
}
int answersLeft = Response.NumAnswers;
int i=13;
while(i-- > 0) {
DataIS.readShort();
}
while(answersLeft-- > 0) {
????
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
사용하신 최종 코드를 제공해 주시겠습니까? – danieln