我正在尝试创建此数据包。我有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 大小,我需要在创建它之前添加大小 ...我怎么能绕过它?
答案 0 :(得分:1)
您可以在protocol,versionNu和requestSig组成的末尾创建一个临时NSData对象,然后将其发送到您的addSize方法。然后,您可以按正确的顺序重新创建要初始化的NSData对象。