2009-11-09 10 views
5

Soket bağlantısı için SSL özelliği olan NSStream kullanıyorum. 192.168.1.77 gibi yerel IP adresini kullandığımda iyi çalışıyor. Ama eğer www.xyz.com (SecurityLevelTLSv1) gibi bir sunucuyu kullanırsam, hata kodunu gösterir: -9843, Mesaj: İşlem tamamlanamadı. Ben NSStream ve CFStream ikisini de kullanarak çalıştıNSStream SSL Bağlantısında Sorun

-(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]; 
} 

: (. NSUnknownErrorDomain hata -9843)

İşte benim kodudur. Her iki durumda da aynı hatayı alıyorum.

NSStreamEventOpenCompleted ve NSStreamEventErrorOccurred olayları çağrılır.

Lütfen bana yardım edin.

Şimdiden teşekkürler.

Ramesh.P

cevap

6

Ben bu sorunu çözdü. Aşağıdaki kod satırı her şeyi yaptı.

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

sayesinde Ramesh.P