【发布时间】:2014-03-13 12:56:28
【问题描述】:
我有一个接收 IP 数据包的用户空间应用程序。它需要确定数据包的类型是 v4 还是 v6。假设“缓冲区”包含数据包,我想到了两种方法:
void *check_header(void *buffer) { struct iphdr *iph = (struct iphdr *)buffer; if (iph->version == IPV4) { /* IPv4 */ } else if (iph->version == IPV6) { /* IPv6 */ } ...... }- 找出机器的字节顺序。
- 相应地访问数据包中的版本字段。
有没有更好的方法来确定数据包类型?
【问题讨论】:
-
你这两种做法不是基本一样吗?只是一开始你实际上并不关心字节序。
标签: c network-programming ip