当谈到这个问题时,我很关心字节序列。也许我正在过度考虑我必须担心的事情。将字节数组转换为in_addr或in6_addr和endianness
输入到我的代码看起来像一个包:
我收到一个包含一些字节的网络数据包。如果我知道的字节数组中的索引(以及具有有效数据),其中in_addr
是,它是安全做这样的事情:
uint8_t* addrPtr = packet[IP_IDX];
struct in_addr addr;
memcpy((void*) addr, addrPtr, sizeof(in_addr));
这是安全的,无论字节顺序呢?
对于in6_addr,实际上是16个字节呢?
谢谢。
当我想将它发回时怎么办?假设已经通过send()发送出去的缓冲区已经处于网络字节顺序? – Anon 2011-02-08 20:44:43
@Anon,这取决于你的协议。在正常情况下,是的,在调用`send()`之前,您发送的缓冲区是按网络字节顺序排列的。 – 2011-02-08 23:11:24