memset(header, 0x00, sizeof(struct DNS_Header));
时间: 2023-08-18 16:09:25 浏览: 157
这段代码使用了 C 语言中的 memset 函数,它的作用是将一段内存空间设置为特定的值。具体来说,这里将结构体 DNS_Header 的变量 header 的内存空间全部设置为 0x00。
memset 函数的参数如下:
- 第一个参数是要设置的内存空间的起始地址;
- 第二个参数是要设置的值;
- 第三个参数是要设置的内存空间的大小。
所以,这段代码的作用是将 DNS_Header 结构体变量 header 的全部字段都设置为 0x00。这在初始化结构体变量时是一个常见的操作。
相关问题
int DNS_build(struct DNS_Header *header,struct DNS_Query *query,char *request){ if(header==NULL||query==NULL||request==NULL){ printf("DNS build failed.\n"); return -1; } char *ptr=request; memset(request, 0x00, MESSAGE_LEN); int offset=0; memcpy(request+offset,header,sizeof (struct DNS_Header));offset+=sizeof (struct DNS_Header); memcpy(request+offset,query->name,query->length);offset+=query->length; memcpy(request+offset,&query->qtype,sizeof(unsigned short));offset+=sizeof(unsigned short); memcpy(request+offset,&query->qclass,sizeof(unsigned short));offset+=sizeof(unsigned short); return offset; }
这段代码是一个函数,函数名为“DNS_build”,它接收三个参数,一个指向“DNS_Header”结构体的指针“header”,一个指向“DNS_Query”结构体的指针“query”,一个指向字符数组的指针“request”。该函数的作用是根据传入的“header”和“query”指向的结构体,构建DNS协议的请求报文。如果传入的指针为NULL,则打印“DNS build failed.”的错误信息,并返回-1。该函数使用了C语言中的“memset”函数和“memcpy”函数,其中“memcpy”函数用于将“header”和“query”结构体中的字段拷贝到“request”数组中,构建DNS协议的请求报文。函数返回值为“offset”,表示构建的请求报文的长度。
int DNS_header_create(struct DNS_Header *header){ if(header==NULL){ printf("Header wrong!\n"); return -1; } memset(header, 0x00, sizeof(struct DNS_Header)); srandom(time(NULL)); header->id = random(); header->tag=htons(0x0100); header->queryNum=htons(0x0001); header->answerNum=htons(0x0000); header->authorNum=htons(0x0000); header->addNum=htons(0x0000); return 0; }
这段代码是一个函数,函数名为“DNS_header_create”,它接收一个指向“DNS_Header”结构体的指针“header”。该函数的作用是初始化“header”指向的结构体,设置一些DNS协议头的字段值,如id、tag、queryNum、answerNum、authorNum和addNum。如果传入的指针为NULL,则打印“Header wrong!”的错误信息,并返回-1,否则返回0。该函数使用了C语言中的“memset”函数和“srandom”函数。
阅读全文