gpt4 book ai didi

ios - CFStreamCreatePairWithSocketToCFHost CFStreamCreatePairWithSocketToHost 和分配

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:17:15 26 4
gpt4 key购买 nike

有人可以告诉我 CFStreamCreatePairWithSocketToCFHostCFStreamCreatePairWithSocketToHost 调用之间的区别吗?

还有什么是 CFAllocator,如果它是 NULLkCFAllocatorDefault 是什么意思。由于它的 kCFAllocatorDefault 是一个常量,有人可以解释 kCFAllocatorDefault 的优点还是仅用于历史目的?

最佳答案

CFStreamCreatePairWithSocketToCFHost之间的区别和 CFStreamCreatePairWithSocketToHost只是地址传入的方式。

CFStreamCreatePairWithSocketToHost , 你可以简单地定义一个 CFStringRef (或 NSString )代表主机的域/ip。

随着 CFHost版本,但是,它使您可以通过 sockaddr_in 控制地址结构,在 <netinet/in.h> 中定义.您创建一个 CFHostRef以类似于以下的方式:

struct sockaddr_in ip4addr; // note that this only works for ipv4, for ipv6 you need struct sockaddr_in6.

ip4addr.sin_family = AF_INET;
ip4addr.sin_port = htons(3490);
inet_pton(AF_INET, "10.0.0.1", &ip4addr.sin_addr);

CFDataRef sockData = CFDataCreate(NULL, &ip4addr, sizeof(ip4addr));
CFHostRef host = CFHostCreateWithAddress(NULL, sockData);
// use 'host' to create your stream

CFRelease(host);
CFRelease(sockData);

这使您可以(大部分是不必要的)控制您对套接字本身的操作,在大多数情况下,CFHost版本不是必需的。

对于 CFAllocator再一次,文档是您的 friend 。它用作 CoreFoundation的调试方式malloc , free , 和 realloc在整个代码中调用。

它是一个允许您编写自己的方法来为对象分配内存的对象,kCFAllocatorDefault使用标准 malloc , free , 和 realloc系统使用的调用。路过NULL对于 CFAllocatorkCFAllocatorDefault 完全一样,代码仅使用系统调用。

关于ios - CFStreamCreatePairWithSocketToCFHost CFStreamCreatePairWithSocketToHost 和分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9161946/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com