在这里的代码中,有一行:
struct iphdr * iph = (struct iphdr *)buffer;
Run Code Online (Sandbox Code Playgroud)
在ProcessPacket
函数where buffer
类型char*
.buffer
已经recvfrom
在主函数中给出了值.如何将简单的string(buffer
)转换为结构以及如何安全地提取数据?
iphdr:
struct iphdr {
#if defined(__LITTLE_ENDIAN_BITFIELD)
__u8 ihl:4,
version:4;
#elif defined (__BIG_ENDIAN_BITFIELD)
__u8 version:4,
ihl:4;
#else
#error "Please fix <asm/byteorder.h>"
#endif
__u8 tos;
__u16 tot_len;
__u16 id;
__u16 frag_off;
__u8 ttl;
__u8 protocol;
__u16 check;
__u32 saddr;
__u32 daddr;
/*The options start here. */
};
Run Code Online (Sandbox Code Playgroud)