2012-05-26 58 views
2

我正在编写处理服务器端和客户端的iPhone应用程序。我遇到的问题是我无法从我的应用程序(客户端)发送任何数据到我的Java程序(服务器端)。我现在有点困难,任何帮助将不胜感激。无法将数据从obj-c客户端发送到java服务器

我的OBJ-C代码(客户端):

- (BOOL) initConnection: (NSString *) ipAddr { 
CFWriteStreamRef writeStream; 
CFStreamCreatePairWithSocketToHost(NULL, (__bridge CFStringRef)ipAddr, 4444, NULL, &writeStream); 

if(!writeStream) 
    return NO; 

outStream = (__bridge NSOutputStream *) writeStream; 

[outStream setDelegate:self]; 

[outStream scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode]; 

[outStream open]; 

self.data = [[NSData alloc] init]; 

return YES; 


- (void) sendCommand: (NSString *) command { 
NSLog(@"Command that was sent to method: %@", command); 

self.data = [NSData dataWithBytes:@"This is a test\n" length:16]; 

int bytes = [outStream write:[self.data bytes] maxLength:[self.data length]]; 

我的Java代码(服务器):

private void handleCommands() { 
    try { 
     do { 
      System.out.println("Right before reading socket"); 
      msg = in.readLine(); 

      System.out.println("Received: " + msg); 

     } while(!EOC); 
    } catch(IOException e) { 
     e.printStackTrace(); 
    } 
} 

什么情况是,当我从我的应用程序发送数据的代码在我的服务器方永远不会过去
msg = in.readLine()。当我终止应用程序端的连接时,它会打印出收到的字符串是null

+0

你从哪里弄来'in'? –

回答

1

上。实际上这行代码:

self.data = [NSData dataWithBytes:@"This is a test\n" length:16]; 

字符串长度为15,但你传递16参数。也许它正在等待最后一个字符?

尽量不要硬编码字符串的长度,喜欢的东西:

NSString *msgStr = @"This is a test\n"; 
self.data = [NSData dataWithBytes:msgStr length:[msgStr length]]; 
相关问题