I need to implement a simple connection (link) connection between an iOS application and my Java socket server. I manage to connect these two, but I can not send any messages. The Java server is pretty much taken from this example , and this is part of my code where I establish a connection and (try) send a message to the server:
- (void)initNetworkCommunication { CFReadStreamRef readStream; CFWriteStreamRef writeStream; CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)@"192.168.0.10", 2004, &readStream, &writeStream); self.inputStream = objc_unretainedObject(readStream); self.outputStream = objc_unretainedObject(writeStream); [self.inputStream setDelegate:self]; [self.outputStream setDelegate:self]; [self.inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; [self.outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; [self.inputStream open]; [self.outputStream open]; } - (void)sendMessage { NSString *response = [NSString stringWithFormat:@"aaa"]; NSData *data = [[NSData alloc] initWithData:[response dataUsingEncoding:NSASCIIStringEncoding]]; [self.outputStream write:[data bytes] maxLength:[data length]]; } - (void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent { NSLog(@"stream event %i", streamEvent); switch (streamEvent) { case NSStreamEventOpenCompleted: NSLog(@"Stream opened"); break; case NSStreamEventHasBytesAvailable: if (theStream == 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(@"server said: %@", output);
source share