Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C linux以太网帧套接字澄清_C_Linux - Fatal编程技术网

C linux以太网帧套接字澄清

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

我正在努力理解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 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头的指针所占用的内存区域之后的内存区域,该内存区域似乎包含指向struct
    iphdr

    这是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头的指针所占用的内存区域之后的内存区域,该内存区域似乎包含指向struct
    iphdr

    这是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,该增量不是以太头结构大小的倍数吗?