2012-08-24 6 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를 얻을 내가 INT, CHAR하고있는 NSString를 삽입하려고

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

구문 분석,하지만 난 크기의 오른쪽 번호를하지 않습니다. 내 솔루션에 무슨 문제가 있습니까? 더 좋은 것들이 있습니까?

+0

귀하의 코드는 괜찮 아이폰 OS있는 NSData + Base64로 분류하여 문제를 해결했다. 다른 뭔가가 있어야합니다. – 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);