cfsocket是对bsd套接字的封装,cfnetwork是低级的,高性能的framework,是bsd sockets的扩展,整合了run loop。
CFStream是基于cfsoket, 它不关注是ftp,还是http stream,意思是说cfstream是cfftp, cfhttp的基础。怎么样初始化一个cfstream呢?
1。先创建绑定流到socket。CFStreamCreatePairWithSocketToCFHost/...
2。设置回调函数。和监听事件
3。流schedule到runloop CFReadStreamScheduleWithRunLoop/CFWriteStreamScheduleWithRunLoop
4。open stream
cfhttp/cfftp基于stream来读写,它们都是基于cfstream的基础的。cfhttp是针对url来处理,而cfftp是针对ftp处理的。
可以参考这篇文章:http://gaohaijun.blog.163.com/blog/static/1766982712010112495246225/
要创建一个客户定制的 CFStream 是不可能的。比如,如果你想要对客户数据库文件当中的对象进行数据流操作,那么仅仅希望通过创建具有自己风格的 CFStream 对象是办不到这一点的,而只有通过定制 NSStream 的子类(利用 Objective-C)才可以做到。由于 NSStream 对象可以很容易的被转换为 CFStream 对象,所以你创建的 NSStream 子类可以被用在任何需要 CFStream 的地方。 意思是说用户继承cfstream是实现不了用户索需要的功能, 而nsstream是基于cfstream层,nsstream相对cfstream的优点:可扩展,可定制。参考cfnetwork programming guide