亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dns.c

?? analog device vdsp LAN driver and examples
?? C
字號:
/* =============================================================================
 *
 *  Description: This is a C implementation for DNS client
 *
 * -----------------------------------------------------------------------------
 *  Comments:
 *
 * ===========================================================================*/

#include <lwip/sockets.h>
#include <lwip/inet.h>
#include "dns.h"


static int dns_id=1;
static char dns_packet[512];

#define DNS_RCV_PORT 6002
#define DNS_PORT 53
#define DNS_HOST_ADDR "10.64.53.110"

#ifdef _DEBUG_
#define DNS_ASSERT(str_,val_) do {\
	if(val_) { printf("%s\n",str_); return -1; }\
			while(0)
#else
#define DNS_ASSERT
#endif /* _DEBUG_ */

static mx_record g_mx_records[5] = {0};
/*
 * replaces each . (dot) in the host name with the dns required form.
 * each . is replaced with the number of characters followed by it.
 * including the first string, out_string must be greater than or
 * equal to the length of the host_name.
 * 
 */
int construct_dns_string(char *host_name, char *out_string)
{
int i=0,count=0;
char *src,*dst;

	src = host_name;
	dst = out_string;
	if(host_name && out_string && strlen(host_name) > 0)
	{
		for(i=0; i <= strlen(host_name); i++)
		{
			if(*src != '.')
			{
				count++;
				*++dst  = *src++;
			}
			else
			{
				*(dst - count) = count;
				src++; dst++;
				count=0;
			}
		}
		*(dst - count) = count-1;
	}
	return 1;
}
/*
 * constructs the dns query packet and returns in dns_pkt. memory is expected
 * to be allocated for the packet
 */
int dns_make_query(int id,char *dns_pkt,dns_q_type_e qtype,char *host_name)
{
char *ptr;
	ptr = dns_pkt;

	if(qtype == DNS_REQ)
	{
		*ptr++ = (char)(id >> 8); // first 2 bytes is id  0
		*ptr++ = (char)(id & 0xFF); // 1
		*ptr++ = (char)1; // flags 1 means query packet. //2
		*ptr++ = (char)0;  //3
		*ptr++ = (char)0; // 4
		*ptr++ = (char)1; // number of questions 1 //5

		*ptr++ = (char)0; // answers 0 //6
		*ptr++ = (char)0; // answers 0 //7
		
		*ptr++ = (char)0; //8
		*ptr++ = (char)0; //9

		*ptr++ = (char)0;//10
		*ptr++ = (char)0;//11

	construct_dns_string(host_name,ptr);
	ptr += strlen(host_name)+1;

	*ptr++ = 0;
	*ptr++ = 0;

	*ptr++ = 1;
	*ptr++ = 0;
	*ptr++ = 1;
	}

	return 1;
}

// returns the offset of the answers within the DNS packet.
//
int get_answer_offset(char *dns_pkt)
{
	char *ptr = dns_pkt;
	int offset=0;
	ptr +=12; // skip dns header

	// no question
	offset = *ptr & 0xFF;

	if(offset == 0)
	{
		return 0;
	}
	else
	{
		while(offset != 0 )
		{
			ptr += (offset+1);
			offset = (*ptr & 0xFF);
		}
		// type & class 2 bytes each
		ptr +=4;
	}

	return ptr - dns_pkt;
}

mx_record* dns_parse_response(char *dns_pkt, int length)
{

	int questions,answers,ans_offset,i=0,size;
	char *ptr;

	questions = ( (dns_pkt[4] & 0xFF) << 8) | (dns_pkt[5] & 0xFF);
	answers =   ( (dns_pkt[6] & 0xFF) << 8) | (dns_pkt[7] & 0xFF);

	if(!questions || !answers)
		return (mx_record*)0;

	ptr = dns_pkt;
	ans_offset = get_answer_offset(dns_pkt);

	// move ptr to point to answer list.
	ptr += ans_offset;

	// skip domain name,class,time to live,data length
	ptr += 12;

	// size of the address
	//
	size = *ptr++;

	for(i=0; i<answers; i++)
	{
	g_mx_records[i].ip_addr = (*ptr & 0xFF);
	ptr++;
	g_mx_records[i].ip_addr |= (*ptr & 0xFF) << 8 ;
	ptr++;
	g_mx_records[i].ip_addr |= (*ptr & 0xFF) << 16  ;
	ptr++;
	g_mx_records[i].ip_addr |= (*ptr & 0xFF) << 24;

	// skip domain name,class,time to live,data length
	ptr += 12;
	size = *ptr++;
	}
	return g_mx_records;
}

int dns_query_hostname(char *host_name)
{
	int sock_id,ret,i;
	struct sockaddr_in sa, ra;

	sock_id = socket(AF_INET, SOCK_DGRAM, 0);

	DNS_ASSERT("socket creation failure",sock_id < 0);

	memset(&sa, 0, sizeof(struct sockaddr_in)); // clear our address
	sa.sin_family = AF_INET;
	sa.sin_addr.s_addr = htonl(INADDR_ANY);	
	sa.sin_port = htons(DNS_RCV_PORT);  

	ret = bind(sock_id, (struct sockaddr *)&sa, sizeof(sa)); 

	DNS_ASSERT("bind failure",ret < 0);

	memset(dns_packet,0,sizeof(dns_packet));

	// Initilaize receiver's parameters
	memset((char *)&ra,0,sizeof(ra));
	ra.sin_family = AF_INET;
	ra.sin_addr.s_addr = inet_addr(DNS_HOST_ADDR);
	ra.sin_port = htons(DNS_PORT);   
	
	dns_make_query(dns_id++,dns_packet,DNS_REQ,host_name);

	ret = sendto(sock_id,dns_packet,128, 0,(struct sockaddr*)&ra,sizeof(ra));
	
	DNS_ASSERT("sendto failed",ret < 0);

	memset(dns_packet,0,sizeof(dns_packet));
	ret = recv(sock_id,dns_packet,128,0);

	DNS_ASSERT("recv failed",ret < 0);

	dns_parse_response(dns_packet,ret);

	printf("IP Address of %s is : %s\n",host_name,inet_ntoa(g_mx_records[0].ip_addr));

	return 1;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品视频资源站| 国产亚洲制服色| 亚洲精品一区二区三区香蕉| 久久久久青草大香线综合精品| 亚洲柠檬福利资源导航| 精油按摩中文字幕久久| 欧洲精品中文字幕| 日本不卡高清视频| av不卡在线观看| 精品欧美一区二区三区精品久久| 亚洲精品午夜久久久| 韩国v欧美v日本v亚洲v| 欧美丝袜丝交足nylons图片| 中文字幕 久热精品 视频在线| 日韩电影在线一区二区| 91九色最新地址| 国产精品对白交换视频| 国产成人综合网站| 日韩视频不卡中文| 亚洲成人777| 在线亚洲高清视频| 综合精品久久久| 国产成人午夜精品5599| 日韩你懂的电影在线观看| 亚洲一二三四久久| 国产成人精品影视| 久久精品一级爱片| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美亚洲一区二区在线| 亚洲美女视频在线| 91视频在线看| 日韩一区有码在线| 风间由美一区二区av101 | 欧美精品黑人性xxxx| 亚洲摸摸操操av| 一本色道久久加勒比精品| 中文字幕一区二区三区视频 | 2024国产精品视频| 天天色天天爱天天射综合| 91久久精品一区二区| 一区二区三区不卡在线观看| 色一区在线观看| 一区二区三区精品视频在线| 色综合久久久网| 亚洲一区二区三区在线播放| 欧美三级视频在线播放| 亚洲综合av网| 欧美最猛黑人xxxxx猛交| 亚洲香蕉伊在人在线观| 欧美日韩国产色站一区二区三区| 午夜成人免费视频| 日韩亚洲欧美高清| 激情文学综合网| 久久老女人爱爱| 国产成人aaa| 亚洲图片你懂的| 欧美日韩精品福利| 久久成人免费网| 国产精品女同一区二区三区| 91成人在线观看喷潮| 日韩精品电影一区亚洲| 精品国产成人系列| 不卡一区二区三区四区| 亚洲精品视频在线观看免费| 制服丝袜在线91| 欧美另类videos死尸| 日韩 欧美一区二区三区| 久久久综合激的五月天| 色成人在线视频| 免费在线观看日韩欧美| 中文在线免费一区三区高中清不卡| 91在线国产观看| 全国精品久久少妇| 国产日韩精品一区| 欧美在线一区二区三区| 精品制服美女丁香| 亚洲精品一二三四区| 精品久久免费看| 欧美午夜精品久久久久久孕妇| 久久精品噜噜噜成人88aⅴ| 中文字幕一区在线观看视频| 日韩一区二区高清| 色婷婷久久久久swag精品| 韩国午夜理伦三级不卡影院| 亚洲精品视频在线观看网站| 久久久久国产精品免费免费搜索| 日本韩国精品一区二区在线观看| 韩日精品视频一区| 亚洲第一主播视频| 国产精品你懂的| 日韩欧美在线不卡| 欧美色精品在线视频| 成人午夜视频在线| 精品在线视频一区| 首页综合国产亚洲丝袜| 亚洲三级电影网站| 国产午夜久久久久| 日韩欧美国产综合一区 | 国产精品1区2区| 一区二区三区高清不卡| 中文字幕第一页久久| 精品国产一区二区三区久久久蜜月| 在线观看av一区| 91视频你懂的| 成人av在线资源| 成人性生交大片免费看中文网站| 国产呦萝稀缺另类资源| 日韩av一级电影| 亚洲v日本v欧美v久久精品| 成人免费在线播放视频| 国产精品人成在线观看免费 | 色婷婷激情一区二区三区| 国产成人在线色| 成人性生交大片免费看在线播放 | 日韩免费在线观看| 91精品综合久久久久久| 欧美三级日本三级少妇99| 色综合久久精品| 在线观看欧美精品| 欧美在线观看一区| 99精品久久99久久久久| 成人午夜激情在线| 国产传媒欧美日韩成人| 国产精品一二三四| 国产伦精品一区二区三区在线观看 | 亚洲欧洲成人自拍| 日本一区二区综合亚洲| 国产婷婷色一区二区三区| 精品sm捆绑视频| 久久久久久一级片| 国产免费成人在线视频| 国产精品视频一二三| 最近中文字幕一区二区三区| 一区二区三区蜜桃| 亚洲国产va精品久久久不卡综合| 亚洲高清视频中文字幕| 日本伊人午夜精品| 国产乱码精品一品二品| 成人自拍视频在线观看| 97精品视频在线观看自产线路二| 在线看日韩精品电影| 欧美久久一二三四区| 久久久久亚洲蜜桃| 中文字幕在线免费不卡| 亚洲国产三级在线| 国内精品国产成人国产三级粉色 | 日韩成人一区二区三区在线观看| 日本va欧美va精品发布| 国产精品一区二区无线| 99re成人精品视频| 欧美绝品在线观看成人午夜影视| 日韩欧美高清在线| 成人欧美一区二区三区黑人麻豆| 一个色妞综合视频在线观看| 蜜桃久久久久久| 波多野结衣欧美| 欧美日韩一区二区三区四区五区| 精品理论电影在线| 一区二区三区加勒比av| 美女视频免费一区| 99久久伊人精品| 日韩一区二区三区在线视频| 欧美极品xxx| 日韩精品久久理论片| 成人av资源下载| 日韩欧美国产综合在线一区二区三区| 亚洲欧美在线视频观看| 蜜桃视频在线一区| 色婷婷综合激情| 国产日韩欧美制服另类| 亚洲福利电影网| 成人免费视频一区| 日韩一区二区三区电影| 亚洲欧美日本韩国| 国产成人精品亚洲午夜麻豆| 这里只有精品视频在线观看| 中文字幕佐山爱一区二区免费| 精品在线免费观看| 欧美三级三级三级| 国产精品三级视频| 奇米精品一区二区三区在线观看 | 日日摸夜夜添夜夜添国产精品| 丁香啪啪综合成人亚洲小说| 9191成人精品久久| 亚洲欧美aⅴ...| 国产精品一二三区| 欧美一区二区三区视频在线观看 | 欧美高清在线一区| 麻豆精品一区二区三区| 69精品人人人人| 一区二区三区鲁丝不卡| 成人av在线资源网站| 国产日韩欧美a| 国产在线播精品第三| 日韩女优制服丝袜电影| 91啪九色porn原创视频在线观看| 欧美激情在线免费观看| 国产麻豆91精品| 久久蜜桃香蕉精品一区二区三区| 蜜桃久久久久久久|