我试图理解下面的行在谷歌找到的样本套接字代码。

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/

10-12 16:03