2012-08-24 45 views
1

我想通过BSD套接字通过iOS设备发送图像。向NSData添加标题信息

我们知道,图像被分成几个包发送出去,所以接收机需要图像的大小。

所以我想插入大小到图像的二进制数据的开始。

NSData* image = UIImagePNGRepresentation(screenShot); 
NSUInteger len = [image length]; 
NSMutableData *header = [[NSMutableData alloc] initWithBytes:&len length:sizeof(NSUInteger)]; 
[header appendData:msg]; 

接收机得到的NSData和解析

NSUInteger len; 
[header getBytes:&len length:sizeof(NSUInteger)] 

我试图插入INT,CHAR和的NSString,但我从来没有大小的权数。我的解决方案有什么问题? 有更好的吗?

+0

你的代码是正确的。必须是别的东西。 – user523234

回答

0

发件人

uint32_t len = [image length]; 
NSLog(@"Len = %u", len); 
NSMutableData *header = [NSMutableData dataWithCapacity:sizeof(len) + len]; 
[header appendBytes:htonl(len) length:sizeof(len)]; // use network order 
[header appendData:image]; 

接收机

uint32_t len; 
[header getBytes:&len length:sizeof(uint32_t)]; 
len = ntohl(len); // network to host 
printf("Len = %u\n", len);