?? net_http.c
字號:
#include "stdio.h"
#include "alt_types.h"
void APP_HTTP(void) //http應用處理程序
{
UINT i,Len=Start_HTTP,Data_Len;
//UINT Open_Count_Len; //打開網頁次數用ASC碼表示時占用的字節數
//UINT Content_Len_Len; //實體長度用ASC碼表示時占用的字節數
//UINT Content_Len_DEC; //實體長度
//UINT Receive_PACK_HTTP_Len; //收到數據包中http的長度
//Receive_PACK_HTTP_Len=Receive_Buffer[14+2]*0x100+Receive_Buffer[14+2+1]-40;
Open_Count++;
Open_Count_ASC_Byte=Change_Dec_ASC(Open_Count,Open_Count_ASC); //打開次數用ASC碼表示時占用的字節數
Content_Len=Open_Count_ASC_Byte+sizeof(web_page1)+sizeof(web_page2); //實長度的整數表示
Content_Len_ASC_Byte=Change_Dec_ASC(Content_Len,Content_Len_ASC); //實體長度用ASC碼表示時占用的字節數
Data_Len=sizeof(html_header1)-1;
for (i=0;i<Data_Len;i++)
Send_Buffer[Len++]=html_header1[i]; //寫HTTP頭
for (i=0;i<Content_Len_ASC_Byte;i++)
Send_Buffer[Len++]=Content_Len_ASC[Content_Len_ASC_Byte-i-1]; //實體長度
Data_Len=sizeof(html_header2);
for (i=0;i<Data_Len;i++)
Send_Buffer[Len++]=html_header2[i];
//-----------------------------------------------------------------------------------
Data_Len=sizeof(web_page1)-1;
for (i=0;i<Data_Len;i++)
Send_Buffer[Len++]=web_page1[i];
for (i=0;i<Open_Count_ASC_Byte;i++)
Send_Buffer[Len++]=Open_Count_ASC[Open_Count_ASC_Byte-i-1];
Data_Len=sizeof(web_page2);
for (i=0;i<Data_Len;i++)
Send_Buffer[Len++]=web_page2[i]; //寫HTTP實體
//-----------------------------------------------------------------------------------
DATA_Len_HTTP=Len-Start_HTTP; //HTTP全部數據長度
DATA_Len_TCP=DATA_Len_HTTP+20; //TCP包數據總長度
IP_PACK_Len=DATA_Len_TCP+20; //IP包數據長度
TCP_ISN_A=TCP_ISN_O+Receive_PACK_HTTP_Len;
TCP_Symbol_Send=0x18; //TCP標志,ACK PSH
HEAD_TCP(); //TCP首部
HEAD_IP(); //IP首部
HEAD_Ethernet(); //以太網頭
NET_Send_Packet(Send_Buffer,Len); //發送數據包
//printf("發送HTTP數據包 Http數據長度為 %d \n",DATA_Len_HTTP);
TCP_ISN+=DATA_Len_HTTP;
/*DATA_Len_TCP=20;
IP_PACK_Len=DATA_Len_TCP+20;
TCP_Symbol_Send=0x11; //? 似乎可以改成0x01
HEAD_TCP();
HEAD_IP();
HEAD_Ethernet();
NET_Send_Packet(Send_Buffer,Start_HTTP);
TCP_ISN++;*/
//TCP_State=4; //理論上應該是4
}
void Send_HTTP_Response(void) //發送HTTP的請求響應包
{
UINT i,Len=Start_HTTP,Data_Len;
//UINT Open_Count_ASC_Byte; //打開次數用ASC碼表示時占用的字節數
//UINT Content_Len; //http內容長度
//UINT Content_Len_ASC_Byte; //內容長度用ASC碼表示時占用的字節數
//UINT Receive_PACK_HTTP_Len; //收到的HTTP包中,http數據長度
//Receive_PACK_HTTP_Len=Receive_Buffer[14+2]*0x100+Receive_Buffer[14+2+1]-40;
Open_Count++;
Open_Count_ASC_Byte=Change_Dec_ASC(Open_Count,Open_Count_ASC);
Content_Len=Open_Count_ASC_Byte+sizeof(web_page1)+sizeof(web_page2); //HTTP內容長度
Content_Len_ASC_Byte=Change_Dec_ASC(Content_Len,Content_Len_ASC);
Data_Len=sizeof(html_header1)-1;
for (i=0;i<Data_Len;i++)
Send_Buffer[Len++]=html_header1[i]; //寫HTTP頭
for (i=0;i<Content_Len_ASC_Byte;i++)
Send_Buffer[Len++]=Content_Len_ASC[Content_Len_ASC_Byte-i-1]; //實體長度
Data_Len=sizeof(html_header2);
for (i=0;i<Data_Len;i++)
Send_Buffer[Len++]=html_header2[i];
DATA_Len_HTTP=Len-Start_HTTP; //HTTP包長度
DATA_Len_TCP=DATA_Len_HTTP+20; //TCP數據包長度
IP_PACK_Len=DATA_Len_TCP+20;
TCP_ISN_A=TCP_ISN_O+Receive_PACK_HTTP_Len;
TCP_Symbol_Send=0x18; //ACK PSH
HEAD_TCP();
HEAD_IP();
HEAD_Ethernet();
NET_Send_Packet(Send_Buffer,Len); //發送數據包
TCP_ISN+=DATA_Len_HTTP;
}
void Send_HTTP_Content(void) //發送HTTP的內容數據包
{
UINT i,Len=Start_HTTP,Data_Len;
//UINT HTTP_Data_Len;
//UINT TCP_Data_Len;
Data_Len=sizeof(web_page1)-1;
for (i=0;i<Data_Len;i++)
Send_Buffer[Len++]=web_page1[i];
for (i=0;i<Open_Count_ASC_Byte;i++)
Send_Buffer[Len++]=Open_Count_ASC[Open_Count_ASC_Byte-i-1];
Data_Len=sizeof(web_page2);
for (i=0;i<Data_Len;i++)
Send_Buffer[Len++]=web_page2[i];
DATA_Len_HTTP=Len-Start_HTTP; //HTTP包長度
DATA_Len_TCP=DATA_Len_HTTP+20; //TCP數據包長度
IP_PACK_Len=DATA_Len_TCP+20;
TCP_ISN_A=TCP_ISN_O+Receive_PACK_HTTP_Len;
TCP_Symbol_Send=0x18; //ACK PSH
HEAD_TCP();
HEAD_IP();
HEAD_Ethernet();
NET_Send_Packet(Send_Buffer,Len); //發送數據包
TCP_ISN+=DATA_Len_HTTP;
}
UINT Change_Dec_ASC(UINT Data,UCHAR *ASC) //將數字轉換成ASC碼
{
UINT i,Len=0,Data_n=Data;
for(i=0;i<10;i++)
{
ASC[Len++]=((Data_n%10)+48)&0xff;
if((Data_n=Data_n/10)==0)
break;
}
return Len;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -