iphone - 在 objective-c 中创建数据包

标签 iphone ios nsdata

我正在尝试创建这个数据包。我有 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/

相关文章:

iphone - Swift:我需要获取 UIVIew 集合之一的索引才能知道哪个集合被点击

ios - 如何在 ios 中使用 facebook sdk 4.1 获取用户信息?

objective-c - 如何使用按位运算符将带有 NSData 字节的 Obj-C 方法转换为 Swift

objective-c - 将 NSData 转换为 NSString 时出错

iphone - 在哪里可以获得具有 UITouchPhaseStationary 阶段的触摸事件?

iphone - 更改搜索栏中的键盘颜色和外观

ios - 对象实例可以释放自己吗?

ios - 使用 UISlider 缩放 UIView

ios - 检查服务器镜像是否已经更新并重新下载

iphone - 在同一类 objective-c 中调用函数