日期:2014-05-20  浏览次数:21300 次

java 判断HTTP连接中服务器是否已断开链接
最近在使用socket来写一个HTTP代理的时候遇到这样一个问题:
  创建一个socket连接到某一个页面后,连接一直挂起在read方法上,但是其实这个页面的内容已经加载完毕,可能是因为服务器没有发送结束标志,才导致客户端无法感知到这一点。
  尝试了设置超时来解决长时间连接问题但是效果不大,有些视频的连接时间很长,会导致加载失败。
请问各位有没有遇到过这样的问题,有事如何解决的

------解决方案--------------------
java中判断socket服务器端是否断开连接
------解决方案--------------------
帮顶。
------解决方案--------------------
1楼的有效
------解决方案--------------------
用线程过一段时间 再连一次就知道了
------解决方案--------------------
Socket.isConnected();不知道是不是这个。
------解决方案--------------------
关于socket 博客有介绍
------解决方案--------------------
一般来说,服务器不会关闭与客户端的连接,断开连接是客户端做的事情,一般客户端根据服务器发送的结尾来判断是否与服务器断开,判断结尾一般是通过接收服务器的响应头,响应头会告知正文的长度,只要读取数据超过这个长度说明响应完成,客户端断开链接。如果服务器响应数据不符合规范,那么你就要判断读取数据是否-1来确认是否到流结尾。
一般来说,如果服务器长时间未响应,这可能是网络造成的,遇到这种问题,就需要设置超时时间。
------解决方案--------------------
try{
socket.sendUrgentData(0xFF);
}catch(Exception ex){
reconnect();
}