gpt4 book ai didi

cocoa-touch - NSStream SSL 连接问题

转载 作者:太空宇宙 更新时间:2023-11-03 12:45:59 28 4
gpt4 key购买 nike

我正在使用带有 SSL 属性的 NSStream 进行套接字连接。当我使用本地 IP 地址(例如 192.168.1.77)时,它工作正常。但是如果我使用像 www.xyz.com 这样的任何服务器(它有 SecurityLevelTLSv1),它会显示错误错误代码:-9843,消息:无法完成操作。 (NSUnknownErrorDomain 错误 -9843。)

这是我的代码:

-(void) startSocket{
NSURL *website = [NSURL URLWithString:@"www.xyz.com"];
NSHost *host = [NSHost hostWithName:[website host]];
if(host) {
NSLog(@"Valid host");
[NSStream getStreamsToHost:host port:443 inputStream:&iStream outputStream:&oStream] ;
[self openStream];
}.

-(void)openStream{
NSMutableDictionary *settings = [NSMutableDictionary dictionaryWithCapacity:1];
[settings setObject:(NSString *)NSStreamSocketSecurityLevelTLSv1 forKey:(NSString *)kCFStreamSSLLevel];
[settings setObject:[NSNumber numberWithBool:YES] forKey:(NSString *)kCFStreamSSLAllowsAnyRoot];

[iStream retain];
[iStream setDelegate:self];
[iStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
CFReadStreamSetProperty((CFReadStreamRef)iStream, kCFStreamPropertySSLSettings, (CFTypeRef)settings);
//[iStream setProperty:NSStreamSocketSecurityLevelTLSv1 forKey:NSStreamSocketSecurityLevelKey];
[iStream open];

[oStream retain];
[oStream setDelegate:self];
[oStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
CFWriteStreamSetProperty((CFWriteStreamRef)oStream, kCFStreamPropertySSLSettings, (CFTypeRef)settings);
//[oStream setProperty:NSStreamSocketSecurityLevelTLSv1 forKey:NSStreamSocketSecurityLevelKey];
[oStream open];
}

我尝试同时使用 NSStream 和 CFStream。我在这两种情况下都遇到了同样的错误。

调用 NSStreamEventOpenCompleted 和 NSStreamEventErrorOccurred 事件。

请帮助我。

提前致谢。

拉梅什.P

最佳答案

我解决了这个问题。以下代码行完成了所有操作。

[settings setObject:@"www.xyz.com" forKey:(NSString *)kCFStreamSSLPeerName];

谢谢,拉梅什.P

关于cocoa-touch - NSStream SSL 连接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1700819/

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