如何检查主机是否可达?

dba*_*a23 2 java sockets

boolean reachable = false;

while (true){
    Socket socket = null;
    while (reachable == false && (System.currentTimeMillis() < (CUR_TIME + 1000))){
        try {
            socket = new Socket(hostname, 80);
            reachable = true;
        } catch ( UnknownHostException e) {
            reachable = false;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我想最终调用status = httpConnection.getResponseCode();,但如果用户输入无法访问的主机,则会出现错误。因此,我使用上面的代码来确保主机可用。但是,reachable即使主机信誉良好(如其他方法所示),也始终返回 false。

OsY*_*YYY 6

HttpURLConnection :

try{
    URL url = new URL("http://tes23123t.com");
    HttpURLConnection connection = (HttpURLConnection)url.openConnection();
    connection.setRequestMethod("GET");
    connection.connect();
    int respCode = connection.getResponseCode();
    System.out.println(respCode);
}catch(UnknownHostException e){
    System.out.println("Unknown Host!!");
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您更喜欢更容易实现,则可以使用 OKHttp 库