外包“网络字节顺序”处理?

时间:2013-02-21 14:37:49

标签: c++ networking endianness

我正在使用许多[Filter]模块来处理数据,最后将这些数据写入不同的设备。

[Filter] -> [Filter] -> [Writer]

配置与运行时有关。问题通常是[Filter]并不真正知道它可能是链的末端以及它的数据写入的位置。

某些[Filter]在Google协议缓冲区中产生输出,[Writer]可能正在写入文件。但是在结果数据生成的情况下,应该通过网络传输......就像这样:

#pragma pack(push,1)
struct data_s {
    char a;
    int i;
    int j;
    char str[64];
};
#pragma pack(pop)
data_t d;
//...
d.i = htonl( d.i);
d.j = htonl( d.j);
this->write( d );

在这种情况下......有没有办法在每个[Filter]和[Writer]中都这样做......作者只看到一块内存,没有任何结构。有办法吗

[Filter] -> [Filter] -> [hton_struct] -> [Writer]

外包结构化网络字节顺序转换。是否有一种舒适且可重复使用的方式来传输带有转换描述的网络字节顺序的大块内存?因此,不必在[Filter]中实现它,而是仅在上述这些前提条件适用时才使用的组件?

0 个答案:

没有答案