给定代码:

HttpURLConnection huc = (HttpURLConnection) new URL( url ).openConnection();
huc.setConnectTimeout( 10000 );
huc.connect();


如何正确处理连接超时?设置了一些HTTP标头或什么?还是正在循环检查connectionTimeout时间的连接状态?

我试图在源代码中找到它,但是只有long connectionTimout字段...

最佳答案

认为是:

首先在connect内部,为连接超时运行并行计时器。
如果计时器在建立实际连接(收到响应)之前结束,则失败。

实际上,在大多数平台上,操作系统都可以设置超时参数,并以相同的方式自行处理。
没有看过Java本机代码,但是有POSIX方法(如setsocketopt)可以用来设置超时。 POSIX connect将给出超时。

在Java中,超时是后来更需要的一种利用这些可用超时的方法。

09-26 21:24