?? senddnsquery-raw.lc
字號:
#include "udpcksum.h"## 1 ##src/udpcksum/senddnsquery-raw.c##/*## 2 ##src/udpcksum/senddnsquery-raw.c## * Build a DNS A query for "a.root-servers.net" and write it to## 3 ##src/udpcksum/senddnsquery-raw.c## * the raw socket.## 4 ##src/udpcksum/senddnsquery-raw.c## */## 5 ##src/udpcksum/senddnsquery-raw.c##/* include send_dns_query */void## 6 ##src/udpcksum/senddnsquery-raw.c##send_dns_query(void)## 7 ##src/udpcksum/senddnsquery-raw.c##{## 8 ##src/udpcksum/senddnsquery-raw.c## size_t nbytes;## 9 ##src/udpcksum/senddnsquery-raw.c## char buf[sizeof(struct udpiphdr) + 100], *ptr;## 10 ##src/udpcksum/senddnsquery-raw.c## uint16_t one;## 11 ##src/udpcksum/senddnsquery-raw.c## ptr = buf + sizeof(struct udpiphdr); /* leave room for IP/UDP headers */## 12 ##src/udpcksum/senddnsquery-raw.c## *((uint16_t *) ptr) = htons(1234); /* identification */## 13 ##src/udpcksum/senddnsquery-raw.c## ptr += 2;## 14 ##src/udpcksum/senddnsquery-raw.c## *((uint16_t *) ptr) = htons(0x0100); /* flags: recursion desired */## 15 ##src/udpcksum/senddnsquery-raw.c## ptr += 2;## 16 ##src/udpcksum/senddnsquery-raw.c## *((uint16_t *) ptr) = htons(1); /* #questions */## 17 ##src/udpcksum/senddnsquery-raw.c## ptr += 2;## 18 ##src/udpcksum/senddnsquery-raw.c## *((uint16_t *) ptr) = 0; /* #answer RRs */## 19 ##src/udpcksum/senddnsquery-raw.c## ptr += 2;## 20 ##src/udpcksum/senddnsquery-raw.c## *((uint16_t *) ptr) = 0; /* #authority RRs */## 21 ##src/udpcksum/senddnsquery-raw.c## ptr += 2;## 22 ##src/udpcksum/senddnsquery-raw.c## *((uint16_t *) ptr) = 0; /* #additional RRs */## 23 ##src/udpcksum/senddnsquery-raw.c## ptr += 2;## 24 ##src/udpcksum/senddnsquery-raw.c## memcpy(ptr, "\001a\014root-servers\003net\000", 20);## 25 ##src/udpcksum/senddnsquery-raw.c## ptr += 20;## 26 ##src/udpcksum/senddnsquery-raw.c## one = htons(1);## 27 ##src/udpcksum/senddnsquery-raw.c## memcpy(ptr, &one, 2); /* query type = A */## 28 ##src/udpcksum/senddnsquery-raw.c## ptr += 2;## 29 ##src/udpcksum/senddnsquery-raw.c## memcpy(ptr, &one, 2); /* query class = 1 (IP addr) */## 30 ##src/udpcksum/senddnsquery-raw.c## ptr += 2;## 31 ##src/udpcksum/senddnsquery-raw.c## nbytes = 36;## 32 ##src/udpcksum/senddnsquery-raw.c## udp_write(buf, nbytes);## 33 ##src/udpcksum/senddnsquery-raw.c## if (verbose)## 34 ##src/udpcksum/senddnsquery-raw.c## printf("sent: %d bytes of data\n", nbytes);## 35 ##src/udpcksum/senddnsquery-raw.c##}## 36 ##src/udpcksum/senddnsquery-raw.c##/* end send_dns_query */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -