dns解析c語言
發布時間: 2024-03-27 16:25:53
① 怎麼用c或者c++代碼獲取默認DNS伺服器的ip
這里的代碼可以列印出電腦默認的DNS伺服器
#pragmawarning(disable:4996)
#include<stdio.h>
#include<WinSock2.h>
#include<iphlpapi.h>
#pragmacomment(lib,"IPHLPAPI.lib")
#pragmacomment(lib,"ws2_32.lib")
intmain()//獲取本地主機名、域名和DNS伺服器信息
{
//聲明變數
FIXED_INFO*FixedInfo;//定義保存本地計算機網路參數信息的結構體指針
ULONGulOutBufLen;//保存獲取到的本地計算機網路參數信息結構體鏈表的長度
DWORDdwRetVal;//調用GetNetworkParams()函數的返回值
IP_ADDR_STRING*pIPAddr;//保存所有DNS伺服器的IP地址列表
FixedInfo=(FIXED_INFO*)GlobalAlloc(GPTR,sizeof(FIXED_INFO));//為FixedInfo結構體分配內存空間
ulOutBufLen=sizeof(FIXED_INFO);//初始化ulOutBufLen變數值
//第1次調用GetNetworkParams()函數,獲取返回結果的大小到ulOutBufLen中
if(ERROR_BUFFER_OVERFLOW==GetNetworkParams(FixedInfo,&ulOutBufLen))
{
GlobalFree(FixedInfo);
FixedInfo=(FIXED_INFO*)GlobalAlloc(GPTR,ulOutBufLen);
}
//第2次調用GetNetworkParams()函數,以前面獲取的ulOutBufLen作為參數,
if(dwRetVal=GetNetworkParams(FixedInfo,&ulOutBufLen)!=ERROR_SUCCESS)
{
printf("調用GetNetworkParams()函數失敗。返回值:%08x ",dwRetVal);
}
else
{
printf(" DNS伺服器列表: ");
printf("%s ",FixedInfo->DnsServerList.IpAddress.String);
pIPAddr=FixedInfo->DnsServerList.Next;
while(pIPAddr)
{
printf(" %s ",pIPAddr->IpAddress.String);
pIPAddr=pIPAddr->Next;
}
}
printf("按下回車鍵結束 ");
getchar();
return0;
}
② 寫一個C語言程序: 能修改linux 主機的IP、DHCP、DNS 等設置
可以調用system()函數。把linux系統命令拼成字元串,然後調用system去執行這個字元串就可以了。修改系統配置,需要root身份。
1、system函數:
原型:int
system(const
char
*
command);
功能:執行
dos(windows系統)
或
shell(Linux/Unix系統)
命令,參數字元串command為命令名;
說明:在windows系統中,system函數直接在控制台調用一個command命令。在Linux/Unix系統中,system函數會調用fork函數產生子進程,由子進程來執行command命令,命令執行完後隨即返回原調用的進程;
頭文件:stdlib.h;
返回值:命令執行成功返回0,執行失敗返回-1。
2、常式:
#include<stdio.h>
#include<stdlib.h>
int main(){
system("del C:\\123.txt");//在控制台中,執行命令del C:\\123.txt,刪除C盤目錄下的123.txt文件
return 0;
}
熱點內容