, если вы используете nsstreams, тогда сделайте заголовок
:
@interface CrestronClient : UIViewController <NSStreamDelegate,UIAlertViewDelegate> {
NSInputStream *inputStream;
NSOutputStream *outputStream;
}
@end
.m Файл:
значения инициализации обычно в методе соединения или загрузка
CFReadStreamRef readStream;
CFWriteStreamRef writeStream;
CFStreamCreatePairWithSocketToHost(NULL, 192.168.1.1, 46651, &readStream, &writeStream);
inputStream = (NSInputStream *)readStream;
outputStream = (NSOutputStream *)writeStream;
[inputStream setDelegate:self];
[outputStream setDelegate:self];
[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[inputStream open];
[outputStream open];
unsigned char connectByteArray1[] = {
0x01, 0x00, 0x07, 0x7f, 0x00, 0x00, 0x01, 0x00, 0x03, 0x40
};
[outputStream write:connectByteArray1 maxLength:sizeof(connectByteArray1)];
тогда ваш метод делегата:
- (void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent {
switch (streamEvent)
{
case NSStreamEventOpenCompleted:
{
DDLogVerbose(@"Stream opened");
break;
}
case NSStreamEventHasBytesAvailable:
{
if(!rawData) {
rawData = [[NSMutableData data] retain];
}
uint8_t buf[1024];
unsigned int len = 0;
len = [(NSInputStream *)theStream read:buf maxLength:1024];
if(len) {
[rawData initWithBytes:buf length:len];
} else {
DDLogVerbose(@"no buffer!");
}
}
case NSStreamEventErrorOccurred:
{
if ([theStream isKindOfClass:[NSInputStream class]]) {
NSString* address = [self getAddress];
NSString* myIPAdress = [NSString stringWithFormat:@"IP Address: %@", address];
//[cClient updateRequest];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Cant Connect" message:[NSString stringWithFormat:@"Cant connect to server: %@, Make sure you are connected to the proper wireless network. Your Ip Address is %@",CCV.ipAddress,myIPAdress] delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:@"Reconnect", nil];
[alert show];
[alert release];
}
break;
}
case NSStreamEventEndEncountered:
{
[theStream close];
[theStream removeFromRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[theStream release];
break;
}
case NSStreamEventHasSpaceAvailable:
{
//DDLogVerbose(@"has space available");
break;
}
case NSStreamEventNone:
{
DDLogVerbose(@"none");
break;
}
default:
{
DDLogVerbose(@"Unknown event");
}
}
}
вы можете видеть, что есть случаи для подключения, а не подключения, отключения это то, что вам нужно