Java ConnectException:操作超时
我有一个打开套接字连接以查询WHOIS服务器的类。不幸的是,每次我运行它(例如java WHOIS google.com),它总是抛出异常:Java ConnectException:操作超时,java,Java,我有一个打开套接字连接以查询WHOIS服务器的类。不幸的是,每次我运行它(例如java WHOIS google.com),它总是抛出异常: 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.soc
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)
检查是否是防火墙问题的一种简单方法是使用
telnet
从同一台计算机连接到目标主机/端口
例如,在我的Linux设备上:
如果您能够连接,那么问题在于您的Java程序。否则问题出在其他地方(防火墙等)。谢谢!telnet也会随着连接超时而终止。好的,这与防火墙约束有关。我将从另一个环境中尝试它。@Birhanu Mekuria Eshete是的,但它是先连接然后超时,还是无法完全连接?它根本不连接。它以“正在尝试199.7.52.74…telnet:连接到地址199.7.52.74:操作超时telnet:无法连接到远程主机”结束
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);
}
}
aix@aix:~$ telnet whois.internic.net 43
Trying 199.7.57.74...
Connected to whois.internic.net.
Escape character is '^]'.