亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
久久精品一区二区三区不卡牛牛| 国产精品人妖ts系列视频| 欧美顶级少妇做爰| 国产91丝袜在线观看| 全国精品久久少妇| 18欧美亚洲精品| 一区二区三区视频在线看| 久久精品免费在线观看| 欧美va亚洲va香蕉在线| 欧美精品在线观看一区二区| 色狠狠一区二区| 成人精品电影在线观看| 国产精品1区2区3区在线观看| 91精品国产全国免费观看| 成人av小说网| 国产ts人妖一区二区| 国产不卡视频在线观看| 国产精品亚洲一区二区三区在线| 国产精品网站在线观看| 国产乱理伦片在线观看夜一区| 久久综合九色综合97婷婷女人 | 肉肉av福利一精品导航| 亚洲日本青草视频在线怡红院| 91浏览器在线视频| 91蝌蚪porny九色| 91农村精品一区二区在线| 91农村精品一区二区在线| 91麻豆精品视频| 欧美日韩高清一区二区| 欧美日韩电影一区| 欧美日韩久久久久久| 欧美美女激情18p| 欧美日韩一区三区| 3d成人动漫网站| 欧美成人r级一区二区三区| 精品国产91乱码一区二区三区| 国产不卡在线一区| 成人免费av网站| 日本乱码高清不卡字幕| 欧美老女人第四色| 精品国产1区二区| 中文字幕在线不卡| 午夜视频一区二区| 日本不卡一区二区三区| 亚洲成人7777| 国产精品亚洲综合一区在线观看| 日韩高清一区二区| 国产乱子伦一区二区三区国色天香| 国产精品福利影院| 亚洲福利视频导航| 国产美女视频一区| 色综合天天天天做夜夜夜夜做| 精品亚洲国内自在自线福利| 成人蜜臀av电影| 91精品国产综合久久精品麻豆| 成人av集中营| 欧美一区二区视频在线观看| 中文字幕第一区综合| 午夜在线成人av| 高清不卡在线观看| 欧美精品1区2区| 一区在线观看免费| 美日韩一级片在线观看| 色综合久久中文综合久久牛| 精品国产髙清在线看国产毛片| 在线亚洲高清视频| 国产欧美综合在线| 偷拍自拍另类欧美| 成人av电影在线播放| 日韩三级在线观看| 亚洲午夜免费电影| 成人黄色片在线观看| 欧美大片拔萝卜| 一区二区免费视频| 不卡影院免费观看| 久久精品免费在线观看| 麻豆精品视频在线观看免费| 欧美性猛片aaaaaaa做受| 国产精品日日摸夜夜摸av| 精品亚洲成a人在线观看| 7799精品视频| 国产激情偷乱视频一区二区三区| 久久精品夜色噜噜亚洲a∨| 最新热久久免费视频| 狂野欧美性猛交blacked| hitomi一区二区三区精品| 26uuu国产一区二区三区| 午夜精品福利一区二区三区av| 亚洲日本在线视频观看| 国产综合色视频| 日韩欧美亚洲国产精品字幕久久久 | 亚洲国产一区二区三区| 亚洲女同ⅹxx女同tv| 激情图区综合网| 日韩女同互慰一区二区| 国产精品久久看| 韩国精品在线观看| 欧美变态口味重另类| 午夜电影网一区| 欧美高清视频一二三区 | 九九久久精品视频 | 在线播放中文一区| 亚洲视频一区二区在线观看| 色综合欧美在线视频区| 色综合久久中文综合久久牛| 久久久久久久综合日本| 成人一区二区三区在线观看 | 偷拍一区二区三区四区| 欧美日韩大陆一区二区| 一二三区精品视频| 欧美亚洲一区二区在线观看| 亚洲精品国产视频| 欧美三级电影网站| 老司机精品视频一区二区三区| 国产成都精品91一区二区三| 国产精品区一区二区三区| 成人一区二区在线观看| 一区二区在线免费观看| 这里是久久伊人| 国产一区二区精品久久99| 中文无字幕一区二区三区| 一本到三区不卡视频| 天天综合网天天综合色| 久久久99精品久久| 日本韩国欧美三级| 毛片基地黄久久久久久天堂| 久久久亚洲高清| 色婷婷久久久综合中文字幕 | 国产精品久久久久久久久久免费看| 亚洲综合一区二区三区| 99久久99久久精品国产片果冻| 欧美美女bb生活片| 国产精品亚洲成人| 亚洲精品成a人| 日韩免费电影网站| 色综合网站在线| 美女任你摸久久| 亚洲欧美在线观看| 精品国产3级a| 精品视频在线免费| 国产激情一区二区三区四区 | 欧美性生活一区| 国产在线麻豆精品观看| 亚洲制服丝袜av| 日本一区二区视频在线观看| 亚洲柠檬福利资源导航| 91视频国产观看| 亚瑟在线精品视频| 国产午夜精品久久久久久久| 91蜜桃传媒精品久久久一区二区| 欧美日韩色一区| 国产成人在线看| 麻豆一区二区三区| 亚洲影视资源网| 综合久久综合久久| 国产视频911| 精品美女一区二区三区| 9191国产精品| 欧美日韩综合在线| 色猫猫国产区一区二在线视频| 亚洲欧洲精品成人久久奇米网| 国产999精品久久久久久绿帽| 日韩美女一区二区三区四区| 欧洲色大大久久| 色悠久久久久综合欧美99| 成人免费观看男女羞羞视频| 激情综合亚洲精品| 91精品欧美综合在线观看最新| 国产午夜亚洲精品不卡| 欧美丝袜丝交足nylons图片| 国产久卡久卡久卡久卡视频精品| 欧美日韩一区二区不卡| 91社区在线播放| 成av人片一区二区| youjizz久久| 丰满少妇久久久久久久| 成人性生交大片免费| www.亚洲激情.com| 99精品久久只有精品| 国产精品18久久久久| 国产91丝袜在线18| 91国产福利在线| 欧美一区二区视频在线观看2020 | 欧美成人一区二区三区在线观看| 精品亚洲porn| 国产一区二区三区久久久| 成人免费视频视频| 欧美午夜不卡在线观看免费| 欧美成人欧美edvon| 自拍偷拍国产亚洲| 日韩一区欧美二区| 高清国产一区二区三区| 欧美精选午夜久久久乱码6080| va亚洲va日韩不卡在线观看| 精品污污网站免费看| 国产欧美日韩精品一区| 青青草97国产精品免费观看无弹窗版| 一区二区三区91| 粉嫩av亚洲一区二区图片| 欧美在线免费观看亚洲|