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

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

?? tcpip.h

?? 以凌陽單片機SPCE061A為核心的TCPIP協議實現(C原代碼)。
?? H
?? 第 1 頁 / 共 2 頁
字號:
// TCP標識 TcpHdr_Stru.HdrLen 代表TCP頭長度,以32bit(4 byte)為單位
#define cTCP_HDR_NOOPT		0x05	// TCP頭無操作選項
#define cTCP_HDR_OPT		0x07	// TCP頭有操作選項,操作選項長度4 word 或8 byte
// TCP標識 TcpHdr_Stru.Flags
#define cTCP_FIN			0x01
#define cTCP_SYN			0x02
#define cTCP_RST			0x04
#define cTCP_PSH			0x08
#define cTCP_ACK			0x10
#define cTCP_URG			0x20
	UINT16 WndSize;					// 窗口大小,表明接還能容納的TCP數據(最大0xFFFF)
#define cTCP_WS				1460	// 定義本地窗口,必須滿足條件:cTCP_MSS <= cTCP_MSS <= 0xFFFF
	UINT16 TcpChkSum;
	UINT16 UrgPoint;				// 緊急指針
//	UINT16 OptData[2];
// 最長TCP報文大小(頭選項之一):字節(最大1460)
#define cTCP_MSS     		1460	// 定義本地最大TCP報文長度
}TcpHdr_Stru;

// TCP 本地初始32位序號
extern volatile UINT16 guwISN[2];

// TCP頭的常數指針。
#define cpTcpHdrBuf		((UINT16 *)&guwEthBuf[cEthHdrLen + cIpHdrLen])			// 指向Word的buffer
#define cptTcpHdrBuf	((TcpHdr_Stru *)&guwEthBuf[cEthHdrLen + cIpHdrLen])		// 指向結構

// TCP數據段指針
#define cpTcpData	((UINT16 *)&guwEthBuf[cEthHdrLen + cIpHdrLen + cTcpHdrLen])	// 指向Word的buffer

//---------------------------------------------------------------------------------

// ARP表結構
typedef struct{
	UINT16 IpAddr[2];
	UINT16 EthAddr[3];
	UINT16 Time2;		// 刷新時刻,2Hz的計數
// ARP表記錄的最大老化清除時間:20分鐘(4.4BSD-Lite 默認)。
#define cArpMaxAge 20*60
}ArpEntries_Stru;

// 最大ARP表記錄數
#define cArpTabSize 	16

// 分配ARP鏈表的內存
extern ArpEntries_Stru gstArpTab[cArpTabSize];

// ARP表記錄的地址
#define cptArpTabStart		((ArpEntries_Stru *)&gstArpTab[0])				// 指向結構,開始地址指針
#define cptArpTabEnd		((ArpEntries_Stru *)&gstArpTab[cArpTabSize])	// 指向結構,結束地址指針

//---------------------------------------------------------------------------------

// TCP事務聯接狀態記錄結構
typedef struct{
	UINT16 TcpStateFlags;		// TCP狀態和標識
// TCP 事務狀態標識 Conn_Stru->TcpStateFlags
#define cTCP_CLOSED			0x00
#define cTCP_SYN_RCVD		0x01
#define cTCP_SYN_SENT		0x02
#define cTCP_ESTABLISHED	0x03
#define cTCP_FIN_WAIT_1		0x04
#define cTCP_FIN_WAIT_2		0x05
#define cTCP_CLOSING		0x06
#define cTCP_TIME_WAIT		0x07
#define cTCP_CLOSE_WAIT		0x08
#define cTCP_LAST_ACK		0x09
#define cTCP_TS_MASK		0x0f
#define cTCP_OUTSTANDING	0x10
#define cTCP_STOPPED		0x20
	UINT16 LocalPort;			// 本地端口
	UINT16 RemotePort;			// 遠端端口
	UINT16 RemoteIpAddr[2];		// 遠端IP
	UINT16 RcvNum[2];			// 下次接收包的遠端32位Seq序號
	UINT16 AckNum[2];			// 下次接收包的遠端32位Ack序號
  	UINT16 SeqNum[2];		    // 本地當前包32位Seq序號
	UINT16 MaxSegSize;          // 本連接事務使用的最長TCP報文大小,詳見TCP頭結構說明
	UINT16 Timer;				// 狀態需要等待的時間
	UINT16 NumRetran;			// 重傳次數
	UINT16 PollTime;			// 空閑時間計數
// 由于TCP事務輪詢時間為1秒,所以300秒空閑就異常終止當前連接。(WIN2K用900秒)
#define cTCP_MAX_POLL	300
}Conn_Stru;

// TCP最大聯接事務數。
#define cMaxConnetions		16

// 分配TCP最大聯接事務鏈表內存
extern Conn_Stru gstConns[cMaxConnetions];

// TCP最大聯接事務記錄表首地址
#define cptConnsStart		((Conn_Stru *)&gstConns[0])				// 指向結構
// TCP最大聯接事務記錄表結束地址
#define cptConnsEnd		((Conn_Stru *)&gstConns[cMaxConnetions])	// 指向結構

// 用于RTT估計器的重傳指數退避時間,公式: T = cTCP_RTO * 2^n (n表示第幾次重傳)
#define cTCP_RTO	3

// TCP超時關閉聯接的時間,即在TIME_WAIT狀態的聯接保持時間
#define cTCP_TIME_WAIT_2MSL		120		// 120 秒(因為TCP事務1秒輪詢1次)

// TCP最大重傳次數
#define cTCP_MAXRTX		3

// 本地TCP端口范圍
#define cLocalPortStart	4096	// 開始:0x1000
#define cLocalPortEnd	28672	// 結束:0x7000

// TCP最大偵聽端口數。除非作為Web服務器,否則通常為1
#define cMaxListenPorts		8	// 本應用允許偵聽端口

// 當前TCP事務聯接指針
extern Conn_Stru *gptConn;

// 分配TCP偵聽端口號鏈表內存
extern UINT16 guwListenPorts[cMaxListenPorts];

//---------------------------------------------------------------------------------

// 其它定義

// 正在處理包的字節長度(byte)。這個值隨處理正在處理的協議層的不同而改變!
extern volatile UINT16 guwEthLen;

// TCP/IP協議棧和應用程序間通訊的變量
extern volatile UINT16 guwFlags;
// 協議層通過guwFlags與應用層的聯系常數定義
#define cTCP_ACKDATA	0x01	// 上次發的數據已經被確認,通知應用程序可以發新的數據
#define cTCP_NEWDATA	0x02	// 遠端發給本地數據包,協議層需要ACK回應
#define cTCP_REXMIT		0x04	// 通知應用程序重發上次的數據包
#define cTCP_POLL		0x08	// 如果應用程序等待發數據,就給它一個標識POLL
#define cTCP_CLOSE		0x10	// 遠端已經關閉聯接,或應用程序要關閉聯接
#define cTCP_ABORT		0x20	// 遠端要放棄聯接,或應用程序要放棄聯接
#define cTCP_CONNECTED	0x40	// 聯接成功建立
#define cTCP_TIMEDOUT	0x80	// 超過重傳次數,放棄聯接

// cTCP_DATA:msip_Process()的入口參數,表示需要處理已經在guwEthBuf緩沖區的包。
// cTCP_TIMER:msip_Process()的入口參數,表示需要做周期性的TCP事務處理。
#define cTCP_DATA    1
#define cTCP_TIMER   2

//---------------------------------------------------------------------------------
// 以太收發功能

// ether_Send(): 發送以太包宏定義,兼容性定義
#define ether_Send()		RTL8019AS_TX(guwEthLen, cpEthHdrBuf)

// ether_Receive(): 接收以太包宏定義,兼容性定義
#define ether_Receive()		RTL8019AS_RX(cpEthHdrBuf)

//---------------------------------------------------------------------------------
// ARP 功能過程

// msip_Arp_Timer():ARP表老化掃描,每8秒執行1次(BSD default 10 seconds)
// 超過20分鐘(BSD default)未變化的,將被刪除!
extern void msip_Arp_Time(void);

// msip_Arp_Update():ARP表更新過程。
// uwIpAddr:IP地址
// uwEthAddr:物理地址
// 返回更新的ARP表的地址。如果地址在表外,說明更新失敗。
extern ArpEntries_Stru *msip_Arp_Update(UINT16 *uwIpAddr, UINT16 *uwEthAddr);

// msip_Arp_In():如果檢測到ARP包輸入就執行。
// 如果遠端ARP請求,過程發送ARP回應。
// 如果遠端ARP回應,過程更新ARP表。
extern void msip_Arp_In(void);

// msip_Arp_Out():將待發送的IP包封裝以太頭,并發送封裝好的以太包
// pARPTAB:指向ARP表中遠端IP和物理地址的影射表記錄地址
//       如果pARP是空指針,原IP包將被破壞,并且用ARP請求包替代發送。
extern void msip_Arp_Out(ArpEntries_Stru *pARPTAB);

//---------------------------------------------------------------------------------
// TCP/IP 功能:

// msip_TcpChkSum():TCP/IP校驗和過程。
extern UINT16 msip_TcpChkSum(void);

// msip_Process(): TCP/IP 全處理過程
// uwFlag:處理類型,見cTCP_DATA和cTCP_TIMER
// pConn:TCP事件指針
extern void msip_Process(UINT16 uwFlag);

// 系統接口類:

// msip_Init(): TCP/IP功能初始化,必須在其它TCP/IP處理前調用。包含ARP、被動偵聽端口和TCP事務連接
extern void msip_Init(void);

// msip_Periodic(): TCP/IP事務周期輪詢過程,1秒發生1次
extern void msip_Periodic(void);

// msip_Input(): 如果輸入的是IP包,接執行改過程。
#define msip_Input()	msip_Process(cTCP_DATA)

// msip_APPCALL(): 供用戶寫TCP應用代碼的函數名。
#define userapp		msip_APPCALL	// 指向RS232應用

// 應用程序接口類:(應用層控制協議層狀態變遷)

// msip_Listen(): TCP/IP被動偵聽本地端口是否被占用!用于服務端
// uwPort:本地TCP端口
// 返回0:表示端口被用
// 返回1:表示建立成功
extern UINT16 msip_Listen(UINT16 uwPort);

// msip_Connect(): TCP/IP建立主動聯接遠端,用于客戶端
// uwLocalPort:本地TCP端口
// puwRemoteIpAddr:遠端IP地址
// uwRemotePort:遠端TCP端口
// 返回0:表示建立失敗
// 返回1:表示建立成功
#if  TCP_ACTIVE_OPEN == 1
extern UINT16 msip_Connect(UINT16 uwLocalPort, UINT16 *puwRemoteIpAddr, UINT16 uwRemotePort);
#endif

// msip_Send():發送數據到當前的連接,保留的uIP定義,我們不用
#define msip_Send()

// msip_DataLen():當前TCP數據段的長度(Bytes),保留的uIP定義,我們不用
#define msip_DataLen()		guwEthLen

// msip_Close(): 主動關閉當前連接,應用層通知協議層正常關閉當前連接(FIN)
#define msip_Close()	(guwFlags = cTCP_CLOSE)

// msip_Abort():異常關閉當前連接,應用層通知協議層復位當前連接(RST)
#define msip_Abort()	(guwFlags = cTCP_ABORT)

// msip_Stop(): 停止接收含TCP數據段的包,應用層通知協議層將窗口尺寸設置為0,期待遠端暫停發送帶數據的TCP包!
#define msip_Stop()		(gptConn->TcpStateFlags |= cTCP_STOPPED)

// msip_Restart(): 重新開始當前的連接,應用層通知協議層重新開放窗口尺寸,以便允許遠端發送帶數據的TCP包!
#define msip_Restart()	{guwFlags |= cTCP_NEWDATA; 	gptConn->TcpStateFlags &= ~cTCP_STOPPED;}

// 測試判斷接口類:(應用層查詢協議層狀態)

// msip_connected():
// 服務或服務都有效,表明當前連接建立成功!狀態只會出現一次!
// 在客戶模式可以傳TCP數據;服務模式最好不發送數據!
#define msip_Connected()	(guwFlags & cTCP_CONNECTED)

// msip_Poll():
// 不論是服務或客戶,都表明協議層處于連接空閑狀態!標識由TCP事件輪詢傳回,在這個狀態下可設置
// 空閑計數器記錄空閑次數,達到一定時間就異常終止連接!如果這樣做,就不能在這個狀態發送數據!
// 允許發送數據的條件是:((guwEthLen > 0) || (guwFlags & cTCP_NEWDATA))
#define msip_Poll()		(guwFlags & cTCP_POLL)

// msip_NewData():處于ESTABLELISH狀態
//(guwEthLen > 0)協議層收到遠端發出TCP數據包,并期待應用層處理:在這個狀態下,允許只
// 發送無TCP數據的ACK確認(設置:guwEthLen = 0),或者發送帶TCP數據的ACK確認(把要發送的
// TCP數據長度設置給guwEthLen)。
#define msip_NewData()	(guwFlags & cTCP_NEWDATA)

// msip_Acked():處于ESTABLELISH狀態
//(guwEthLen = 0)協議層收到遠端發出ACK確認包。在這個狀態下,允許發送帶TCP數據的ACK
// 確認(把要發送的TCP數據長度設置給guwEthLen),或者不響應。
#define msip_Acked()		(guwFlags & cTCP_ACKDATA)

// mip_Reset_Acked(): 清除確認后的標志,好象沒有用?!(也許用于重傳)
#define mip_Reset_Acked()	(guwFlags &= ~cTCP_ACKDATA)

// msip_Rexmit(): 應用層上次的以發數據需要重傳,標識由TCP事件輪詢傳回!應用層不允許更改guwEthLen的值!!!
#define msip_Rexmit()	(guwFlags & cTCP_REXMIT)

// msip_Stopped(): 當前連接已經停止接收含TCP數據段的包,連接是正常的。
#define msip_Stopped()	(gptConn->TcpStateFlags & cTCP_STOPPED)

// msip_Aborted(): 當前連接已經異常關閉,協議層發送RST復位包。
#define msip_Aborted()	(guwFlags & cTCP_ABORT)

// msip_Closed(): 當前連接已經正常關閉,應用層發送FIN包
#define msip_Closed()	(guwFlags & cTCP_CLOSE)

// msip_TimedOut(): 當前連接時間溢出,并且連接因時間溢出異常關閉,協議層發送RST復位包。
#define msip_TimedOut()	(guwFlags & cTCP_TIMEDOUT)

// 附加接口類:-------------------------------------------------------------------

// msip_MSS(): 讀 TCP/IP 的MSS,以決定將要發送的數據長度遠端是否能接受。
#define msip_MSS()		(gptConn->MaxSegSize)

//--------------------------------------------------------------------------------------


#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产老妇另类xxxxx| 亚洲天堂精品视频| 国产欧美1区2区3区| 国产精品盗摄一区二区三区| 亚洲一区二区在线免费观看视频| 老司机精品视频线观看86| 国产成人综合在线观看| 91高清在线观看| 日韩视频永久免费| 亚洲天堂精品视频| 日韩av电影免费观看高清完整版 | 亚洲丝袜精品丝袜在线| 亚洲一二三四区| 狠狠色丁香久久婷婷综| 波多野结衣亚洲| 3d动漫精品啪啪1区2区免费| 国产亚洲欧洲997久久综合| 一卡二卡三卡日韩欧美| 久久精品免费观看| 色av一区二区| 国产三级精品在线| 五月天欧美精品| av亚洲精华国产精华精华 | 天天综合天天做天天综合| 国产传媒一区在线| 欧美精品tushy高清| 中文字幕一区二区三区不卡在线| 日av在线不卡| 在线视频中文字幕一区二区| 久久久亚洲精品石原莉奈| 亚洲国产cao| 波多野结衣中文字幕一区| 欧美电视剧在线观看完整版| 亚洲美女视频一区| 国产馆精品极品| 日韩精品一区二区三区视频在线观看 | 亚洲精品videosex极品| 狠狠色丁香久久婷婷综合_中| 欧美午夜一区二区三区| 国产精品婷婷午夜在线观看| 久久er精品视频| 欧美喷水一区二区| 亚洲色图都市小说| 国产成人免费在线观看| 日韩精品在线看片z| 午夜av一区二区| 色婷婷av一区二区三区gif| 国产日韩av一区| 黄网站免费久久| 在线播放国产精品二区一二区四区| 亚洲丝袜美腿综合| 成人蜜臀av电影| 欧美激情综合网| 极品尤物av久久免费看| 欧美一三区三区四区免费在线看| 亚洲午夜久久久久久久久电影网| 99久久精品99国产精品| 国产精品网站导航| 成人黄色777网| 国产日韩高清在线| 粉嫩绯色av一区二区在线观看| 精品免费日韩av| 久久精工是国产品牌吗| 欧美精品粉嫩高潮一区二区| 丝袜诱惑制服诱惑色一区在线观看| 欧美性大战久久久久久久| 一区二区三区中文字幕在线观看| 99re热这里只有精品视频| 国产精品久久久久婷婷二区次| 国产91对白在线观看九色| 国产亚洲精品福利| 国产成人亚洲精品青草天美| 国产日产欧美一区| 粉嫩嫩av羞羞动漫久久久| 国产精品视频看| av电影天堂一区二区在线观看| 成人免费视频在线观看| 在线中文字幕一区| 亚洲第一主播视频| 欧美男同性恋视频网站| 日日夜夜免费精品视频| 日韩欧美你懂的| 国内偷窥港台综合视频在线播放| 国产无遮挡一区二区三区毛片日本| 国产成人精品亚洲午夜麻豆| 中文欧美字幕免费| 色综合天天综合在线视频| 亚洲精品国产一区二区精华液| 色乱码一区二区三区88| 久久亚洲精精品中文字幕早川悠里| 狠狠色综合播放一区二区| 久久亚洲精精品中文字幕早川悠里| 国产乱码精品1区2区3区| 中文字幕欧美三区| 91视频免费看| 午夜婷婷国产麻豆精品| 欧美不卡123| 懂色av一区二区三区蜜臀| 亚洲精品乱码久久久久久黑人 | 亚洲欧美激情一区二区| 欧美日韩极品在线观看一区| 日韩影院精彩在线| 久久久久久99精品| 91福利视频在线| 免费观看久久久4p| 国产日产亚洲精品系列| 色综合天天视频在线观看| 日韩制服丝袜先锋影音| 国产日韩欧美麻豆| 欧美丝袜自拍制服另类| 久久99久久久欧美国产| 中文字幕一区日韩精品欧美| 51精品久久久久久久蜜臀| 国产69精品一区二区亚洲孕妇| 亚洲综合一区二区三区| 欧美mv日韩mv亚洲| 91在线视频观看| 日韩中文字幕一区二区三区| 国产亚洲综合在线| 欧美婷婷六月丁香综合色| 激情小说亚洲一区| 亚洲自拍与偷拍| 久久久久久久电影| 欧美日韩在线播放一区| 国产精品888| 亚洲成人免费av| 国产欧美一区二区精品久导航| 欧美视频一区二区| 国产成人午夜精品5599| 婷婷综合五月天| 国产精品进线69影院| 日韩视频一区二区在线观看| 91亚洲精品乱码久久久久久蜜桃| 美女www一区二区| 一区二区日韩电影| 中文字幕不卡在线播放| 欧美精品99久久久**| 99re热这里只有精品免费视频| 久久疯狂做爰流白浆xx| 亚洲综合免费观看高清完整版在线| 久久久蜜桃精品| 538在线一区二区精品国产| 成人国产精品视频| 久久99久久精品| 性久久久久久久久| 亚洲欧美一区二区三区国产精品| 精品国产免费人成电影在线观看四季| 欧美亚洲国产一区二区三区va| 国产91精品久久久久久久网曝门| 免费成人在线网站| 亚洲午夜久久久久久久久久久| 中文字幕不卡在线观看| 欧美tk丨vk视频| 91精品欧美久久久久久动漫| 一本色道久久综合亚洲精品按摩| 国产一区二区视频在线播放| 欧美a一区二区| 亚洲18影院在线观看| 亚洲欧洲综合另类在线| 中文字幕在线视频一区| 国产三级欧美三级日产三级99| 欧美va在线播放| 欧美大肚乱孕交hd孕妇| 欧美疯狂性受xxxxx喷水图片| 91首页免费视频| 成人午夜电影小说| 国产精品中文欧美| 经典三级一区二区| 精久久久久久久久久久| 麻豆精品一二三| 日韩av电影免费观看高清完整版| 亚洲一区二区高清| 亚洲精品水蜜桃| 亚洲免费观看高清完整| 《视频一区视频二区| 欧美国产成人精品| 欧美激情艳妇裸体舞| 日本一区二区三区四区在线视频| 久久久亚洲高清| 亚洲国产精品二十页| 亚洲国产精品av| 1024成人网色www| 亚洲女与黑人做爰| 亚洲一区二区视频| 亚洲国产毛片aaaaa无费看| 亚洲第一综合色| 日av在线不卡| 国产一区二区三区免费在线观看| 国产一区二区三区精品欧美日韩一区二区三区| 久久精品99久久久| 国产一区二区不卡在线| 国产福利视频一区二区三区| 国产成人av一区二区| 97国产精品videossex| 日本韩国欧美一区| 欧美日韩一区二区三区高清| 日韩三级伦理片妻子的秘密按摩| 日韩精品一区二区三区中文不卡 | 久久99精品一区二区三区| 国产精品影视天天线|