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; }
时间: 2024-04-06 17:28:23 浏览: 158
dns_query.rar_Windows编程_Unix_Linux_
这段代码是一个函数,函数名为“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”,表示构建的请求报文的长度。
阅读全文