在目标C中创建数据包

时间:2012-02-26 22:13:22

标签: iphone ios nsdata

我正在尝试创建此数据包。我有4个方法用于创建数据,然后还有一个方法将它们组合在一起进行发送。 我有一切工作很好,但是4种方法中的一种需要计算最终数据包的总大小..但我不知道如何做到这一点作为数据包的一部分,应该按照数据包的顺序排在第3位(方法1,2,3,4)当数据包被发送时。

基本上我的数据包构造方法看起来像这样

- (void) constructRequest
{
//create data packet
    NSMutableData * myConstructedMutableDataPacket = [[NSMutableData alloc] init];

//init methods to get the required data
    NSData *protocol = [self addProtocol]; //nsdata type
    NSData *versionNum = [self addVersionNum]; //nsdata type
    NSData *size = [self addSize]; //nsdata type
    NSData *requestSig = [self addRequestSig]; //nsdata type


    [myConstructedMutableDataPacket appendData:protocol];
    [myConstructedMutableDataPacket appendData:versionNum];
   [myConstructedMutableDataPacket appendData:size]; ///but I dont have the size yet.. how do i get it?
    [myConstructedMutableDataPacket appendData:requestSig];


//print to file for testing
    [myConstructedMutableDataPacket writeToFile:@"/Users/imac/Desktop/_dataDump.dat" atomically:YES];

}

你可以看到我不知道我的 myConstructedMutableDataPacket 大小,我需要在创建它之前添加大小 ...我怎么能绕过它?

1 个答案:

答案 0 :(得分:1)

您可以在protocol,versionNu和requestSig组成的末尾创建一个临时NSData对象,然后将其发送到您的addSize方法。然后,您可以按正确的顺序重新创建要初始化的NSData对象。