Frage

Ich bin mit NSStream mit SSL-Eigenschaft für Socket-Verbindung. Es funktioniert gut, wenn ich die lokale IP-Adresse wie 192.168.1.77 verwenden. Aber wenn ich einen Server wie www.xyz.com verwenden (es hat SecurityLevelTLSv1), zeigt sie einen Fehler Fehlercode: -9843, Nachricht: Operation nicht abgeschlossen werden kann. (NSUnknownErrorDomain Fehler -9843).

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 erhalte die gleichen Fehler in beiden Fällen.

NSStreamEventOpenCompleted und NSStreamEventErrorOccurred Ereignisse genannt werden.

Bitte helfen Sie mir in diesem.

Vielen Dank im Voraus.

Ramesh.P

War es hilfreich?

Lösung

Ich löste dieses Problem. Die folgende Codezeile tat alles.

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

Danke, Ramesh.P

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top