2012-03-10 104 views
0

我想弄清楚如何以及如果你可以通过TCP套接字发送和接收数组。我在C目标上有点新手,但我已经能够发送和接收字符串。我只想让它现在做数组。Obj-C通过tcp套接字为iphone发送和接收数组。

(void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent { 

NSLog(@"stream event %i", streamEvent); 

switch (streamEvent) { 

    case NSStreamEventOpenCompleted: 
     NSLog(@"Stream opened"); 
     break; 
    case NSStreamEventHasBytesAvailable: 

     if (theStream == inputStream) { 

      uint8_t buffer[1024]; 
      int len; 

      while ([inputStream hasBytesAvailable]) { 
       len = [inputStream read:buffer maxLength:sizeof(buffer)]; 
       if (len > 0) { 
        output = [[NSString alloc] initWithBytes:buffer length:len encoding:NSASCIIStringEncoding]; 

        if (nil != output) { 



         chSent = [output substringWithRange: NSMakeRange (0, 6)]; 

         dimensionString = [output substringWithRange: NSMakeRange (7, 3)]; 
         colorString = [output substringWithRange: NSMakeRange (7, 3)]; 


         if ([chSent isEqualToString:@"dimen:"]) 
         { 

          dimensionInt = [dimensionString intValue]; 

         } 

         if ([chSent isEqualToString:@"color:"]) { 

          // insert array named color in here some how 

         }         


        } 
       } 
      } 
     } 
     break; 


    case NSStreamEventErrorOccurred: 

     NSLog(@"Can not connect to the host!"); 
     break; 

    case NSStreamEventEndEncountered: 

     [theStream close]; 
     [theStream removeFromRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; 
     // [theStream release]; 
     theStream = nil; 

     break; 
    default: 
     NSLog(@"Unknown event"); 
} 
} 

那是什么我有。 其中我已经把/ /插入数组是我想要把它

如果你可以提前致谢。

回答

1

您可以将数组数据(例如整数)作为字符串分隔,分隔符为“color:1; 2; 3; 4;”然后将这些字符串分开。如果你需要传递更复杂的数据结构,你可以编码,发送,解码。看看那个NSKeyedArchiver类。

+0

很酷的感谢,我需要在字符串中发送大约200个值我可以很容易地从发送者和接收者端做到这一点,但是这是保持流量下降的最佳方式吗? – NickREd 2012-03-10 16:15:40

+0

最好的方法是优化发送的数据结构,只需发送你所需要的。例如,如果您只需要短裤,则不要发送整数。然后,您需要确定是否需要“胖”接收器,例如,如果您需要制作一个平均值,您可以决定发送所有值(胖接收器),或者计算发件人并发送结果。 – fbernardo 2012-03-10 22:18:52

相关问题