0
我有以下类打开套接字连接来查询WHOIS服务器。不幸的是,我每次运行它(例如,Java WHOIS google.com)它总是抛出异常:ConnectException:操作超时
Contacting the WHOIS server for 'google.com' at whois.internic.net:43
Exception in thread "main" java.net.ConnectException: Operation timed out
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:432)
at java.net.Socket.connect(Socket.java:529)
at java.net.Socket.connect(Socket.java:478)
at java.net.Socket.<init>(Socket.java:375)
at java.net.Socket.<init>(Socket.java:189)
at WHOIS.performWhoisQuery(WHOIS.java:11)
at WHOIS.main(WHOIS.java:28)
这个问题似乎连接超时,我试图超时设置更长的值(例如5000),它没没有工作。它是否与代理和/或防火墙有关?我一整天都被卡住了。
public class WHOIS {
public static void performWhoisQuery(String host, int port, String query) throws Exception {
System.out.println(" Contacting the WHOIS server for '" + query + "' at " + host + ":" + port);
Socket socket = new Socket(host, port);
InputStreamReader isr = new InputStreamReader(socket.getInputStream());
BufferedReader br = new BufferedReader(isr);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.println(query);
String aLine = "";
while ((aLine = br.readLine()) != null) {
System.out.println(aLine);
}
}
public static void main(String[] args) throws Exception {
String domainNameToCheck = args[0];
performWhoisQuery("whois.internic.net", 43, domainNameToCheck);
}
}
谢谢! telnet也会因连接超时而终止。好吧,那么它必须处理防火墙的限制。我会尝试从不同的环境。 – 2011-03-25 17:22:38
@Birhanu Mekuria Eshete是的,但它先连接然后超时,还是不能完全连接? – NPE 2011-03-25 17:24:32
它根本没有连接。它终止于:“尝试199.7.52.74 ... telnet:连接到地址199.7.52.74:操作超时 telnet:无法连接到远程主机” “ – 2011-03-25 18:08:06