今天给各位分享javasolinger的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
1、java socket里的time_wait状态怎么处理?有什么有效的解决办法吗,谢谢!2、java远程获取网页信息,这段代码解释下3、如何解决大量JAVA客户端Socket关闭时TIME
java socket里的time_wait状态怎么处理?有什么有效的解决办法吗,谢谢!
TIME_WAIT这个状态是TCP/IP设计时为考虑网络的可靠性所必须的,主动发起关闭连接的一方在接收到被动关闭连接方发出的FIN后就会进入TIME_WAIT状态,这个状态最长会持续2*MSL(Max Segment Life)时间,其作用是(1)主动方发出的ACK可能会在网络中丢失,如果丢失被动方会重新发出FIN,如果提前关闭了连接就无法接收到重发的FIN。(2)使游荡在网络中的分组在经过2*MSL超时后消失。
TIME_WAIT这个设计是为了网络可靠性的考虑,具体设定时间长短需要根据网络情况决定,超时时间Windows默认设置一般为四分钟,也就是说主动方打开的端口最长在四分钟内不会被释放,导致可用端口减少。
TIME_WAIT的默认等待时间操作系统设置一般都较为保守,如果网络连接中出现大量TIME_WAIT状态,可以考虑修改设置(1)修改操作系统配置减少TIME_WAIT时间,Windows上的设置方法是进入注册表的HKLM-SYSTEM-CurrentControlSet-services-TcpIp-Parameters,添加一个DWORD项“TcpTimedWaitDelay”,时间可设置的短一些(比如60秒或30秒)(2)使用Socket提供的SO_LINGER选项,当SoLinger设置为0时Socket会取消关闭连接等待(不建议)。
java远程获取网页信息,这段代码解释下
/**
* 发送get请求
* @param url 请求路径
* @param contentEncode 编码格式
* @return
*/
public static String getMethod(String url, String contentEncode) {
//实例化参数对象
HttpParams httpParameters = new BasicHttpParams();
//设置参数
HttpConnectionParams.setConnectionTimeout(httpParameters, connectionTimeout);
HttpConnectionParams.setSoTimeout(httpParameters, soTimeout);
HttpConnectionParams.setLinger(httpParameters, soLinger);.
//构造请求对象
DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters);
String html = “”;
try {
//使用Get请求方式,并传入请求地址
HttpGet httpget = new HttpGet(url);
//发送Get请求,并返回HttpResponse对象
HttpResponse response = httpClient.execute(httpget);
//获取返回内容
HttpEntity httpEntity = response.getEntity();
if (httpEntity != null) {
//转换返回内容
InputStream instream = httpEntity.getContent();
if (instream == null) {
return null;
}
try {
if (httpEntity.getContentLength() Integer.MAX_VALUE) {
throw new IllegalArgumentException(“HTTP entity too large to be buffered in memory”);
}
int i = (int) httpEntity.getContentLength();
if (i 0) {
i = 4096;
}
Reader reader = new InputStreamReader(instream, contentEncode);
CharArrayBuffer buffer = new CharArrayBuffer(i);
char[] tmp = new char[1024];
int l;
while ((l = reader.read(tmp)) != -1) {
buffer.append(tmp, 0, l);
}
return buffer.toString();
} finally {
instream.close();
EntityUtils.consume(httpEntity);
}
}
} catch (ClientProtocolException e) {
log.error(HttpUtil.class.getName() + ” getMethod error:”, e);
} catch (IOException e) {
log.error(HttpUtil.class.getName() + ” getMethod error:”, e);
} finally {
httpClient.getConnectionManager().shutdown();
}
return html;
}
如何解决大量JAVA客户端Socket关闭时TIME
TIME_WAIT这个状态是TCP/IP设计时为考虑网络的可靠性所必须的,主动发起关闭连接的一方在接收到被动关闭连接方发出的FIN后就会进入TIME_WAIT状态,这个状态最长会持续2*MSL(Max Segment Life)时间,其作用是(1)主动方发出的ACK可能会在网络中丢失,如果丢失被动方会重新发出FIN,如果提前关闭了连接就无法接收到重发的FIN。(2)使游荡在网络中的分组在经过2*MSL超时后消失。
TIME_WAIT这个设计是为了网络可靠性的考虑,具体设定时间长短需要根据网络情况决定,超时时间Windows默认设置一般为四分钟,也就是说主动方打开的端口最长在四分钟内不会被释放,导致可用端口减少。
TIME_WAIT的默认等待时间操作系统设置一般都较为保守,如果网络连接中出现大量TIME_WAIT状态,可以考虑修改设置(1)修改操作系统配置减少TIME_WAIT时间,Windows上的设置方法是进入注册表的HKLM-SYSTEM-CurrentControlSet-services-TcpIp-Parameters,添加一个DWORD项“TcpTimedWaitDelay”,时间可设置的短一些(比如60秒或30秒)(2)使用Socket提供的SO_LINGER选项,当SoLinger设置为0时Socket会取消关闭连接等待(不建议)。
javasolinger的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、javasolinger的信息别忘了在本站进行查找喔。