我正在尝试创建这个数据包。我有 4 种方法用于创建数据,然后还有一种方法将它们组合在一起进行发送。 我的一切都很好,但是 4 种方法中的一种需要计算最终数据包的总大小。但我不确定如何将其作为数据包的一部分来计算,并且应该在数据包的顺序中排在第三位(方法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 大小,我需要在创建它之前将其添加到 size 中……我该如何解决这个问题?
最佳答案
您可以在末尾创建一个由协议(protocol)、versionNu 和 requestSig 组成的临时 NSData 对象,然后将其发送到您的 addSize 方法。然后您可以以正确的顺序重新创建要初始化的 NSData 对象。
关于iphone - 在 objective-c 中创建数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9457702/