加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

iOS编程诡异问题-CFNetwork框架下 Keep-Alive的问题

(2013-05-30 15:34:11)
标签:

cfnetwork

http

keep-alive

it

keep-alive属性是http 1.1开始被赋予的属性,可以在timeout时间内 让服务端与客户端保持链接,提高效率。但是使用CFNetwork框架(CFHttp),设置 CFHTTPMessageSetHeaderFieldValue(request, CFSTR("Connection"), CFSTR("Keep-Alive")); 并不会生效。原因是框架会接管这一属性,所以即使你做了这样的设置,抓包后你可以看到connection的属性还是被设置成了closed,如果需要更改connection的属性,就必须设置CFReadStreamSetProperty(readStream, kCFStreamPropertyHTTPAttemptPersistentConnection, kCFBooleanTrue); 
再次抓包,就能看到connection的属性已经是keep-alive了。当然这还没有结束,这句话的意思是在再次打开stream的时候,底层框架会去重用已经存在的连接,所以如果你在处理晚请求就把上一连接关闭就会使这句话变得没有意义。 我们需要把CFReadStreamClose 挪动一下位置,在打开stream后再关掉上一个stream句柄就可以完成重用

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有