亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区| 欧美一区二区三区喷汁尤物| 777亚洲妇女| 欧美日韩黄色影视| 日韩一区二区三区在线观看| 6080国产精品一区二区| 日韩一区二区免费高清| 精品国内二区三区| 国产欧美日韩在线| 亚洲欧美日韩国产另类专区| 亚洲自拍都市欧美小说| 亚洲超碰精品一区二区| 蜜臂av日日欢夜夜爽一区| 裸体在线国模精品偷拍| 国产99久久久国产精品| av电影在线观看一区| 在线观看av一区二区| 日韩午夜小视频| 久久久国产精华| 亚洲欧洲在线观看av| 亚洲精品久久久蜜桃| 免费在线观看成人| 不卡av在线网| 欧美丰满少妇xxxxx高潮对白| 欧美sm美女调教| 欧美激情一区二区三区全黄| 有坂深雪av一区二区精品| 日本少妇一区二区| 成人小视频在线观看| 欧美日韩成人综合在线一区二区| 欧美电影在哪看比较好| 日韩免费成人网| 欧美激情资源网| 亚洲国产另类av| 懂色av一区二区三区免费观看| 99国产精品国产精品久久| 欧美日韩电影在线播放| 欧美国产一区二区在线观看| 午夜精品aaa| 成人激情午夜影院| 欧美日韩高清一区二区不卡| 中文字幕精品一区二区三区精品 | 香蕉成人伊视频在线观看| 久久99热99| 在线免费观看一区| 国产精品久久久久久久久图文区| 日韩和欧美的一区| 91视频com| 国产欧美中文在线| 久久99热这里只有精品| 欧美二区乱c少妇| 夜夜精品浪潮av一区二区三区| 国产一区二区伦理片| 4438x成人网最大色成网站| 亚洲欧美另类久久久精品2019| 国产一区二区三区在线观看免费| 欧美日韩精品一区二区三区四区 | 91黄色免费看| 亚洲一区在线视频观看| 99re热视频精品| 国产亚洲欧美日韩俺去了| 免费成人美女在线观看.| 欧美亚洲国产一区二区三区va| 中文字幕中文字幕在线一区| 成人网在线免费视频| 久久午夜电影网| 精品一区二区在线观看| 91精品国产综合久久久蜜臀粉嫩| 午夜精品久久久| 欧美欧美欧美欧美| 亚洲成a人片在线观看中文| 91福利在线观看| 亚洲毛片av在线| 欧洲一区二区三区在线| 亚洲国产成人av好男人在线观看| 91麻豆精品秘密| 亚洲精品成人悠悠色影视| 91丨九色丨蝌蚪富婆spa| 亚洲女同女同女同女同女同69| voyeur盗摄精品| 亚洲欧美日韩久久精品| 91美女片黄在线观看| 亚洲一二三专区| 欧美另类久久久品| 久草在线在线精品观看| 国产午夜精品在线观看| 9i在线看片成人免费| 亚洲免费大片在线观看| 欧美日韩一区 二区 三区 久久精品| 亚洲成人高清在线| 欧美va亚洲va| 99视频国产精品| 亚洲午夜精品网| 精品国产污污免费网站入口 | 93久久精品日日躁夜夜躁欧美| 中文字幕亚洲一区二区av在线| 一本一道综合狠狠老| 午夜久久久久久久久| 精品日韩一区二区三区免费视频| 国产成人免费视频一区| 一区二区三区四区中文字幕| 日韩一区二区三区四区 | 亚洲aaa精品| 欧美精品一区二区精品网| 成人精品gif动图一区| 一本到不卡精品视频在线观看| 久久综合久色欧美综合狠狠| 在线观看亚洲专区| 麻豆国产一区二区| 欧美激情在线看| 6080日韩午夜伦伦午夜伦| 国产**成人网毛片九色| 日韩国产在线一| 自拍偷自拍亚洲精品播放| 日韩欧美一二区| 91黄色在线观看| 高清在线观看日韩| 欧美aaaaa成人免费观看视频| 最近日韩中文字幕| 2024国产精品| 6080日韩午夜伦伦午夜伦| 色综合色狠狠综合色| 极品销魂美女一区二区三区| 一片黄亚洲嫩模| 国产欧美日韩三区| 日韩欧美123| 91精品欧美久久久久久动漫 | 成人综合在线网站| 麻豆精品视频在线观看| 亚洲高清在线视频| 中文字幕一区二区三区在线播放| 欧美成人vps| 日韩写真欧美这视频| 欧美日韩在线不卡| 在线免费观看日本一区| 91啦中文在线观看| 99在线视频精品| 国产mv日韩mv欧美| 国产真实精品久久二三区| 青青草原综合久久大伊人精品 | 日本在线不卡视频一二三区| 亚洲欧美日韩小说| 综合激情成人伊人| 中文字幕一区二区视频| 中文成人综合网| 久久久久青草大香线综合精品| 日韩精品中文字幕在线一区| 欧美一区二区三区系列电影| 555www色欧美视频| 日韩一级二级三级精品视频| 欧美男生操女生| 91精品国产综合久久久久久久久久| 在线观看网站黄不卡| 91久久精品一区二区三区| 欧美性色aⅴ视频一区日韩精品| 99久久精品国产观看| 9人人澡人人爽人人精品| 91在线观看地址| 欧美三级在线播放| 欧美电影一区二区| 久久这里只有精品6| 欧美高清在线精品一区| 国产精品夫妻自拍| 亚洲夂夂婷婷色拍ww47| 五月天亚洲婷婷| 韩国视频一区二区| 成人app软件下载大全免费| 99精品久久只有精品| 91极品美女在线| 日韩欧美一区二区在线视频| 久久综合色综合88| 亚洲精品免费播放| 日韩在线观看一区二区| 国产一区二区三区黄视频| 粉嫩一区二区三区性色av| 色哟哟精品一区| 欧美性一二三区| 精品对白一区国产伦| 中文字幕一区二区三区av| 亚洲国产欧美在线人成| 激情小说亚洲一区| 91网页版在线| 精品日韩欧美在线| 亚洲黄色小视频| 精品亚洲成a人| 91网址在线看| 2019国产精品| 亚洲国产视频在线| 国产成人日日夜夜| 欧美日韩国产高清一区| 中文字幕第一区第二区| 婷婷成人激情在线网| 成人短视频下载| 精品久久久久久无| 亚洲一区欧美一区| 大胆欧美人体老妇| 欧美一区二区人人喊爽| 亚洲色图视频网站|