【发布时间】:2020-10-24 18:59:52
【问题描述】:
我正在寻找一种通过 java 建立 HTTP 请求以确保服务器处于活动状态的方法。
例如我想扫描IP地址范围192.168.1.1-255并打印与活动服务器的日志。,
当 HTTP 响应由于某种原因延迟时,我想setTimeOut 3 秒。
我尝试过这样做:
try {
Socket s = new Socket(InetAddress.getByName("192.168.1.2"), 80);
s.setSoTimeout(3 * 1000);
PrintWriter pw = new PrintWriter(s.getOutputStream());
pw.println("GET / HTTP/1.1");
pw.println("Host: stackoverflow.com");
pw.println("");
pw.flush();
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
String t;
while ((t = br.readLine()) != null) System.out.println(t);
br.close();
} catch (SocketTimeoutException e) {
System.out.println("Server is dead.");
} catch (ConnectException e) {
System.out.println("Server is dead.");
}
但是当请求花费的时间超过 3000 毫秒时,它似乎根本没有等待。
谢谢!
【问题讨论】:
-
有什么理由使用不使用某些http客户端库或至少HttpUrlConnection?
-
不特别,我想我已经尝试过使用它们但我没有成功。
-
使用 HttpURLConnection 你有setConnectTimeout 这可能符合你的要求。你也可能想检查docs.oracle.com/javase/tutorial/networking/urls/…
标签: java sockets httprequest connection-timeout