DNS(Domain Name System) :域名系统
服务器IP地址:114.114.114.114 端口号:53
实现域名解析
在执行时可能会出现已经发送了数据包过去,但收不到服务端响应的
数据,可以再重新编译换个域名运行可执行文件。
代码如下:
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#define DNS_PORT 53
#define DNS_IP "114.114.114.114"
/*
将domain指向的域名翻译成DNS数据包要求的格式
并将其保存到dns指向的空间中去
@返回值:成功返回翻译后的字符串的长度,失败返回0
*/
int Generate_Domainname(char *domain,char *dns)
{
unsigned char *pos = domain;
int len = 0;
int n;
while(1)
{
//strstr(str1,str2)函数用于判断str2是否为str1的子串
//如果是该函数会返回str2在str1中首次出现的地址,否则返回NULL
n = strlen(pos) - (strstr(pos,".") ? strlen(strstr(pos,".")) : 0);
//将求出来的字符'.'之前的字符串的长度保存起来
*dns++ = (unsigned char)n;
strncpy(dns,pos,n);
dns += n;
len += n + 1;