-1

我想以字节为单位传输数据,并且在接收方想要生成相同的 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 224d616a 6f72223a 2232227d a3a3a3a3 a3a3a3a3 a3a3a3a3 a3a3a3a3 a3a3a3a3 a3a3a3a3 a3a3a3a3 a3a3a3a3 a3a3a3a3 a3a3a3a3 a3a3a3a3 a3a3a3a3>

4

1 回答 1

0

接收者必须知道确切的字节数。如何实现取决于使用哪种协议将数据从发送方传输到接收方。在 HTTP 的情况下,它可以从 Content-Length: 标头中推断出来。如果您只从发送方向接收方发送一条消息,则接收方可以计算直到 EOF 的字节数。或者您将字节数与实际数据一起传输。

但是接收者不能仅从纯字节中确定正确的长度。

于 2013-08-12T19:58:55.203 回答