1

BSD Socket を使用して iOS デバイス経由で画像を送信したい。

ご存知のように、画像はいくつかのパッケージに分割されて送信されます。そのため、受信者は画像のサイズを必要とします。

そこで、画像のバイナリデータの先頭にサイズを挿入したいと思います。

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 を挿入しようとしましたが、適切なサイズの数値が得られません。私のソリューションの何が問題になっていますか? より良いものはありますか?

4

2 に答える 2

0

私は最終的に iOS NSData+Base64 カテゴリの問題を解決しましたhttp://projectswithlove.com/projects/NSData_Base64.zip

于 2012-08-31T06:37:39.183 に答える
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);
于 2012-08-24T12:30:03.090 に答える