win32 recv 判断是否接收完成解决方法

win32 recv 判断是否接收完成
在阻塞模式下recv咋判断是否正常返回,百度谷歌都查过了,没啥好方法

msdn 说recv返回0是接收完成了,用的这个

apache默认正常断开连接的时间是15秒,我recv一直阻塞在那等15秒才能返回0,
如果设置了超时时间它倒是到时间返回了,不过拿到的结果是超时了,也不知道有没有接收完成

服务器端都是别人的,我不能控制的
不知道大家有啥好的方法判断是否接收完成,别等时间那么长

------解决方案--------------------
1,通信有协议,你收到完整的应答了还等什么?
2,read返回0,表明对端关闭。
2,服务端改不了,你就不写了吗?在1,2的基础上,设置客户端超时,无论你用 SO_RCVTIMEO 还是使用select监听,编码实现超时检查,都是你的选择,你有权利做一切。
------解决方案--------------------
这就要看你用户对完整性的要求了

你的程序肯定有异常处理吧,你有没有考虑这么一种情况,就是传输过程中断网,这时候数据肯定不完整,你如何处理的,丢掉?还是也给用户?

当你无法判断数据完整性,又达到了超时时间,这时候用的策略应该和断网时一样

浏览器这时候的做法是接到多少用多少