2013-08-12 1 views
-1

바이트로 데이터를 전송하고 수신기 측에서 동일한 NSData 객체를 다시 생성하려고합니다. 내 데이터 크기가 계속 변할 수 있습니다. 동일한 객체를 다시 생성하기 위해 수신기 측에서 사용할 올바른 길이를 정의 할 수 있습니다.바이트 스트림에서 올바른 NSData 객체 생성

NSDictionary *aWritableFields = @{@"Data1": @"1", @"Data2": @"2", @"Data3": @"3", @"Data4" : @"4"}; 
NSData *aData = [NSJSONSerialization dataWithJSONObject:aWritableFields options:0 error:nil]; 
uint32_t *bytes = (uint32_t *)aData.bytes; 

수신자 측에서는 동일한 NSData 객체를 다시 생성하려고합니다. 이를 위해 나는 다음과 같은 방법을 사용하고 있지만 이것이 여분의 정보를 제공하고 있습니다. 그것이 올바른 NSData 객체를 제공하도록 길이를 어떻게 정의해야합니까? 내가 보낸

[NSData dataWithBytes:iBytes length:sizeof(uint32_t)*24]; 

데이터 객체이었다 :

< 7b225555 4944223a 2231222c 224d696e 6f72223a 2231222c 22506f77 6572223a 2233222c 224d616a 6f72223a 2232227d>

그러나 수신기 끝에 나는 때문에 과도한 길이의 수 :

< 7b225555 4944223a 2231222c 224d696e 6f72223a 2231222c 22506f77 6572223a 2233222c 22 4d616a 6f72223a 2232227d a3a3a3a3 a3a3a3a3 a3a3a3a3 a3a3a3a3 a3a3a3a3 a3a3a3a3 a3a3a3a3 a3a3a3a3 a3a3a3a3 a3a3a3a3 a3a3a3a3 a3a3a3a3>

답변

0

수신기는 바이트의 정확한 수를 알 수있다. 이것이 달성되는 방법은 에 따라 달라지며 프로토콜은 송신자에서 수신자로 데이터를 전송하는 데 사용됩니다. HTTP의 경우 의 경우 Content-Length : 헤더에서 추론 할 수 있습니다. 보낸 사람에서받는 사람에게 메시지 하나만 보내는 경우 수신자는 EOF까지 바이트 수를 계산할 수 있습니다. 또는 실제 데이터와 함께 바이트 수를 전송합니다.

그러나 수신기는 순수 바이트만으로 정확한 길이를 결정할 수 없습니다.