c語言域名解析方法是怎樣的?域名解析的流程有哪些?

發(fā)布時(shí)間:2024-03-22
現(xiàn)在有很多朋友對(duì)于域名解析的情況不是很了解,它其實(shí)指的是把域名轉(zhuǎn)化為對(duì)應(yīng)的ip地址的過程,這個(gè)工作是由dns服務(wù)器來完成的,這個(gè)過程其實(shí)并不是很復(fù)雜,但是很多朋友會(huì)對(duì)各種解析的方式容易混淆,比如做c語言域名解析,這個(gè)看起來非常的抽象,不容易理解,那么c語言域名解析方法是怎樣的?域名解析的流程有哪些呢?下面就給大家詳細(xì)的來闡述一下。
c語言域名解析方法是怎樣的?
typedef struct _dnshead{ //dns 頭部
ushort id;
ushort tag; // dns 標(biāo)志(參數(shù))
ushort numq; // 問題數(shù)
ushort numa; // 答案數(shù)
ushort numa1; // 權(quán)威答案數(shù)
ushort numa2; // 附加答案數(shù)
}dnshead;
typedef struct _dnsquery //dns 查詢結(jié)構(gòu)
{
// char name[64];
// //查詢的域名,這是一個(gè)大小在0到63之間的字符串;
c語言域名解析
ushort type;
//查詢類型,大約有20個(gè)不同的類型
ushort classes;
//查詢類,通常是a類既查詢ip地址。
}dnsquery;
#pragma comment(lib,ws2_32.lib)
// 初始化操作
bool initwsa();
//顯示錯(cuò)誤
void displayerrwsa(char *str);
//創(chuàng)建套接字
socket createsocket(int type);
//udp sendto
int mysendto(socket sockto, const char far * buf,int len,char *addr,ushort port);
//tcp 連接
bool myconnect(socket s, char *addr,ushort );
// udp recvfrom
int myrecvfrom(socket s, char far * buf,int len,char *addr,ushort port);
//設(shè)置dns 頭部
bool setdnshead(char *name,char *buf);
int main(int arg,char *are[])
{
int result=0;
char buf[1024]={0};
char addr[16] = 61.187.72.8;// dns 服務(wù)器地址
char *name = 0; //要查詢的域名
if ( !initwsa() )//初始化
{
displayerrwsa(initwsa err!);
return 1;
}
//創(chuàng)建套接字
socket sockto ;
if ( (sockto = createsocket(sock_dgram)) == 0)
{
displayerrwsa(creatsocket err!);
return 1;
}
while (1)
{
if (arg
{
char temp[1024]={0};
printf(\n請(qǐng)輸入要查詢的域名:);
scanf(%s,temp);
if (temp[0] == 'q' ||temp[0] == 'q')
{
break;
}
name = temp;
}
else
{
arg = 1;
name = are[1];
}
//設(shè)置dns 頭部
setdnshead(name,buf);
//發(fā)送出去的請(qǐng)求數(shù)據(jù)長度
int len = sizeof(dnshead)+sizeof(dnsquery)+strlen(name)+2;
// for (int i =0;i
// {
// printf(x,(uchar)buf[i]);
// printf(x ,(uchar)buf[i+1]);
// }
//發(fā)送dns 請(qǐng)求
if ( ( result =mysendto(sockto,buf,len,addr,53) )
{
displayerrwsa(sendto err!);
continue;
}
//接收應(yīng)答
if ( (result =myrecvfrom(sockto,buf,1024,addr,53) )
{
displayerrwsa(recvfrom err!);
continue;
}
//簡單的取得返回的 ip 地址( 收到的最后4字節(jié) )
dnshead *dnsh = (dnshead *)buf;
if (dnsh->numa == 0)
{
printf(無法解析 %s 的ip 地址。\n,name);
continue;
}
char *getip =(char *)buf +result - 4;
printf(%s 的ip地址為: ,name);
for (int result= 0 ;result
{
printf(%u.,(uchar )getip[result]);
}
printf(\n);
}
return 0;
}
// 初始化操作
bool initwsa()
{
word wversionrequested;
wsadata wsadata;
int result;
wversionrequested = makeword( 2, 2 );
result = wsastartup( wversionrequested, &wsadata );
if(result != 0 )
{
return false;
}
if( lobyte( wsadata.wversion) != 2 ||
hibyte(wsadata.wversion)!= 2 )
{
wsacleanup();
return false;
}
return true;
}
/
socket createsocket(int type)
{
socket sock=socket(af_inet,type,0);
if (sock == invalid_socket )
{
return 0;
}
return sock;
}
/
int mysendto(socket sockto, const char far * buf,int len,char *addr,ushort port)
{
//設(shè)置發(fā)送數(shù)據(jù)到的 套接字及地址結(jié)構(gòu)
sockaddr_in addrto;
addrto.sin_addr.s_un.s_addr=inet_addr(addr);
addrto.sin_family=af_inet;
addrto.sin_port=htons(port);
return sendto( sockto, buf, len, 0,
(sockaddr*)&addrto, sizeof(sockaddr) );
}
/
bool myconnect(socket sockto, char *addr,ushort port)
{
int result;
//設(shè)置連接到的 套接字及地址結(jié)構(gòu)
sockaddr_in addrto;
addrto.sin_addr.s_un.s_addr=(inet_addr(addr));
addrto.sin_family=af_inet;
addrto.sin_port=htons(port);
//連接
result = connect(sockto,(sockaddr *)&addrto,sizeof(sockaddr_in));
if(socket_error == result)
{
return false;
}
return true;
}
/
int myrecvfrom(socket s, char far * buf,int len,char *addr,ushort port)
{
//設(shè)置發(fā)送數(shù)據(jù)到的 套接字及地址結(jié)構(gòu)
sockaddr_in addrfrom;
addrfrom.sin_addr.s_un.s_addr=inet_addr(addr);
addrfrom.sin_family=af_inet;
addrfrom.sin_port=htons(port);
int addrlen = s
上一個(gè):美國mac小型四通閥48系
下一個(gè):變頻器開關(guān)電源的檢修思路和檢修方法

E+H電磁流量計(jì)的優(yōu)勢及選購方法
魅藍(lán)note音量小怎么辦
鍋爐煙囪維修更換爬梯案例
苦茶與甜茶相比哪個(gè)后期轉(zhuǎn)化更好
DWR-3 低溫柔度測試儀試驗(yàn)說明
壓蓋型凍干機(jī)使用完不清洗會(huì)導(dǎo)致哪些危害呢
電磁離合器哪幾個(gè)品牌的好
復(fù)合絮凝劑的特點(diǎn)有哪些
GH3128合金性能概述
YY 0804-2010 藥液轉(zhuǎn)移器穿刺力測試方法
十八禁 网站在线观看免费视频_2020av天堂网_一 级 黄 色 片免费网站_绝顶高潮合集Videos