首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CFStream在设置SOCKS代理配置后崩溃

CFStream在设置SOCKS代理配置后崩溃
EN

Stack Overflow用户
提问于 2012-08-22 09:50:09
回答 1查看 1.2K关注 0票数 7

下面的代码怎么了?我使用AsyncSocket连接到SOCKS代理,并在onSocketWillConnect委托方法上设置代理设置。如果我省略对CFReadStreamSetPropertyCFWriteStreamSetProperty的调用,套接字连接将顺利进行。否则,在没有可跟踪堆栈跟踪(可能与CFNetwork相关?)的已分配实例上,我会得到一个Not类型保留。有人知道是怎么回事吗?

代码语言:javascript
复制
CFDictionaryRef proxyDict = CFNetworkCopySystemProxySettings();
CFMutableDictionaryRef socksConfig = CFDictionaryCreateMutableCopy(NULL, 0, proxyDict);
CFDictionarySetValue(socksConfig, kCFStreamPropertySOCKSProxyHost, CFSTR("192.168.1.148"));
CFDictionarySetValue(socksConfig, kCFStreamPropertySOCKSProxyPort, (__bridge CFNumberRef)[NSNumber numberWithInt:3129]);
CFDictionarySetValue(socksConfig, kCFStreamPropertySOCKSVersion, kCFStreamSocketSOCKSVersion4);

// set SOCKS for read streams
CFReadStreamRef readStream = [sock getCFReadStream];
if (!CFReadStreamSetProperty(readStream, kCFStreamPropertySOCKSProxy, socksConfig)) {
  CFStreamError error = CFReadStreamGetError(readStream);
  NSLog(@"[SEVERE] Web Socket Read Stream Error: %ld[%ld]", error.domain, error.error);
}

// set SOCKS for write stream
CFWriteStreamRef writeStream = [sock getCFWriteStream];
if (!CFWriteStreamSetProperty(writeStream, kCFStreamPropertySOCKSProxy, socksConfig)) {
  CFStreamError error = CFWriteStreamGetError(writeStream);
  NSLog(@"[SEVERE] Web Socket Write Stream Error: %ld[%ld]", error.domain, error.error);
}

// Release
CFRelease(socksConfig);
CFRelease(proxyDict);
EN

回答 1

Stack Overflow用户

发布于 2012-11-22 13:04:00

来自CFReadStream的文档:

可以设置的属性配置流的行为,并且只能在特定时间(例如在打开流之前)进行修改。(实际上,您应该假设您只能在打开流之前设置属性,除非另有说明。)

onSocketWillConnect设置这些属性可能为时已晚。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12070493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档