免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7578 | 回复: 6

[C] libcurl怎样判断数据接收完成? [复制链接]

论坛徽章:
0
发表于 2013-12-17 14:18 |显示全部楼层
rt,一般设置CURLOPT_WRITEFUNCTION回调后,libcurl会多次自动调用这个回调;
size_t cb(void *contents, size_t size, size_t nmemb, void *userp)
curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, cb );

怎么在这个回调中判断数据接收完毕?

多谢!

论坛徽章:
0
发表于 2013-12-17 15:03 |显示全部楼层
没人碰到过这个问题吗?

论坛徽章:
0
发表于 2013-12-17 15:06 |显示全部楼层
比如http get接收json数据,应该怎么判断接收完成?

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
发表于 2013-12-17 15:21 |显示全部楼层
。。。curl_easy_perform返回不就结束了吗?

论坛徽章:
1
2015小元宵徽章
日期:2015-03-06 15:57:20
发表于 2013-12-17 15:24 |显示全部楼层
本帖最后由 快乐的土豆 于 2013-12-17 15:25 编辑

不判断,因为从libcurl(或者说tcp)的角度来说,只有连接中断,根本就没有数据发完一说

你没有熟悉这种编程模式的思维方式, libcurl只会在有数据的数据调用你的接口,甚至连每次处理多少数据都不保证,
你需要:1,将不完整的数据在多次callback之间缓存下来,
          2,自己去判断业务数据结束了,比如json的最后一个},比如http的结束标志.

论坛徽章:
0
发表于 2013-12-17 15:35 |显示全部楼层
回复 5# 快乐的土豆

大哥所言极是, 只有蛋疼的自己做逻辑判断.

多谢!


   

论坛徽章:
7
摩羯座
日期:2013-12-05 10:42:57辰龙
日期:2013-12-27 13:40:49亥猪
日期:2014-01-15 09:10:37天秤座
日期:2014-01-20 11:22:20辰龙
日期:2014-01-26 17:02:25午马
日期:2014-01-27 14:22:34水瓶座
日期:2014-02-19 09:36:40
发表于 2013-12-17 16:06 |显示全部楼层
libcurl这个不错,我也想学学
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP