在Objective C中创建网络数据包的规范方法是什么?

时间:2013-03-07 19:23:39

标签: objective-c network-programming packets

来自python,我可以做这样的事情。

values = (1, 'ab', 2.7)
s = struct.Struct('I 2s f')
packet = s.pack(*values)

我可以使用python非常简单地将任意类型组合在一起。在Objective C中执行此操作的标准方法是什么?

2 个答案:

答案 0 :(得分:1)

问题不太清楚,但也许你正在寻找一个(打包的结构)?

__attribute__((packed)) struct NetworkPacket {
    int integer;
    char character;
};

答案 1 :(得分:1)

使用C结构是正常的方法。例如:

typedef struct {
    int a;
    char foo[2];
    float b;
} MyPacket;

将为int,2个字符和float定义类型。然后,您可以将这些字节解释为用于写入的字节数组:

MyPacket p = {.a = 2, .b = 2.7};
p.foo[0] = 'a'; 
p.foo[1] = 'b';

char *toWrite = (char *)&p; // a buffer of size sizeof(p)