How can I check the possible reason for java.net.SocketTimeoutException. I have a program that just pings to a website. however I am getting SocketTimeoutException. I know it is happening due to timeout expiring before the connection is established. But I want to know the precise reason of the issue. Like It is to do with internal DNS failure or due to unavailability of the internet or what !
Tried searching for similar questions but I didn't get the exact reason for not being able to establish the connection.
Below code snippet explains the problem
import java.net.HttpURLConnection;
import java.net.URL;
public class URLConnectionTest {
public static void main(String[] args) {
try {
String urlString = "https://www.google.com";
URL url = new URL (urlString);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setConnectTimeout(5000);
con.connect();
System.out.println("Connected !!!");
}
catch(Exception e) {
System.out.println("Error occurred while connecting" + e);
}
}
}
Now there are multiple outputs for different case.
When I turned off laptop's wifi Error occurred while connecting java.net.UnknownHostException: www.google.com
When I connect to wifi but router doesn't have the connectivity Error occurred while connecting java.net.SocketTimeoutException: connect timed out
Few lines of Stacktrace for Timeout
java.net.SocketTimeoutException: connect timed out at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)