2012-05-26 149 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]]; 
相關問題