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

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

?? tcpserver.c

?? 用AVR單片機和RTL8019實現TCP/IP協議.支持ARP,PING,UDP,TCP,HTML網頁顯示等功能.
?? C
?? 第 1 頁 / 共 2 頁
字號:
//**********************************
//*版本: Test 1.0
//*作者: XUGUOHONG
//*E-MAIL: KK20Y@YAHOO.COM.CN
//*WEBSITE:microdesign.000webhost.com
//**********************************

#include <tcp.h>
#include <udp.h>
#include <icmp.h>
#include <ip.h>
#include <rtl8019as.h>
//**********************************
//*  系統 MAC地址設定(根據需要修正)
//**********************************
extern unsigned char SYSMAC[6];
//**********************************
//*  系統 IP地址設定(根據需要修正)
//**********************************
extern unsigned char SYSIP[4];

//**********************************
//*    TCP 全局變量定義
//**********************************
unsigned char TCP_STATE=0;
unsigned long TCP_MY_SEQ=0XA0A0A0A0;
unsigned long TCP_MY_ACK=0X00000000;
unsigned char TCP_MY_HSZ=0X00;
unsigned int  TCP_MY_MSS=512;
unsigned int  TCP_MAX_SEND=512;
unsigned int  TCP_DAT_PT=TCP_DSTART;
unsigned int  TCP_DAT_SZ=0;
unsigned int  tcp_remote_dsz=0x00;                 // 收到對方TCP數據載體長度
unsigned int  tcp_remote_dpt=0x00;                 // 收到對方TCP數據載體指針


void tcp_init_sw(unsigned char);
void tcp_state_machine(unsigned char);
void tcp(void);
void tcpserver_send_data(unsigned int,unsigned char,unsigned char);
unsigned int tcp_check_sum(unsigned int);
void tcp_port_handle(void);
//**********************************
//*  TCP初始化,及打開/關閉服務
//**********************************
void tcp_init_sw(unsigned char onoff)
{
 if(onoff==0x01)
 {
  TCP_STATE=1;                               // 進入TCP_LISTEN模式
  TCP_MY_SEQ=0X11223344;
  TCP_MY_ACK=0X00000000;
  TCP_MY_HSZ=20;
  TCP_MY_MSS=1024;                           // 自己設定
  TCP_MAX_SEND=512;                          // 由客戶端決定
  TCP_DAT_PT=TCP_DSTART;               
  TCP_DAT_SZ=0;
 }
 else 
  TCP_STATE=0;                               // 進入TCP_CLOSED模式
}

//**********************************
//*  TCP狀態轉換機制
//*  tcp state machine
//**********************************
void tcp_state_machine(unsigned char tcp_flag)
{
 unsigned char temp0;
 unsigned char temp1;
 switch(TCP_STATE)
 {
  case TCP_CLOSED:                          //當前狀態TCP_CLOSED
       break;
  case TCP_LISTEN:                          //當前狀態TCP_LISTEN
       if( tcp_flag==TCP_SYN )
	     {
		      //debuG
	          uart_send('S');
	          uart_send('T');
	          uart_send('A');
			  uart_send(' ');
	          //debuG
		   TCP_STATE=TCP_SYN_RCVD;
		   temp0=TCP_SYN;
		   temp1=TCP_ACK;
           tcpserver_send_data(0,24,temp0|temp1);  //Header Size=24,函數自動默認添加MMS
		   //TCP_TIMEOUT(10);                      // SYN=1,ACK=1
		 }
		else  
		{
		 temp0=TCP_RST;                           //以外情形進行通信復位
		 temp1=TCP_ACK;
		 tcpserver_send_data(0,20,temp0|temp1);
		 tcp_init_sw(0x01);
		 }
	   break;
  case TCP_SYN_RCVD:                               //當前狀態TCP_SYN_RCVD
       if( tcp_flag==TCP_ACK )
	     {
		   	//debuG
	          uart_send('O');
	          uart_send('K');
	          uart_send('!');
			  uart_send(' ');
	        //debuG
		   TCP_STATE=TCP_ESTABLISHED;
		 }
	   else 
	   	{
		 temp0=TCP_RST;                           //以外情形進行通信復位
		 temp1=TCP_ACK;
		 tcpserver_send_data(0,20,temp0|temp1);
		 tcp_init_sw(0x01);
		 }
	   break;
  case TCP_ESTABLISHED:                           //當前狀態TCP_ESTABLISHED
       if( (tcp_flag&TCP_FIN)!=0 )
	     {
		     //debuG
	          uart_send('C');
	          uart_send('L');
	          uart_send('1');
			  uart_send(' ');
	        //debuG
		   TCP_STATE=TCP_CLOSE_WACK;                 //直接結束 FIN+ACK
		   temp0=TCP_ACK;
		   temp1=TCP_FIN;
		   tcpserver_send_data(0,20,temp0|temp1);    //FIN=1 + ACK=1
		   //TCP_TIMEOUT(10);
		 }
		else
		{
		 temp0=TCP_RST;                           //以外情形進行通信復位
		 temp1=TCP_ACK;
		 tcpserver_send_data(0,20,temp0|temp1);
		 tcp_init_sw(0x01);
		 }
	   break;
  case TCP_CLOSE_WACK:                  //當前狀態TCP_CLOSE_WACK
        if( tcp_flag==TCP_ACK )
	     {
		   	//debuG
	          uart_send('C');
	          uart_send('L');
	          uart_send('2');
			  uart_send(' ');
	        //debuG
		   TCP_STATE=TCP_LISTEN;
		   tcp_init_sw(1);
		 }
		else 
		{
		 temp0=TCP_RST;                           //以外情形進行通信復位
		 temp1=TCP_ACK;
		 tcpserver_send_data(0,20,temp0|temp1);
		 tcp_init_sw(0x01);
		 }
	   break;
  default:
       	{
		 temp0=TCP_RST;                           //以外情形進行通信復位
		 temp1=TCP_ACK;
		 tcpserver_send_data(0,20,temp0|temp1);
		 tcp_init_sw(0x01);
		 }
 }
}

//**********************************
//*  TCP處理
//*  處理子程序,服務器模式
//*  狀態機轉換子程序
//**********************************
void tcp(void)
{
 unsigned char temp1;
 unsigned long temp2;
 unsigned int  temp3;
 unsigned char tcp_remote_flag;                         // 收到對方TCP數據Header標志字節 
 unsigned long tcp_remote_seq;                          // 收到對方TCP數據SEQUENCE NO.值
 unsigned long tcp_remote_ack;                          // 收到對方TCP數據ACK NO.值
 unsigned char tcp_remote_hsz;                          // 收到對方TCP數據HEADER SIZE值
 unsigned char tcp_remote_wsz;                          // 收到對方TCP數據WINDOWS SIZE值
 //***以下代碼用于讀取TCP報頭數據***
 //1.讀取當前TCP數據標志位
 tcp_remote_flag=read_62256(TCP_FLAG);                  // 讀取標志字節內容
 tcp_remote_flag=tcp_remote_flag&0b00111111;            // 屏蔽最高2位
 //2.讀取對方TCP數據SEQUENCE NO.值
  temp2=read_62256(TCP_SEQ_NO);
  temp2=temp2&0x000000FF;
  tcp_remote_seq=(temp2<<24);
  temp2=read_62256(TCP_SEQ_NO+1);
  temp2=temp2&0x000000FF;
  tcp_remote_seq= tcp_remote_seq+(temp2<<16);
  temp2=read_62256(TCP_SEQ_NO+2);
  temp2=temp2&0x000000FF;
  tcp_remote_seq= tcp_remote_seq+(temp2<<8);
  temp2=read_62256(TCP_SEQ_NO+3);
  temp2=temp2&0x000000FF;
  tcp_remote_seq=tcp_remote_seq+temp2;
 //3.讀取對方請求對方TCP數據ACK NO.值
  temp2=read_62256(TCP_ACK_NO);
  temp2=temp2&0x000000FF;
  tcp_remote_ack=((temp2&0x000000FF)<<24);
  temp2=read_62256(TCP_ACK_NO+1);
  temp2=temp2&0x000000FF;
  tcp_remote_ack=tcp_remote_ack+(temp2<<16);
  temp2=read_62256(TCP_ACK_NO+2);
  temp2=temp2&0x000000FF;
  tcp_remote_ack=tcp_remote_ack+(temp2<<8);
  temp2=read_62256(TCP_ACK_NO+3);
  temp2=temp2&0x000000FF;
  tcp_remote_ack=tcp_remote_ack+temp2;
 //4.讀取TCP HEADER SIZE
  tcp_remote_hsz=read_62256(TCP_HDR_SZ)&0xF0;            //0XAX
  tcp_remote_hsz=(tcp_remote_hsz>>2);                    //讀到的值X4=tcp header sized
 //5.讀取Ip Data Length,Ip Header Size計算Tcp Data Size
 tcp_remote_dsz=read_62256(IP_TOL_LEN);                 //讀取總數據長度
 tcp_remote_dsz=(tcp_remote_dsz<<8)+read_62256( IP_TOL_LEN+1);
 temp1=read_62256(IP_VER_LEN)&0X0F;                      //讀取總IP頭數據長度
 temp1=(temp1<<2);                                       //讀到的值X4=ip header sized
 tcp_remote_dsz=tcp_remote_dsz-temp1;
 tcp_remote_dsz=tcp_remote_dsz-tcp_remote_hsz;          //計算TCP數據長度
 //6.計算數據區的開始地址 
 tcp_remote_dpt=(tcp_remote_hsz-20)+TCP_DSTART;
 
 //>>***以下代碼對TCP頭數據參數進行識別,存儲,判斷***
 //1.如果數據包存在可選項,判斷是否為MSS數據,如是紀錄下該值
 if( (tcp_remote_flag==TCP_SYN)&&(tcp_remote_hsz!=20) )
 {
  temp1=read_62256(TCP_OPTION);                     // 讀取OPTION類型位
  if(temp1==2)                                      // 讀取MSS數值,并保存
 { 
    TCP_MAX_SEND=read_62256(TCP_OPTION+2);
 	TCP_MAX_SEND=(TCP_MAX_SEND<<8)+read_62256(TCP_OPTION+3);
 }
 }
 //2.SEQ NO.與ACK NO.處理
  if( (tcp_remote_dsz==0)&&(tcp_remote_flag==TCP_SYN)) 
  {
     TCP_MY_SEQ=TCP_MY_SEQ;                          // 處于建立過程的第一次數據回復
     TCP_MY_ACK=tcp_remote_seq+1;                    // ACK序號值加1
  }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人深夜在线观看| 天天综合色天天综合色h| 成人教育av在线| 国产精品视频免费看| 懂色av中文一区二区三区| 日本一区二区三区视频视频| 成人激情文学综合网| 国产精品的网站| 欧美三级日韩三级国产三级| 美女免费视频一区二区| 日本一区二区免费在线| 色综合久久久久久久久| 午夜日韩在线观看| 久久亚洲春色中文字幕久久久| 国产精品白丝jk白祙喷水网站 | 午夜国产精品影院在线观看| 欧美一区二区福利在线| 风间由美一区二区三区在线观看 | 国产老妇另类xxxxx| 中文字幕一区二区三区不卡 | 国产精品丝袜一区| 日本韩国视频一区二区| 免费看日韩a级影片| 日本一区二区久久| 欧美日韩在线三级| 国产成人av福利| 一区二区三区在线视频观看| 精品国产网站在线观看| 99精品视频一区| 日本女人一区二区三区| 国产精品麻豆视频| 91精品国产一区二区三区| 成熟亚洲日本毛茸茸凸凹| 亚洲va欧美va天堂v国产综合| 国产亚洲精品aa午夜观看| 欧美三级日韩在线| 成人av小说网| 狠狠色丁香婷婷综合| 亚洲国产日韩一区二区| 欧美国产激情二区三区| 日韩亚洲欧美一区| 在线视频亚洲一区| 9l国产精品久久久久麻豆| 美女视频免费一区| 亚洲国产精品久久久久秋霞影院| 国产三级三级三级精品8ⅰ区| 欧美视频一区二区在线观看| 成人高清免费观看| 国模大尺度一区二区三区| 午夜成人在线视频| 亚洲欧美偷拍卡通变态| 国产欧美精品一区二区色综合 | 欧美性生活一区| 不卡视频一二三| 国产精品一区2区| 蜜臀av一区二区在线观看| 亚洲午夜电影在线观看| 亚洲欧美日韩久久| 中文字幕 久热精品 视频在线 | 亚洲午夜三级在线| 亚洲欧洲性图库| 国产精品亲子乱子伦xxxx裸| 26uuu另类欧美| 欧美成人video| 欧美一级高清片| 日韩欧美一卡二卡| 91精品国产综合久久福利软件| 欧美日韩在线电影| 欧美剧在线免费观看网站| 91福利精品第一导航| 色综合天天综合网天天看片| 成人开心网精品视频| 福利电影一区二区三区| 国产成人鲁色资源国产91色综| 久久99深爱久久99精品| 免费观看91视频大全| 老司机免费视频一区二区| 日本中文字幕不卡| 免费av网站大全久久| 另类调教123区| 国产精品538一区二区在线| 国产精品一二二区| 成人一级片网址| www.亚洲人| 在线观看91视频| 欧美日韩成人综合在线一区二区| 欧美日韩国产综合一区二区| 欧美另类高清zo欧美| 日韩一区二区三区观看| 精品久久久久久最新网址| 亚洲国产精品成人综合色在线婷婷 | 亚洲情趣在线观看| 亚洲va国产天堂va久久en| 日韩av一级片| 国产精品一二三四| 99精品欧美一区二区蜜桃免费 | 国产麻豆精品一区二区| 国产福利精品一区| 99精品视频在线播放观看| 色拍拍在线精品视频8848| 欧美日韩aaaaa| 国产欧美一区二区精品仙草咪| 亚洲欧美日韩国产综合| 亚洲v日本v欧美v久久精品| 精品午夜久久福利影院| 成人午夜电影网站| 欧美三级日本三级少妇99| 久久夜色精品一区| 亚洲欧美在线高清| 奇米精品一区二区三区四区| 国产91富婆露脸刺激对白| 91福利精品第一导航| 精品国产一区二区三区久久影院 | 成人黄色一级视频| 欧美婷婷六月丁香综合色| 久久综合九色欧美综合狠狠 | 色老汉av一区二区三区| 91精品国产入口在线| 国产色91在线| 日韩高清不卡一区二区| 成人激情校园春色| 日韩精品自拍偷拍| 椎名由奈av一区二区三区| 麻豆成人久久精品二区三区小说| 97超碰欧美中文字幕| 久久亚洲精品国产精品紫薇| 亚洲国产美女搞黄色| 国产精品综合久久| 欧美精品九九99久久| 中文字幕在线一区| 国产一区二区三区高清播放| 在线精品国精品国产尤物884a| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 成人av在线影院| 日韩精品一区二区三区三区免费| 亚洲免费在线观看| 国产一区二区三区在线观看精品| 欧美丝袜丝交足nylons图片| 日本一区二区三区在线观看| 狠狠久久亚洲欧美| 91麻豆精品久久久久蜜臀| 1000部国产精品成人观看| 国产大陆a不卡| 欧美一级二级三级蜜桃| 亚洲一区在线观看免费| av一区二区三区| 国产三级欧美三级日产三级99| 免费精品视频最新在线| 7777精品伊人久久久大香线蕉最新版| 最新高清无码专区| 成人av在线电影| 中文字幕一区二区三区不卡| 丁香婷婷深情五月亚洲| 国产亚洲综合性久久久影院| 免费的国产精品| 91麻豆精品久久久久蜜臀| 性久久久久久久久久久久| 在线视频你懂得一区二区三区| 亚洲欧美另类综合偷拍| 91在线你懂得| 欧美精品自拍偷拍| 色播五月激情综合网| 首页国产丝袜综合| 亚洲精品成人悠悠色影视| 亚洲国产精品视频| 中文字幕国产一区| 加勒比av一区二区| 日韩美女天天操| 国产裸体歌舞团一区二区| 国产日韩欧美精品在线| 国产一区二区日韩精品| xnxx国产精品| 国产传媒一区在线| 国产精品少妇自拍| 99精品久久只有精品| 尤物视频一区二区| 欧美亚洲一区三区| 亚洲第一会所有码转帖| 在线播放中文字幕一区| 麻豆传媒一区二区三区| 国产欧美在线观看一区| 99视频热这里只有精品免费| 亚洲男帅同性gay1069| 91久久精品一区二区三区| 亚洲国产精品久久人人爱| 4438x成人网最大色成网站| 久久狠狠亚洲综合| 久久精品一区二区三区四区| 成人污污视频在线观看| 亚洲电影中文字幕在线观看| 欧美一区午夜视频在线观看 | 三级欧美在线一区| 精品欧美一区二区三区精品久久| 欧美变态tickle挠乳网站| 欧美亚洲丝袜传媒另类| 亚洲愉拍自拍另类高清精品| 欧美色欧美亚洲另类二区| 奇米在线7777在线精品 | 色综合久久久久久久久| 午夜欧美大尺度福利影院在线看|