URLConnection.connectionTimeout 是如何处理的?
How the URLConnection.connectionTimeout is handled?
给定代码:
HttpURLConnection huc = (HttpURLConnection) new URL( url ).openConnection();
huc.setConnectTimeout( 10000 );
huc.connect();
连接超时具体是如何处理的?设置了一些 HTTP header 还是什么?或者正在循环检查连接状态 connectionTimeout
时间?
我试图在源代码中找到它,但只有 long connectionTimout
字段...
可以这样想:
在 connect
内部,第一个并行计时器是 运行 用于连接超时。
如果计时器在实际连接建立(收到响应)之前结束,则失败。
实际上,在大多数平台上,操作系统可以设置超时参数并自行处理 - 以相同的方式。
没有看到 java 本机代码,但有 POSIX 方法,如 setsocketopt
用于设置超时。 POSIX connect
会超时。
在 java 中,超时是后来非常需要的附加功能,以利用这些可用的超时。
给定代码:
HttpURLConnection huc = (HttpURLConnection) new URL( url ).openConnection();
huc.setConnectTimeout( 10000 );
huc.connect();
连接超时具体是如何处理的?设置了一些 HTTP header 还是什么?或者正在循环检查连接状态 connectionTimeout
时间?
我试图在源代码中找到它,但只有 long connectionTimout
字段...
可以这样想:
在 connect
内部,第一个并行计时器是 运行 用于连接超时。
如果计时器在实际连接建立(收到响应)之前结束,则失败。
实际上,在大多数平台上,操作系统可以设置超时参数并自行处理 - 以相同的方式。
没有看到 java 本机代码,但有 POSIX 方法,如 setsocketopt
用于设置超时。 POSIX connect
会超时。
在 java 中,超时是后来非常需要的附加功能,以利用这些可用的超时。