最近在使用socket来写一个HTTP代理的时候遇到这样一个问题:
创建一个socket连接到某一个页面后,连接一直挂起在read方法上,但是其实这个页面的内容已经加载完毕,可能是因为服务器没有发送结束标志,才导致客户端无法感知到这一点。
尝试了设置超时来解决长时间连接问题但是效果不大,有些视频的连接时间很长,会导致加载失败。
请问各位有没有遇到过这样的问题,有事如何解决的
创建一个socket连接到某一个页面后,连接一直挂起在read方法上,但是其实这个页面的内容已经加载完毕,可能是因为服务器没有发送结束标志,才导致客户端无法感知到这一点。
尝试了设置超时来解决长时间连接问题但是效果不大,有些视频的连接时间很长,会导致加载失败。
请问各位有没有遇到过这样的问题,有事如何解决的
socket.sendUrgentData(0xFF);
}catch(Exception ex){
reconnect();
}
通过查阅相关http协议的资料,发现http头信息里面一般会带有这类的关系数据流长度的信息,content-length或者choke的方式来说明。
通过实践也发现,一般socket通信的时候,在不设置socket超时时间的情况下,一般需要一段时间后才能知道服务器已经关闭了连接。这点对于代理的资源消耗还是比较大的