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

解决方案 »

  1.   

     java中判断socket服务器端是否断开连接  
      

  2.   

    Socket.isConnected();不知道是不是这个。
      

  3.   

    try{
          socket.sendUrgentData(0xFF);
    }catch(Exception ex){
          reconnect();
    }
      

  4.   

    不好意思很久没上csdn了,问题已经解决。有一个重要信息在问题里面没有提,这是一个http代理。现况如下:
       通过查阅相关http协议的资料,发现http头信息里面一般会带有这类的关系数据流长度的信息,content-length或者choke的方式来说明。
        通过实践也发现,一般socket通信的时候,在不设置socket超时时间的情况下,一般需要一段时间后才能知道服务器已经关闭了连接。这点对于代理的资源消耗还是比较大的