C linux以太网帧套接字澄清
我正在努力理解google中的示例套接字代码中的以下几行C linux以太网帧套接字澄清,c,linux,C,Linux,我正在努力理解google中的示例套接字代码中的以下几行 struct ether_header *eh = (struct ether_header *) sendbuf; struct iphdr *iph = (struct iphdr *) (sendbuf + sizeof(struct ether_header)); struct ether\u header*eh->目前已知的*eh用于访问struct变量 我只是想了解这些作业 (结构以太网头*)sendbuf (struct
struct ether_header *eh = (struct ether_header *) sendbuf;
struct iphdr *iph = (struct iphdr *) (sendbuf + sizeof(struct ether_header));
struct ether\u header*eh
->目前已知的*eh
用于访问struct变量
我只是想了解这些作业
(结构以太网头*)sendbuf代码>
(struct iphdr*)(sendbuf+sizeof(struct ether_头))代码>
(struct ether_header *) sendbuf;
变量sendbuf
被转换为指向struct ether\u头的指针,您可以阅读有关转换的更多信息
第二行
(struct iphdr *) (sendbuf + sizeof(struct ether_header));
它将sizeof(struct-ether\u头)
添加到指针sendbuf
,通过这样做,它到达指向struct-ether\u头的指针所占用的内存区域之后的内存区域,该内存区域似乎包含指向structiphdr
这是sendbuf的示意图
+------------------------------------------------------+
| eh |
+------------------------------------------------------+
| iph = eh + sizeof(struct ether_header) |
+------------------------------------------------------+
-- sendbuf --
在第一行
(struct ether_header *) sendbuf;
变量sendbuf
被转换为指向struct ether\u头的指针,您可以阅读有关转换的更多信息
第二行
(struct iphdr *) (sendbuf + sizeof(struct ether_header));
它将sizeof(struct-ether\u头)
添加到指针sendbuf
,通过这样做,它到达指向struct-ether\u头的指针所占用的内存区域之后的内存区域,该内存区域似乎包含指向structiphdr
这是sendbuf的示意图
+------------------------------------------------------+
| eh |
+------------------------------------------------------+
| iph = eh + sizeof(struct ether_header) |
+------------------------------------------------------+
-- sendbuf --
第一个是访问以太网报头ptr,第二个是访问iphdr ptr。(以太网数据包包含IP数据包)第一个是访问以太网报头ptr,第二个是访问iphdr ptr。(以太网数据包包含IP数据包)在这些赋值中,您不了解的是什么?我只想了解这行代码struct iphdr*iph=(struct iphdr*)(sendbuf+sizeof(struct ether_header));第一个是访问以太网报头ptr,第二个是访问iphdr ptr。(以太网数据包包含IP数据包)您知道指针,对吗?这些赋值中您不了解的是什么?我只想了解这行代码struct iphdr*iph=(struct iphdr*)(sendbuf+sizeof(struct ether_header));第一个是访问以太网报头ptr,第二个是访问iphdr ptr。(以太网数据包包含IP数据包)您知道指针,对吗?嗯,如果没有char*转换到sendbuf,该增量不是以太头结构大小的倍数吗?嗯,如果没有char*转换到sendbuf,该增量不是以太头结构大小的倍数吗?