我试图理解下面的行在谷歌找到的样本套接字代码。
struct ether_header *eh = (struct ether_header *) sendbuf;
struct iphdr *iph = (struct iphdr *) (sendbuf + sizeof(struct ether_header));
struct ether_header *eh
->目前已知的用于访问结构变量的我只是想了解这些任务
*eh
(struct ether_header *) sendbuf;
最佳答案
在第一行
(struct ether_header *) sendbuf;
变量
sendbuf
被转换为指向struct ether_header
的指针,您可以阅读有关转换here的更多信息。第二行
(struct iphdr *) (sendbuf + sizeof(struct ether_header));
它将
sizeof(struct ether_header)
添加到指针sendbuf
中,通过这样做,它将在指向结构ether_头的指针所占用的区域之后到达内存区域,该头似乎包含指向结构iphdr
的指针。这是sendbuf的示意图
+------------------------------------------------------+
| eh |
+------------------------------------------------------+
| iph = eh + sizeof(struct ether_header) |
+------------------------------------------------------+
-- sendbuf --
关于c - linux以太网框架套接字说明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24889459/