网站建设.c,网站设计标准,南京淄博网站建设工作室,wordpress二维码支付前面写的一篇《Linux下如何在数据链路层接收原始数据包》举了一个实例,使用raw socket接收UDP数据报,但是发送一个数据包比接收要复杂一些,本文以一个实例说明如何使用raw socket发送一个UDP报文。 1. 前言 阅读本文前可以考虑先阅读一下我的另外一篇文章《Linux下如何在数据… 前面写的一篇《Linux下如何在数据链路层接收原始数据包》举了一个实例,使用raw socket接收UDP数据报,但是发送一个数据包比接收要复杂一些,本文以一个实例说明如何使用raw socket发送一个UDP报文。 1. 前言
阅读本文前可以考虑先阅读一下我的另外一篇文章《Linux下如何在数据链路层接收原始数据包》,那篇文章中已经介绍过的一些概念,本文中将不再赘述;下面仅罗列一些曾经在《Linux下如何在数据链路层接收原始数据包》介绍过的技术要点;发送数据时打开raw_socketsock_raw = socket(AF_PACKET, SOCK_RAW, IPPROTO_RAW);
if (sock_raw == -1)printf("error in socket");以太网报头结构(定义在头文件linux/if_ether.h中)struct ethhdr {unsigned char h_dest[ETH_ALEN]; /* destination eth addr */unsigned char h_source[ETH_ALEN]; /* source ether addr */__be16 h_proto; /* packet type ID field */
} __attribute__((packed));IP报头结构(定义在头文件linux