2017-01-25 3 views
0

Как обрабатывать ошибки в потоке? Если пользователь подключен к неправильной сети, я хочу обработать это. Благодаря!Обработка ошибок в CFReadStream - Obj-C

Код:

- (void)initNetworkCommunication { 
CFReadStreamRef readStream; 
CFWriteStreamRef writeStream; 
CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)@"IP HERE", 7777, &readStream, &writeStream); 
_inputStream = (NSInputStream *)CFBridgingRelease(readStream); 
_outputStream = (NSOutputStream *)CFBridgingRelease(writeStream); 

[_inputStream setDelegate:self]; 
[_outputStream setDelegate:self]; 

[_inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; 
[_outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; 

[_inputStream open]; 
[_outputStream open]; 
} 

ответ

0

я понял, решение, которое работало в моем случае. Этот код будет распечатывать BSSID текущей сети в консоли, и я просто проверю, соответствует ли BSSID одному из моих предпочтительных сетей с помощью оператора if:

#import <SystemConfiguration/CaptiveNetwork.h> 

//Checks which network the user is connected to. 
CFArrayRef myArray = CNCopySupportedInterfaces(); 
CFDictionaryRef myDict = CNCopyCurrentNetworkInfo(CFArrayGetValueAtIndex(myArray, 0)); 
NSLog(@"Connected at: %@", myDict); 
NSDictionary *myDictionary = (__bridge_transfer NSDictionary*)myDict; 
NSString * BSSID = [myDictionary objectForKey:@"BSSID"]; 
NSLog(@"BSSID is: %@", BSSID); 

//Handling wrong/correct BSSID. 
if (![BSSID isEqualToString:@"PREFERRED BSSID HERE"]) { 
    //Handle error however you want. 
} 
else { 
    //If correct BSSID, handle that here however you want. 
} 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^