📄 nslookup.java
字号:
/* * Java Network Programming, Second Edition * Merlin Hughes, Michael Shoffner, Derek Hamner * Manning Publications Company; ISBN 188477749X * * http://nitric.com/jnp/ * * Copyright (c) 1997-1999 Merlin Hughes, Michael Shoffner, Derek Hamner; * all rights reserved; see license.txt for details. */import java.io.*;
import java.net.*;
import java.util.*;
public class NSLookup {
public static void main (String[] args) {
if (args.length != 1)
throw new IllegalArgumentException
("Syntax: NSLookup <hostname>[@<nameserver>]");
int atIdx = args[0].indexOf ("@");
String nameServer = (atIdx > -1) ? args[0].substring (atIdx + 1) : "ns";
String hostName = (atIdx > -1) ? args[0].substring (0, atIdx) : args[0];
System.out.println ("Nameserver: " + nameServer);
System.out.println ("Request: " + hostName);
DNSQuery query = new DNSQuery (hostName, DNS.TYPE_ANY, DNS.CLASS_IN);
try {
Socket socket = new Socket (nameServer, DNS.DEFAULT_PORT);
socket.setSoTimeout (10000);
sendQuery (query, socket);
getResponse (query, socket);
socket.close ();
printRRs (query);
} catch (IOException ex) {
System.out.println (ex);
}
}
public static void sendQuery (DNSQuery query, Socket socket) throws IOException {
BufferedOutputStream bufferedOut =
new BufferedOutputStream (socket.getOutputStream ());
DataOutputStream dataOut = new DataOutputStream (bufferedOut);
byte[] data = query.extractQuery ();
dataOut.writeShort (data.length);
dataOut.write (data);
dataOut.flush ();
}
public static void getResponse (DNSQuery query, Socket socket) throws IOException {
InputStream bufferedIn =
new BufferedInputStream (socket.getInputStream ());
DataInputStream dataIn = new DataInputStream (bufferedIn);
int responseLength = dataIn.readUnsignedShort ();
byte[] data = new byte[responseLength];
dataIn.readFully (data);
query.receiveResponse (data, responseLength);
}
public static void printRRs (DNSQuery query) {
Enumeration answers = query.getAnswers ();
if (answers.hasMoreElements ())
System.out.println (query.isAuthoritative () ?
"\nAuthoritative answer:\n" :
"\nNon-authoritative answer:\n");
while (answers.hasMoreElements ())
System.out.println (answers.nextElement ());
Enumeration authorities = query.getAuthorities ();
if (authorities.hasMoreElements ())
System.out.println ("\nAuthoritative answers can be found from:\n");
while (authorities.hasMoreElements ())
System.out.println (authorities.nextElement ());
Enumeration additional = query.getAdditional ();
if (additional.hasMoreElements ())
System.out.println ("\nAdditional information:\n");
while (additional.hasMoreElements ())
System.out.println (additional.nextElement ());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -