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

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

?? socket.c

?? WIZNET公司W3100API庫用于TCPIP開發簡化你的網絡接入開發步驟
?? C
?? 第 1 頁 / 共 4 頁
字號:
	while(!(I_STATUS[0] & SSYS_INIT_OK));
}

/*
********************************************************************************
*               Subnet mask setup function
*
* Description : Subnet mask setup function
* Arguments   : addr - pointer having the value for setting up the Subnet Mask
* Returns     : None
* Note        : API Function
********************************************************************************
*/
void setsubmask(u_char * addr)
{
	u_char i;

	for (i = 0; i < 4; i++) {
		*(SUBNET_MASK_PTR + i) = addr[i];
	}
}

/*
********************************************************************************
*               gateway IP setup function
*
* Description : gateway IP setup function
* Arguments   : addr - pointer having the value for setting up the gateway IP
* Returns     : None
* Note        : API Function
********************************************************************************
*/
void setgateway(u_char * addr)
{
	u_char i;

	for (i = 0; i < 4; i++) {
		*(GATEWAY_PTR + i) = addr[i];
	}
}

/*
********************************************************************************
*               W3100A IP Address setup function
*
* Description : W3100A IP Address setup function
* Arguments   : addr - pointer having the value for setting up the source IP Address
* Returns     : None
* Note        : API Function
********************************************************************************
*/
void setIP(u_char * addr)
{
	u_char i;

	for (i = 0; i < 4; i++) {
		*(SRC_IP_PTR + i) = addr[i];
	}
}

/*
********************************************************************************
*               MAC Address setup function
*
* Description : MAC Address setup function
* Arguments   : addr - pointer having the value for setting up the MAC Address
* Returns     : None
* Note        : API Function
********************************************************************************
*/
void setMACAddr(u_char * addr)
{
	u_char i;

	for (i = 0; i < 6; i++) {
		*(SRC_HA_PTR + i) = addr[i];
	}
}

#ifdef __IP_RAW__
/*
********************************************************************************
*               Upper layer protocol setup function in IP RAW Mode
*
* Description : Upper layer protocol setup function in protocol field of IP header when
*                    developing upper layer protocol like ICMP, IGMP, EGP etc. by using IP Protocol
* Arguments   : s          - Channel number
*               ipprotocol - Upper layer protocol setting value of IP Protocol
*                            (Possible to use designated IPPROTO_ in header file)
* Returns     : None
* Note        : API Function
*                  This function should be called before calling socket() that is, before socket initialization.
********************************************************************************
*/
void setIPprotocol(SOCKET s, u_char ipprotocol)
{
	IP_PROTOCOL(s) = ipprotocol;
}
#endif


#ifdef	__OPT__

/*
********************************************************************************
*               TCP timeout setup function
*
* Description : TCP retransmission time setup function.
*     Timeout Interrupt occurs if the number of retransmission exceed the limit when establishing connection and data transmission. 
* Arguments   : val - Pointer having the value to setup timeout
*     Upper 2byte is for initial timeout, lower 1byte is for the number of retransmission by timeout
* Returns     : None
* Note        : API Function
********************************************************************************
*/
void settimeout(u_char * val)
{
	u_char i;

	for (i = 0; i < 3; i++) {
		*(TIMEOUT_PTR + i) = val[i];
	}
}

/*
********************************************************************************
*               interrupt mask setup function
*
* Description : Interrupt mask setup function. Enable/Disable appropriate Interrupt.
* Arguments   : mask - mask value to setup ('1' : interrupt enable)
* Returns     : None
* Note        : API Function
********************************************************************************
*/
void setINTMask(u_char mask)
{
	INTMASK = mask;
}

/*
********************************************************************************
*               TOS value setup function for TOS field of IP header
*
* Description : TOS value setup function for TOS field of IP header
* Arguments   : s   - channel number
*    tos - Valuse to setup for TOS field of IP Header
* Returns     : None
* Note        : API Function
********************************************************************************
*/
void setTOS(SOCKET s, u_char tos)
{
	TOS(s) = tos;
}
#endif

/*
********************************************************************************
*               Initialization function to appropriate channel
*
* Description : Initialize designated channel and wait until W3100 has done.
* Arguments   : s - channel number
*               protocol - designate protocol for channel
*                          SOCK_STREAM(0x01) -> TCP.
*                          SOCK_DGRAM(0x02)  -> UDP.
*                          SOCK_IPL_RAW(0x03) -> IP LAYER RAW.
*                          SOCK_MACL_RAW(0x04) -> MAC LAYER RAW.
*               port     - designate source port for appropriate channel
*               flag     - designate option to be used in appropriate.
*                          SOCKOPT_BROADCAST(0x80) -> Send/receive broadcast message in UDP
*                          SOCKOPT_NDTIMEOUT(0x40) -> Use register value which designated TIMEOUT value
*                          SOCKOPT_NDACK(0x20)     -> When not using no delayed ack
*                          SOCKOPT_SWS(0x10)       -> When not using silly window syndrome
* Returns     : When succeeded : Channel number, failed :1
* Note        : API Function
********************************************************************************
*/
char socket(SOCKET s, u_char protocol, u_int port, u_char flag)
{
	u_char k;

	OPT_PROTOCOL(s) = protocol | flag;                // Designate socket protocol and option

	if (port != 0)                                    // setup designated port number
	 {
		k = (u_char)((port & 0xff00) >> 8);
		*(SRC_PORT_PTR(s)) = k;
		k = (u_char)(port & 0x00ff);
		*(SRC_PORT_PTR(s) + 1) = k;
	} 
	else                                              // Designate random port number which is managed by local when you didn't designate source port
	{
		Local_Port++;					
		*SRC_PORT_PTR(s) = (u_char)((Local_Port & 0xff00) >> 8);
		*(SRC_PORT_PTR(s) + 1) = (u_char)(Local_Port & 0x00ff);
	}

	I_STATUS[s] = 0;
	COMMAND(s) = CSOCK_INIT;                          // SOCK_INIT
	while (I_STATUS[s] == 0);                         // Waiting Interrupt to CSOCK_INIT

	if (!(I_STATUS[s] & SSOCK_INIT_OK)) return (-1);  // Error
	
	initseqnum(s);                                    // Use initial seq# with random number

	return	(s);
}

#ifdef	__TCP_CLIENT__
/*
********************************************************************************
*               Connection establishing function to designated peer.
*
* Description : This function establish a connection to the peer by designated channel,
*     and wait until the connection is established successfully. (TCP client mode)
* Arguments   : s    - channel number
*               addr - destination IP Address
*               port - destination Port Number
* Returns     : when succeeded : 1, failed : -1
* Note        : API Function
********************************************************************************
*/
char connect(SOCKET s, u_char * addr, u_int port)
{
	if (port != 0) 
	{                                                           // designate destination port
		*DST_PORT_PTR(s) = (u_char)((port & 0xff00) >> 8);
		*(DST_PORT_PTR(s) + 1) = (u_char)(port & 0x00ff);
	}
	else    return (-1);

	*DST_IP_PTR(s) = addr[0];                                   // designate destination IP address
	*(DST_IP_PTR(s) + 1) = addr[1];
	*(DST_IP_PTR(s) + 2) = addr[2];        
	*(DST_IP_PTR(s) + 3) = addr[3];

	I_STATUS[s] = 0;

	COMMAND(s) = CCONNECT;                                      // CONNECT

	
	while (I_STATUS[s] == 0)                                    // Wait until connection is established successfully
		if (select(s, SEL_CONTROL) == SOCK_CLOSED) return -1;   // When failed, appropriate channel will be closed and return an error

	if (!(I_STATUS[s] & SESTABLISHED)) return (-1);             // Error

    return	(1);
}
#endif

#ifdef	__TCP_SERVER__
/*
********************************************************************************
*               Waits for connection request from a peer (Blocking Mode)
*
* Description : Wait for connection request from a peer through designated channel (TCP Server mode)
* Arguments   : s    - channel number
*               addr - IP Address of the peer when a connection is established
*               port - Port number of the peer when a connection is established 
* Returns     : When succeeded : 1, failed : -1
* Note        : API Function
********************************************************************************
*/
/*
char listen(SOCKET s, u_char * addr, u_int * port)
{
	u_int i;

	I_STATUS[s] = 0;

	COMMAND(s) = CLISTEN;                                       // LISTEN

	while (I_STATUS[s] == 0)                                    // Wait until connection is established
	    if (select(s, SEL_CONTROL) == SOCK_CLOSED) return -1;   // When failed to connect, the designated channel will be closed and return an error.

	if (I_STATUS[s] & SESTABLISHED)                             // Receive IP address and port number of the peer connected
	{ 
		i = *DST_PORT_PTR(s);
		*port = (u_int)((i & 0xff00) >> 8);
		i = *(DST_PORT_PTR(s) + 1);
		i = (u_int)(i & 0x00ff);
		*port += (i << 8);

		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);
	} 
	else	return (-1);                                        // Error

	return (1);
}
*/

/*
********************************************************************************
*              Waits for connection request from a peer (Non-blocking Mode)
*
* Description : Wait for connection request from a peer through designated channel (TCP Server mode)
* Arguments   : s - channel number
* Returns     : None
* Note        : API Function
********************************************************************************
*/
void NBlisten(SOCKET s)
{
	I_STATUS[s] = 0;
	COMMAND(s) = CLISTEN;         // LISTEN
}
#endif

/*
********************************************************************************
*               Create random value for initial Seq# when establishing TCP connection
*
* Description : In this function, you can add some source codes to create random number for initial Seq#
*     In real, TCP initial SEQ# should be random value. 
*               (Currently, we're using static value in EVB/DK.)
* Arguments   : s - channel number
* Returns     : None
* Note        : API Function
********************************************************************************
*/
void initseqnum(SOCKET s)
{
	int i;

	i = s;

	SEQ_NUM.lVal++;     // Designate initial seq#
                            // If you have random number generation function, assign random number instead of SEQ_NUM.lVal++.

	*TX_WR_PTR(s)	    = SEQ_NUM.cVal[0];
	*(TX_WR_PTR(s) + 1) = SEQ_NUM.cVal[1];
	*(TX_WR_PTR(s) + 2) = SEQ_NUM.cVal[2];
	*(TX_WR_PTR(s) + 3) = SEQ_NUM.cVal[3];
	wait_1us(2);	    // Wait until TX_WR_PRT has been written safely. ( Must have delay(1.6us) if next action is to write 4byte-pointer register )

	*TX_RD_PTR(s)	    = SEQ_NUM.cVal[0];
	*(TX_RD_PTR(s) + 1) = SEQ_NUM.cVal[1];
	*(TX_RD_PTR(s) + 2) = SEQ_NUM.cVal[2];
	*(TX_RD_PTR(s) + 3) = SEQ_NUM.cVal[3];
	wait_1us(2);	    // Wait until TX_RD_PRT has been written safely.

	*TX_ACK_PTR(s)	     = SEQ_NUM.cVal[0];
	*(TX_ACK_PTR(s) + 1) = SEQ_NUM.cVal[1];
	*(TX_ACK_PTR(s) + 2) = SEQ_NUM.cVal[2];
	*(TX_ACK_PTR(s) + 3) = SEQ_NUM.cVal[3];
}

#ifdef	__TCP__
/*
********************************************************************************
*               Function for sending TCP data.
*
* Description : Function for sending TCP data and Composed of the send() and send_in() functions.
*     The send() function is an application I/F function.
*     It continues to call the send_in() function to complete the sending of the data up to the size of the data to be sent

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区在线观看网站| 精品国产91乱码一区二区三区 | 国产精品久久精品日日| 国产尤物一区二区| 久久精品男人天堂av| 成人av资源在线观看| 亚洲欧洲成人精品av97| 欧美性猛交一区二区三区精品| 亚洲精品免费一二三区| 在线观看日韩毛片| 免费人成精品欧美精品 | 国产三级精品三级| 99久久久久久| 亚洲成av人**亚洲成av**| 欧美高清www午色夜在线视频| 美女视频黄久久| 国产精品丝袜久久久久久app| 色综合欧美在线| 日韩不卡一二三区| 日本一区二区免费在线| 色呦呦一区二区三区| 日韩高清在线观看| 国产精品久久久久四虎| 欧美日韩大陆一区二区| 国产精品99久| 亚洲chinese男男1069| 久久久精品黄色| 欧美在线观看视频一区二区 | 日本美女一区二区三区| 国产片一区二区| 欧美色综合网站| 国产综合久久久久久鬼色| 亚洲欧美日韩系列| 精品三级在线看| 在线观看不卡一区| 国产东北露脸精品视频| 日韩成人一级大片| 亚洲免费观看高清| 国产午夜精品一区二区三区视频| 欧美日韩色一区| av在线不卡网| 国产一区二区三区黄视频| 一区二区三区久久久| 国产无人区一区二区三区| 欧美一区二区成人6969| 91麻豆精品一区二区三区| 国产麻豆视频一区二区| 午夜一区二区三区视频| 国产精品传媒视频| 久久蜜桃一区二区| 91精品国产一区二区人妖| 91视频观看视频| 成人在线视频首页| 国产在线视频不卡二| 日产国产高清一区二区三区| 伊人婷婷欧美激情| 中文字幕一区二区三区在线观看| 久久久久久久久99精品| 精品日韩一区二区三区| 日韩一区二区视频| 欧美精品色综合| 欧美精品自拍偷拍动漫精品| 日本久久一区二区| 91丨porny丨最新| 成人激情校园春色| 福利电影一区二区三区| 国产mv日韩mv欧美| 成人午夜精品在线| 风间由美一区二区av101| 国产精品一区三区| 国产成人免费视频精品含羞草妖精| 麻豆国产精品视频| 国内精品久久久久影院薰衣草| 奇米影视一区二区三区| 另类小说欧美激情| 九色综合狠狠综合久久| 麻豆精品新av中文字幕| 精东粉嫩av免费一区二区三区| 久久激五月天综合精品| 激情综合色综合久久| 国内精品嫩模私拍在线| 国产激情一区二区三区四区 | 国产经典欧美精品| 成人三级在线视频| 99re热这里只有精品免费视频| 成人综合婷婷国产精品久久 | 91老师片黄在线观看| 91蜜桃免费观看视频| 在线看日韩精品电影| 欧美日韩综合色| 欧美一区二区三区免费| 精品国产1区二区| 国产精品久久久爽爽爽麻豆色哟哟| 亚洲欧洲另类国产综合| 亚洲精品成人在线| 日韩精品福利网| 国产福利一区二区三区| 色综合中文字幕国产 | 欧美日韩成人一区二区| 日韩精品在线一区二区| 欧美高清一级片在线观看| 国产精品福利一区二区| 一区二区在线观看免费| 蜜桃久久久久久| 风间由美中文字幕在线看视频国产欧美| eeuss影院一区二区三区 | 国产资源在线一区| 色婷婷亚洲一区二区三区| 欧美日韩黄色影视| 精品成人在线观看| 亚洲另类色综合网站| 日韩黄色小视频| 国产91清纯白嫩初高中在线观看| 91成人国产精品| 精品国产区一区| 一区二区视频在线| 精品写真视频在线观看| 在线观看中文字幕不卡| 日韩精品自拍偷拍| 一区av在线播放| 国模冰冰炮一区二区| 欧洲生活片亚洲生活在线观看| 欧美成人精品二区三区99精品| 亚洲女同女同女同女同女同69| 免费久久99精品国产| 99re这里只有精品视频首页| 欧美白人最猛性xxxxx69交| 一区二区三区美女| 粉嫩av一区二区三区粉嫩| 91精品啪在线观看国产60岁| 中文字幕在线一区| 国精产品一区一区三区mba桃花 | 欧美日韩亚洲另类| 国产精品麻豆视频| 九一九一国产精品| 欧美高清激情brazzers| 亚洲精品国产无套在线观| 国产永久精品大片wwwapp| 精品视频在线免费观看| 中文字幕在线不卡一区二区三区| 国内精品写真在线观看| 欧美精品日韩一本| 亚洲一区二三区| 色综合中文综合网| 91传媒视频在线播放| 国产精品三级av在线播放| 精品一区二区三区欧美| 欧美另类变人与禽xxxxx| 日韩毛片视频在线看| www.爱久久.com| 国产午夜精品理论片a级大结局| 蜜芽一区二区三区| 777a∨成人精品桃花网| 亚洲成av人综合在线观看| 日本精品视频一区二区| 专区另类欧美日韩| 91老司机福利 在线| 亚洲色图制服诱惑| 97久久超碰精品国产| 亚洲色图视频免费播放| 91麻豆国产香蕉久久精品| 亚洲精品国产一区二区精华液 | 亚洲国产乱码最新视频| 在线亚洲一区观看| 亚洲乱码国产乱码精品精小说| 白白色 亚洲乱淫| 中文字幕一区视频| 色婷婷综合在线| 一区二区免费在线播放| 欧美视频日韩视频| 欧美a一区二区| 精品国产乱码久久| 国产99精品国产| 国产精品成人一区二区艾草| 99视频在线精品| 一区二区三区四区视频精品免费| 色偷偷一区二区三区| 五月激情丁香一区二区三区| 欧美一二三在线| 国产精品一区二区免费不卡| 国产日韩精品一区| 日本黄色一区二区| 日本特黄久久久高潮| 精品国产精品一区二区夜夜嗨| 91精品国产入口| 紧缚奴在线一区二区三区| 欧美激情一区二区三区| 色欧美乱欧美15图片| 午夜视频在线观看一区| 精品国产伦一区二区三区观看方式 | 成人免费一区二区三区视频| 色视频一区二区| 日本不卡一区二区| 国产日韩v精品一区二区| 成人aaaa免费全部观看| 一区二区三区日韩| 日韩精品一区二区三区视频播放| 风间由美一区二区av101| 午夜精品一区在线观看| 久久精品人人做人人综合 |