Obj-C通过tcp套接字为iphone发送和接收数组。
问题描述:
我想弄清楚如何以及如果你可以通过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");
}
}
那是什么我有。 其中我已经把/ /插入数组是我想要把它
如果你可以提前致谢。
答
您可以将数组数据(例如整数)作为字符串分隔,分隔符为“color:1; 2; 3; 4;”然后将这些字符串分开。如果你需要传递更复杂的数据结构,你可以编码,发送,解码。看看那个NSKeyedArchiver类。
很酷的感谢,我需要在字符串中发送大约200个值我可以很容易地从发送者和接收者端做到这一点,但是这是保持流量下降的最佳方式吗? – NickREd 2012-03-10 16:15:40
最好的方法是优化发送的数据结构,只需发送你所需要的。例如,如果您只需要短裤,则不要发送整数。然后,您需要确定是否需要“胖”接收器,例如,如果您需要制作一个平均值,您可以决定发送所有值(胖接收器),或者计算发件人并发送结果。 – fbernardo 2012-03-10 22:18:52