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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? sockutil.c

?? 硬件協(xié)議棧芯片w3100a的DHCP實(shí)現(xiàn)
?? C
字號(hào):
/*
###############################################################################

File Name : sockutil.c

Version : 1.0

Programmer(s) : Kim Woo Youl

Created : 2002/10/20 

Description :  Implementation of useful function of W3100A
  
Modified History :

		Modified : 
		Programmer : 
		Description : 

###############################################################################
*/

/*
###############################################################################
Include Part
###############################################################################
*/
#include "reg51.h"
#include "socket.h"
#include "serial.h"
#include "util.h"
#include "sockutil.h"



/*
###############################################################################
Define Part
###############################################################################
*/




/*
###############################################################################
Grobal Variable Definition Part
###############################################################################
*/



/*
###############################################################################
Local  Variable Definition Part
###############################################################################
*/


/*
Description   :  Convert 32bit Address into Dotted Decimal Format
Argument      :  addr - Pointer variable to store converted value(INPUT)
		 addr_str - Character string to store Decimal Dotted Notation Format.(INPUT,OUTPUT)
Return Value  :  
Note          :  
*/
void inet_ntoa(u_char* addr,char* addr_str)
{
	char i ;
	int d;

	for(i = 0; i < 4; i++)
	{
		d = *(addr+i);
		d = d & 0x00FF;
		/* Convert to decimal number */
		*addr_str++ = D2C(d/100);		
		*addr_str++ = D2C(( d / 10 )%10);
		*addr_str++ = D2C(D2C(d%10));		 
		*addr_str++ = '.';
	}
	*(--addr_str) = 0;
}

/*
Description   :  Get Source IP Address of W3100A.
Argument      :  addr - Pointer to store Source IP Address(32bit Address)(INPUT, OUTPUT)
Return Value  :  
Note          :  
*/
void GetIPAddress(u_char* addr)
{
	char i ;
	for(i = 0; i < 4; i++)
		addr[i] = *(SRC_IP_PTR+i);
}

/*
Description   :  Get Source IP Address of W3100A.
Argument      :  addr -  Pointer to store Gateway IP Address(32bit Address)(INPUT, OUTPUT)
Return Value  :  
Note          :  
*/
void GetGWAddress(u_char* addr)
{
	char i ;
	for(i = 0; i < 4; i++)
		addr[i] = *(GATEWAY_PTR+i);
}

/*
Description   : Get Source Subnet mask of W3100A.
Argument      :  addr -  Pointer to store Subnet Mask(32bit Address)(INPUT, OUTPUT)
Return Value  :  
Note          :  
*/
void GetSubMask(u_char* addr)
{
	char i ;
	for(i = 0; i < 4; i++)
		addr[i] = *(SUBNET_MASK_PTR+i);
}

/*
Description   :  To be input Dotted Notation string from RS232C and convert 32-bit or 48bit Decimal Address
Argument      :  addr - Pointer variable to be stored Converted value (INPUT, OUTPUT)
		 base - binary,decimal,hexa-decimal (INPUT)
                 len - number of Dot Character string to be input(INPUT)
Return Value  :  Length of source string
Note          :  If converting has finished, then '1'.Else if user cancel the input or input wrong valued, then '-1'.
*/
char GetDotNotationAddr(u_char* addr, u_int base, u_int len)
{
	u_char xdata str[9];						// Consider the case of binary numberr
	u_char i,c;
	u_char j = 0;
	
	if(base == 0x10) i = 2;						// max number 
	else if (base == 10) i = 3;
	else i = 8;

	while(1) 
	{
		c = GetByte();						// Read 1 Character
		switch(c)
		{
		case 0x0D :						// If New line
			str[j++] = '\0';
			*addr++ = (u_char) ATOI(str,base);		// Convert to Decimal and Store
			len--;
			PutStringLn("");
			if( len <= 0 )	return 1;
			else return -1;
		case '.' :						// If Dot
			str[j++] = '\0';
			*addr++ = (u_char) ATOI(str,base);
			len--;
			PutByte('.');
			j = 0;
			break;
		case 0x1B:
			return -1;					// Cancel
		case 0x08:
			if(j !=0)
			{
		       		PutByte(0x08);
				PutByte(' ');
				PutByte(0x08);
				j--;
			}
			break;
		default:
			if( C2D(c) != c && j < i)			// If Value to be input is not character and not above avaiable max input number.
			{
				PutByte(c);				// echo.
				str[j++] = c;						
			}
			break;
		}
	}
}


/*
********************************************************************************
* Description: Read established network information(G/W, IP, S/N, Mac) of W3100A and Output that through Serial.
* Arguments  :  
* Returns    :
* Note       :  Mac Address is output into format of Dotted HexaDecimal.Others are output into format of Dotted Decimal Format.
********************************************************************************
*/
void GetNetConfig()
{
	char xdata str[16];
	u_char xdata addr[6];
	u_char i;
	PutStringLn("\r\n====================================");
	PutStringLn("       Net Config Information");
	PutStringLn("====================================");
	PutString("MAC ADDRESS      : ");
	for(i = 0; i < 5; i++)		 				// HexaDecimal
	{
		PutHTOA(*(SRC_HA_PTR+i));
		PutByte('.');
	}
	PutHTOA(*(SRC_HA_PTR+i));

	GetSubMask(addr);
	inet_ntoa(addr,str);				   		// Dotted Decimal Format convert
	PutString("\r\nSUBNET MASK      : "); PutStringLn(str);

	GetGWAddress(addr);
	inet_ntoa(addr,str);
	PutString("G/W IP ADDRESS   : ");PutStringLn(str);

	GetIPAddress(addr);
	inet_ntoa(addr,str);
	PutString("LOCAL IP ADDRESS : "); PutStringLn(str);
	PutStringLn("====================================");
}

/*
Description   :  Get handle of socket which status is same to 'status'
Argument      :  status - socket's status to be found
		 start  - base of socket to be found
Return Value  :  socket number
Note          :  
*/
SOCKET getSocket(u_char status, SOCKET start)
{
	SOCKET i;
	if(start == -1 || start > 3) start = 0;

	for(i = start; i < start + MAX_SOCK_NUM ; i++)
		if(select(i%MAX_SOCK_NUM,SEL_CONTROL)==status) return i%MAX_SOCK_NUM;
	return -1;
}


/*
###############################################################################
Unused Function Implementation Part
###############################################################################
*/
#ifndef __UNUSED_SOCK_UTIL__

/*
********************************************************************************
*               Output destination IP address of appropriate channel
*
* Description : Output destination IP address of appropriate channel
* Arguments   : s  - Channel number which try to get destination IP Address
*    addr - Buffer address to store destination IP address
* Returns     : None
* Note        : API Function 
*               Output format is written in Hexadecimal.
********************************************************************************
*/
char* GetDestAddr(SOCKET s,u_char* addr)
{
	addr[0] = *(DST_IP_PTR(s));
	addr[1] = *(DST_IP_PTR(s)+1);
	addr[2] = *(DST_IP_PTR(s)+2);
	addr[3] = *(DST_IP_PTR(s)+3);
	return addr;
}

/*
Description   :  Converts a string containing an (Ipv4) Internet Protocol decimal dotted address into a 32bit address 
Argument      :  addr - dotted notation address string. 
Return Value  :  32bit address
Note          :  
*/
u_long inet_addr(u_char* addr)
{
	char i;
	char Num[4];
	u_long inetaddr;
	u_char * paddr = (char*)&inetaddr;
	char * NextTok = addr;
	
	for(i = 0; i < 4; i++)
	{
		NextTok = StrTok(NextTok,'.',Num);
		*(paddr+i) = ATOI(Num,10);
	}
	return inetaddr;
}

/*
Description   :  Calculate checksum of a stream
Argument      :  src - pointer to stream 
		 len - size of stream
Return Value  :  checksum
Note          :  
*/
u_int checksum(u_char * src, u_int len)
{
	u_int sum, tsum, i, j;
	u_long lsum;

	j = len >> 1;

	lsum = 0;

	for (i = 0; i < j; i++) 
	{
		tsum = src[i * 2];
		tsum = tsum << 8;
		tsum += src[i * 2 + 1];
		lsum += tsum;
	}

	if (len % 2) 
	{
		tsum = src[i * 2];
		lsum += tsum;
	}

	sum = lsum;
	sum = ~(sum + (lsum >> 16));

	return sum;
}

/*
Description   :  Verify decimal dotted notation IP address string
Argument      :  src - pointer to IP address string
Return Value  :  success - 1, fail - -1
Note          :  
*/
char VerifyIPAddress(char* src)
{
	char i;
	int tnum;
	char Num[4];
	char * NextTok = src;
	
	for(i = 0; i < 4; i++)
	{
		NextTok = StrTok(NextTok,'.',Num);
		if (NextTok == 0 && i != 3) return -1;
		if(ValidATOI(Num,10,&tnum)==-1) return -1;
		if(tnum < 0 && tnum > 255) return -1;
	}
	return 1;
}

#endif

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
2020国产精品| 亚洲最大色网站| 欧美另类videos死尸| 国产精品18久久久久久久久久久久| 一区二区三区高清| 欧美国产日韩一二三区| 欧美一区二区在线免费观看| 成人v精品蜜桃久久一区| 男人的天堂久久精品| 亚洲黄一区二区三区| 欧美国产禁国产网站cc| 日韩一卡二卡三卡四卡| 欧美亚洲综合网| www.成人在线| 懂色中文一区二区在线播放| 美女视频黄 久久| 婷婷国产在线综合| 一区二区三区中文字幕| 国产精品入口麻豆原神| 国产午夜精品久久久久久免费视 | 欧美日韩精品一区二区天天拍小说| 国产另类ts人妖一区二区| 日韩电影免费一区| 亚欧色一区w666天堂| 一区二区视频在线| 中文字幕亚洲在| 国产精品欧美一级免费| 国产女人aaa级久久久级 | 亚洲精选免费视频| 国产精品免费免费| 国产精品久久久久久久蜜臀| 国产欧美综合色| 国产日韩欧美高清| 日本一二三不卡| 欧美激情综合五月色丁香| 国产欧美日韩综合| 久久色在线观看| 国产三级精品三级| 欧美高清在线一区二区| 欧美极品美女视频| 国产精品久久久99| 亚洲人成伊人成综合网小说| 成人欧美一区二区三区视频网页| 亚洲欧洲99久久| 亚洲精品水蜜桃| 亚洲一本大道在线| 天天影视色香欲综合网老头| 日本成人在线一区| 国产在线播精品第三| 国产精品99久久久久久久vr| 高清成人在线观看| 91蝌蚪porny九色| 欧美午夜精品久久久久久超碰| 日本高清不卡在线观看| 精品视频在线免费观看| 欧美一区午夜视频在线观看| 日韩亚洲国产中文字幕欧美| 26uuu欧美| 欧美激情综合在线| 一区二区三区在线视频播放| 亚洲第一综合色| 精品制服美女丁香| 国产大陆精品国产| 色婷婷狠狠综合| 91精品国产综合久久小美女| 久久亚洲精品国产精品紫薇| 1000精品久久久久久久久| 一区二区三区在线免费视频| 日韩国产欧美在线播放| 国产精品 欧美精品| 99久久精品国产毛片| 欧美日韩三级视频| 久久综合色8888| 亚洲精品视频在线| 免费的成人av| 99re视频精品| 日韩一区二区三区视频在线| 欧美韩国一区二区| 亚洲444eee在线观看| 国产精品 欧美精品| 欧美性色黄大片手机版| 2020国产精品| 亚洲一二三区不卡| 丁香激情综合国产| 欧美性生交片4| 久久久99免费| 性做久久久久久久免费看| 成人免费黄色大片| 欧美一区二区三区视频免费播放| 欧美国产激情二区三区| 日韩福利视频网| 99精品视频在线观看| 337p亚洲精品色噜噜狠狠| 中文av一区二区| 免费成人性网站| 欧美中文字幕不卡| 欧美高清在线精品一区| 日韩成人精品视频| 色婷婷一区二区| 国产欧美一区二区精品久导航| 日本一不卡视频| 色婷婷狠狠综合| 亚洲欧洲av在线| 国产大片一区二区| xnxx国产精品| 日韩成人精品在线| 在线观看一区不卡| 日韩毛片高清在线播放| 国产成人av资源| 久久一区二区三区国产精品| 日韩精品亚洲专区| 欧洲国产伦久久久久久久| 国产精品电影院| 夫妻av一区二区| 久久久99免费| 国产一区二区三区综合| 日韩美女一区二区三区四区| 亚洲国产日韩一区二区| 色香色香欲天天天影视综合网| 亚洲国产高清在线| 国产成人一级电影| 久久这里只有精品首页| 久久精品国产久精国产爱| 欧美一级精品大片| 视频一区国产视频| 成人综合激情网| 久久久九九九九| 国产福利一区二区三区视频| 久久久久高清精品| 国产精品69久久久久水密桃| 国产亚洲综合在线| 国产成人亚洲综合a∨婷婷| 久久综合网色—综合色88| 国产永久精品大片wwwapp| 91麻豆精品国产91久久久久 | 亚洲综合av网| 欧美性色aⅴ视频一区日韩精品| 亚洲伊人色欲综合网| 欧亚一区二区三区| 亚洲777理论| 日韩视频在线永久播放| 激情欧美日韩一区二区| 在线观看不卡一区| 一区二区三区日韩欧美| 欧洲一区在线观看| 日本网站在线观看一区二区三区 | 国产成人精品影院| 中文字幕av不卡| 色欧美88888久久久久久影院| 亚洲日本在线看| 欧美三区在线观看| 美腿丝袜一区二区三区| 久久精品视频一区二区三区| 国产成人小视频| 亚洲人吸女人奶水| 欧美欧美欧美欧美| 久久av中文字幕片| 国产蜜臀97一区二区三区| 色综合久久综合| 日韩国产欧美在线视频| 久久久久久久一区| 色综合激情五月| 免费观看成人鲁鲁鲁鲁鲁视频| xnxx国产精品| 在线视频一区二区免费| 蜜臀久久99精品久久久久宅男| 国产日产欧美一区| 欧美这里有精品| 精品一区二区三区影院在线午夜| 欧美国产禁国产网站cc| 欧美亚洲国产一区二区三区| 极品销魂美女一区二区三区| 中文欧美字幕免费| 欧美肥妇毛茸茸| 国产成人av一区二区三区在线 | 日本伦理一区二区| 青椒成人免费视频| 国产精品久久久久影院老司 | 日韩一区二区在线免费观看| 国产精品自拍三区| 亚洲国产cao| 久久久亚洲国产美女国产盗摄 | 不卡的av在线| 日韩va欧美va亚洲va久久| 欧美高清在线一区| 欧美一区二区三区色| 97久久精品人人做人人爽| 美女爽到高潮91| 亚洲一区二区四区蜜桃| 国产日产欧产精品推荐色 | 色狠狠一区二区| 国产真实乱子伦精品视频| 亚洲黄色小说网站| 久久久精品免费网站| 欧美精品在线观看播放| eeuss鲁片一区二区三区 | av网站免费线看精品| 美女网站在线免费欧美精品| 亚洲狠狠丁香婷婷综合久久久| 久久久欧美精品sm网站|