Ich verwende NStream mit SSL-Eigenschaft für Socket-Verbindung. Es funktioniert gut, wenn ich die lokale IP-Adresse wie 192.168.1.77 verwende. Aber wenn ich einen Server wie www.xyz.com (es hat SecurityLevelTLSv1) verwendet, zeigt es einen Fehler Fehlercode: -9843, Nachricht: Operation konnte nicht abgeschlossen werden. (. NSUnknownErrorDomain Fehler -9843)Problem mit NStream SSL-Verbindung
Hier ist mein Code:
-(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];
}
Ich habe versucht, beide NSStream und CFStream verwenden. Ich bekomme in beiden Fällen den gleichen Fehler.
Die Ereignisse NSStreamEventOpenCompleted und NSStreamEventErrorOccurred werden aufgerufen.
Bitte helfen Sie mir dabei.
Vielen Dank im Voraus.
Ramesh.P