2011-05-23 89 views
1

任何一個都可以爲我提供一個通過wifi網絡發送NSArray對象的好方法。 我有一個代碼,通過無線網絡發送文本消息(字符串)。 我的代碼是如何通過WiFi網絡傳遞NSArray?

發送

- (void) sendText:(NSString *)string { 
    const uint8_t *message = (const uint8_t *)[string UTF8String]; 


    if (_outStream && [_outStream hasSpaceAvailable]) 
     if([_outStream write:message maxLength:strlen((char *)message)] == -1) 
      NSLog(@"Failed sending data to peer"); 
} 

接收機側

- (void) stream:(NSStream *)stream handleEvent:(NSStreamEvent)eventCode 
{ 
    switch(eventCode) { 

     case NSStreamEventHasBytesAvailable: 
     { 
      if (stream == _inStream) { 
       // read it in 
       unsigned int len = 0; 
       len = [_inStream read:buf maxLength:buffSize]; 
       buf[len] = '\0'; 
       if(!len) { 
        if ([stream streamStatus] != NSStreamStatusAtEnd) 
         NSLog(@"Failed reading data from peer"); 
       } else { 
        NSString *message = [NSString stringWithUTF8String:(char *)buf]; }} 

現在消息包含我收到的消息... 但是我需要發送的NSArray對象通過wifi可以任何一個幫我做到這一點..

回答

4

可以使用NSKeyedArchiver獲得NSData對象你的NSArray中, NSData對象只是二進制數據的包裝,所以你可以通過你的套接字發送它。當您收到數據時,首先將其轉換回NSData對象,然後使用NSKeyedUnarchiver類來恢復數組。

+3

如果你在數組中有自定義對象,只需使它們的類符合NSCoding並實現NSCoding方法。 :) – 2011-05-23 10:34:25

1

你需要機制(協議),將發送數組的元素從發送端和以同樣的方式,將得到在接收端