日期:2014-05-17  浏览次数:20795 次

请教大家一个问题,http能否知道客户端是否已经接收response完毕
客户端发起一个http请求,服务器收到后回一个字符串给客户端。
如果这个字符串很大,而服务器想要知道客户端是否完整地接收了这个字符串。

对于这种需求,应该怎样弄呢?

------解决方案--------------------
需要另外一边做判断,然后给你返回数据
------解决方案--------------------
客户端同样回复个响应给服务端 , 客户端对这个数据包进行完整性验证;
例如你回复的数据包长度是x  那么客户端在接收这个数据包的时候 进行长度 或 其他数据规范的验证,验证通过则告知服务端;现在的通信都是这样干的 ;
------解决方案--------------------
额,楼主不清楚http协议吗?
------解决方案--------------------
一定会接收完的,详细说下你的需求~
------解决方案--------------------
肯定是可以的。要看楼主怎么玩儿了。。以前在tomcat里面有个access的log,里面会记录发送了多少字节,以及时间
------解决方案--------------------
这种情况只能用webSocket了,就是目前支持的浏览器不多
这种socket协议支持双向通讯,当你客户端接受完毕后可以向服务器回发完全接收的消息
------解决方案--------------------
引用:
Quote: 引用:

这种情况只能用webSocket了,就是目前支持的浏览器不多
这种socket协议支持双向通讯,当你客户端接受完毕后可以向服务器回发完全接收的消息


我想了个简单的方法,就是发送两次http请求,你看可行否:
1 客户端发送http请求时带上一个随机生成的token
2 服务器处理完后暂时保存该token和处理结果,并把结果返回给客户端
3 客户端接收完整后,再发送一个http请求(带原先的token),通知服务器
4 服务器收到后写数据库,本次处理完毕。

这样应该就比较保险了吧?


思路可以,不过你要保证发送token的Http请求一定是在数据全部接受完以后才发送。
客户端可能不只需要一个token,TCP协议中至少有一个头信息是包含传输文件的长度。你可以模拟这个协议,将内容和内容长度同时发送到客户端,客户端根据这两个来判断是否接受完全,然后发送成功接受的http请求
------解决方案--------------------
引用:
客户端同样回复个响应给服务端 , 客户端对这个数据包进行完整性验证;
例如你回复的数据包长度是x  那么客户端在接收这个数据包的时候 进行长度 或 其他数据规范的验证,验证通过则告知服务端;现在的通信都是这样干的 ;


+1