dnsjava中用代码实现dig命令的过程

动态 未结 0 112
小小草
小小草 LV1 2023年9月23日 23:40 发表
以下是使用dnsjava实现dig命令的示例代码: ```java import org.xbill.DNS.*; public class DigCommand { public static void main(String[] args) throws TextParseException { String domain = args[0]; String server = args.length > 1 ? args[1] : null; int type = args.length > 2 ? Type.value(args[2]) : Type.A; SimpleResolver resolver = new SimpleResolver(server); resolver.setTCP(true); Message query = new Message(); Header header = query.getHeader(); header.setOpcode(Opcode.QUERY); header.setID(0); header.setFlag(Flags.RD); header.setFlag(Flags.AD); Name name = Name.fromString(domain, Name.root); Record question = Record.newRecord(name, type, DClass.IN); query.addRecord(question, Section.QUESTION); try { Message response = resolver.send(query); System.out.println(";; Got answer:"); System.out.println(";; ->>HEADER<<- opcode: " + response.getOpcode() + ", status: " + response.getHeader().getRcode() + ", id: " + response.getHeader().getID()); System.out.println(";; flags: " + response.getHeader().getFlags() + "; QUERY: " + response.getHeader().getCount(Section.QUESTION) + ", ANSWER: " + response.getHeader().getCount(Section.ANSWER) + ", AUTHORITY: " + response.getHeader().getCount(Section.AUTHORITY) + ", ADDITIONAL: " + response.getHeader().getCount(Section.ADDITIONAL)); if (response.getRcode() != Rcode.NOERROR) { System.out.println(response.toString()); return; } if (response.getSectionArray(Section.ANSWER).length == 0) { System.out.println("No answer"); } else { System.out.println(response.getSectionArray(Section.ANSWER)[0].toString()); } if (response.getSectionArray(Section.AUTHORITY).length > 0) { System.out.println(";; AUTHORITY SECTION:"); for (Record record : response.getSectionArray(Section.AUTHORITY)) { System.out.println(record.toString()); } } if (response.getSectionArray(Section.ADDITIONAL).length > 0) { System.out.println(";; ADDITIONAL SECTION:"); for (Record
收藏(0)  分享
相关标签: 智能问答
问题没解决?让AI助手帮你作答 AI助手
0个回复
  • 消灭零回复