- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self initNetWorkConnection];
}
-(IBAction)sendMessage:(id)sender{
if (self.mesgField.text == nil || [self.mesgField.text isEqualToString:@""] ) {
return;
}
NSData *sendData = [[NSData alloc]initWithData:[self.mesgField.text dataUsingEncoding:NSASCIIStringEncoding]];
[self.outputStream write:[sendData bytes] maxLength:sendData.length];
if (self.mesgField.isFirstResponder) {
[self.mesgField resignFirstResponder];
}
self.mesgField.text = nil;
}
-(void)initNetWorkConnection{
CFReadStreamRef readStream;
CFWriteStreamRef writeStream;
CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)@"129.1.1.158", 5555, &readStream, &writeStream);
self.inputStream = (__bridge NSInputStream *)readStream;
self.outputStream = (__bridge NSOutputStream *)writeStream;
self.inputStream.delegate = self;
self.outputStream.delegate = self;
[self.inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[self.outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[self.inputStream open];
[self.outputStream open];
}
#pragma mark - NSStream Delegate
-(void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode{
NSLog(@"stream event %i", eventCode);
self.sendResultLb.text = @"stream event";
switch (eventCode) {
case NSStreamEventOpenCompleted:
self.sendResultLb.text = @"Stream opened";
break;
case NSStreamEventHasBytesAvailable:
if (aStream == self.inputStream) {
uint8_t buffer[1024];
int len;
while ([self.inputStream hasBytesAvailable]) {
len = [self.inputStream read:buffer maxLength:sizeof(buffer)];
if (len > 0) {
NSString *output = [[NSString alloc] initWithBytes:buffer length:len encoding:NSASCIIStringEncoding];
if (nil != output) {
// NSLog(@"\nreciving data------%@",buffer);
/// [self messageReceived:output];
self.sendResultLb.text = output;
}
}
}
}
if (aStream == self.outputStream) {
self.sendResultLb.text = @"Send OK";
}
break;
case NSStreamEventErrorOccurred:
NSLog(@"Can not connect to the host!");
self.sendResultLb.text = @"Can not connect to the host!";
break;
case NSStreamEventEndEncountered:
//[aStream close];
//[aStream removeFromRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
break;
default:
NSLog(@"Unknown event");
self.sendResultLb.text = @"Unknown event";
break;
}
}