动态域名解析程序

上传人:子 文档编号:43098514 上传时间:2018-06-04 格式:DOC 页数:10 大小:15.98KB
返回 下载 相关 举报
动态域名解析程序_第1页
第1页 / 共10页
动态域名解析程序_第2页
第2页 / 共10页
动态域名解析程序_第3页
第3页 / 共10页
动态域名解析程序_第4页
第4页 / 共10页
动态域名解析程序_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《动态域名解析程序》由会员分享,可在线阅读,更多相关《动态域名解析程序(10页珍藏版)》请在金锄头文库上搜索。

1、动态域名解析程序动态域名解析程序#include #include #include #include typedef struct _DNSHEAD /dns 头部 USHORT ID; USHORT tag; / dns 标志(参数) USHORT numQ; / 问题数 USHORT numA; / 答案数 USHORT numA1; / 权威答案数 USHORT numA2; / 附加答案数 DnsHead; typedef struct _DNSQUERY /dns 查询结构 / char name64; / /查询的域名,这是一个大小在 0 到 63 之间的字符串; USHORT

2、type; /查询类型,大约有 20 个不同的类型 USHORT classes; /查询类,通常是 A 类既查询 IP 地址。 DnsQuery; #pragma comment(lib,“ws2_32.lib“) / 初始化操作 bool initWSA(); /显示错误 void displayErrWSA(char *str); /创建套接字 SOCKET CreateSocket(int type); /UDP sendto int MySendto(SOCKET sockTo, const char FAR * buf,int len,char *addr,USHORT port)

3、; /TCP 连接 bool MyConnect(SOCKET s, char *addr,USHORT ); / UDP recvfrom int MyRecvFrom(SOCKET s, char FAR * buf,int len,char *addr,USHORT port); /设置 DNS 头部 bool SetDNSHead(char *name,char *buf); int main(int arg,char *are) int Result=0; char buf1024=0; char addr16 = “61.187.72.8“;/ dns 服务器地址 char *na

4、me = 0; /要查询的域名 if ( !initWSA() )/初始化 displayErrWSA(“initWSA err!“); return 1; /创建套接字 SOCKET sockTo ; if ( (sockTo = CreateSocket(SOCK_DGRAM) = 0) displayErrWSA(“CreatSocket err!“); return 1; while (1) if (arg numA = 0) printf(“无法解析 %s 的 IP 地址。n“,name); continue; char *getIP =(char *)buf +Result - 4

5、; printf(“%s 的 IP 地址为: “,name); for (int Result= 0 ;ResultID = (USHORT)1; DnsH-tag = htons(0x0100); DnsH-numQ = htons(1); DnsH-numA = 0; DnsQuery *DnsQ =(DnsQuery *) ( buf+ sizeof(DnsHead) ); int NameLen = ChName(name,(char *)DnsQ); /设置查询信息 DnsQ = (DnsQuery *)( (char *)DnsQ + NameLen ); DnsQ-classes

6、 = htons(1); DnsQ-type = htons(1); return true; /显示错误信息 void displayErrWSA(char *str) printf(“n%s,err = %dn“,str,WSAGetLastError(); getchar(); /域名转化 int ChName(char *fname,char *tname) int j =0; int i =strlen(fname)-1; tnamei+2 = 0; int k = i+1; for (; i=0;i-,k-) if (fnamei = .) tnamek = j; j=0; else tnamek = fnamei; j+; tnamek = j; return strlen(tname)+1;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号