我想通过BSD Socket通过iOS设备发送图像。
众所周知,图像被分成几个要发送的包,因此接收者需要图像的大小。
所以我想将大小插入图像二进制数据的开头。
NSData* image = UIImagePNGRepresentation(screenShot);
NSUInteger len = [image length];
NSMutableData *header = [[NSMutableData alloc] initWithBytes:&len length:sizeof(NSUInteger)];
[header appendData:msg];
Receiver获取NSData并解析
NSUInteger len;
[header getBytes:&len length:sizeof(NSUInteger)]
我试图插入int,char和NSString,但我从来没有得到正确的大小数字。我的解决方案出了什么问题? 还有更好的吗?
答案 0 :(得分: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);
答案 1 :(得分:0)
我终于解决了iOS NSData + Base64类别http://projectswithlove.com/projects/NSData_Base64.zip
的问题