我试图了解google中找到的示例套接字代码中的以下行。
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 iphdr *) (sendbuf + sizeof(struct ether_header));
答案 0 :(得分:4)
在第一行
(struct ether_header *) sendbuf;
变量sendbuf
被强制转换为指向struct ether_header
的指针,您可以阅读有关投射here的更多信息
第二行
(struct iphdr *) (sendbuf + sizeof(struct ether_header));
它将sizeof(struct ether_header)
添加到指针sendbuf
,通过这样做,它在指向struct ether_header的指针占用之后到达内存区域,这似乎包含指向struct {的指针。 {1}}
这是sendbuf
的示意图iphdr
答案 1 :(得分:1)
第一个是访问ethernet header ptr,接下来是访问iphdr ptr。 (以太网数据包包含IP数据包)