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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? http.c

?? pic18f66j60單片機(jī)tcp/ip協(xié)議中的http協(xié)議程序
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/*********************************************************************
 *
 *               HTTP Implementation for Microchip TCP/IP Stack
 *
 **********************************************************************
 * FileName:        Http.c
 * Dependencies:    string.h
 *                  Stacktsk.h
 *                  Http.h
 *                  MPFS.h
 *                  TCP.h
 * Processor:       PIC18, PIC24F, PIC24H, dsPIC30F, dsPIC33F
 * Complier:        Microchip C18 v3.02 or higher
 *					Microchip C30 v2.01 or higher
 * Company:         Microchip Technology, Inc.
 *
 * Software License Agreement
 *
 * This software is owned by Microchip Technology Inc. ("Microchip") 
 * and is supplied to you for use exclusively as described in the 
 * associated software agreement.  This software is protected by 
 * software and other intellectual property laws.  Any use in 
 * violation of the software license may subject the user to criminal 
 * sanctions as well as civil liability.  Copyright 2006 Microchip
 * Technology Inc.  All rights reserved.
 *
 * This software is provided "AS IS."  MICROCHIP DISCLAIMS ALL 
 * WARRANTIES, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, NOT LIMITED 
 * TO MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND 
 * INFRINGEMENT.  Microchip shall in no event be liable for special, 
 * incidental, or consequential damages.
 *
 *
 * Author               Date        Comment
 *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * Nilesh Rajbharti     8/14/01     Original
 * Nilesh Rajbharti     9/12/01     Released (Rev. 1.0)
 * Nilesh Rajbharti     2/9/02      Cleanup
 * Nilesh Rajbharti     5/22/02     Rev 2.0 (See version.log for detail)
 * Nilesh Rajbharti     7/9/02      Rev 2.1 (Fixed HTTPParse bug)
 * Howard Schlunder		2/9/05		Fixed variable substitution 
 *									parsing (uses hex now)
 ********************************************************************/
#define THIS_IS_HTTP_SERVER

#include <string.h>

#include "..\Include\StackTsk.h"
#include "..\Include\HTTP.h"
#include "..\Include\MPFS.h"
#include "..\Include\TCP.h"
#include "..\Include\Helpers.h"


#if defined(STACK_USE_HTTP_SERVER)



#if (MAC_TX_BUFFER_SIZE <= 130 || MAC_TX_BUFFER_SIZE > 1500 )
#error HTTP : Invalid MAC_TX_BUFFER_SIZE value specified.
#endif

// Each dynamic variable within a CGI file should be preceeded with this character.
#define HTTP_VAR_ESC_CHAR       '%'
#define HTTP_DYNAMIC_FILE_TYPE  (HTTP_CGI)

// HTTP File Types
#define HTTP_TXT        (0u)
#define HTTP_HTML       (1u)
#define HTTP_CGI        (2u)
#define HTTP_XML        (3u)
#define HTTP_GIF        (4u)
#define HTTP_PNG        (5u)
#define HTTP_JPG        (6u)
#define HTTP_JAVA       (7u)
#define HTTP_WAV        (8u)
#define HTTP_UNKNOWN    (9u)


#define FILE_EXT_LEN    (3u)
typedef struct _FILE_TYPES
{
    char fileExt[FILE_EXT_LEN+1];
} FILE_TYPES;

// Each entry in this structure must be in UPPER case.
// Order of these entries must match with those defined by "HTTP File Types" defines.
static ROM FILE_TYPES httpFiles[] =
{
    { "TXT" },          // HTTP_TXT
    { "HTM" },          // HTTP_HTML
    { "CGI" },          // HTTP_CGI
    { "XML" },          // HTTP_XML
    { "GIF" },          // HTTP_GIF
    { "PNG" },          // HTTP_PNG
    { "JPG" },          // HTTP_JPG
    { "CLA" },          // HTTP_JAVA
    { "WAV" },          // HTTP_WAV
	{ ""    }			// HTTP_UNKNOWN
};
#define TOTAL_FILE_TYPES        ( sizeof(httpFiles)/sizeof(httpFiles[0]) )


typedef struct _HTTP_CONTENT
{
    ROM char typeString[20];
} HTTP_CONTENT;

// Content entry order must match with those "HTTP File Types" define's.
static ROM HTTP_CONTENT httpContents[] =
{
    { "text/plain" },            // HTTP_TXT
    { "text/html" },             // HTTP_HTML
    { "text/html" },             // HTTP_CGI
    { "text/xml" },              // HTTP_XML
    { "image/gif" },             // HTTP_GIF
    { "image/png" },             // HTTP_PNG
    { "image/jpeg" },            // HTTP_JPG
    { "application/java-vm" },   // HTTP_JAVA
    { "audio/x-wave" },          // HTTP_WAV
	{ "" }						 // HTTP_UNKNOWN
};
#define TOTAL_HTTP_CONTENTS     ( sizeof(httpContents)/sizeof(httpConetents[0]) )

// HTTP FSM states for each connection.
typedef enum _SM_HTTP
{
    SM_HTTP_IDLE = 0,
    SM_HTTP_GET,
    SM_HTTP_NOT_FOUND,
    SM_HTTP_GET_READ,
    SM_HTTP_GET_PASS,
    SM_HTTP_GET_DLE,
    SM_HTTP_GET_HANDLE,
    SM_HTTP_GET_HANDLE_NEXT,
    SM_HTTP_GET_VAR,
    SM_HTTP_DISCONNECT,
    SM_HTTP_DISCONNECT_WAIT,
    SM_HTTP_HEADER,
    SM_HTTP_DISCARD
} SM_HTTP;

// Supported HTTP Commands
typedef enum _HTTP_COMMAND
{
    HTTP_GET,
    HTTP_POST,
    HTTP_NOT_SUPPORTED,
    HTTP_INVALID_COMMAND
} HTTP_COMMAND;

// HTTP Connection Info - one for each connection.
typedef struct _HTTP_INFO
{
    TCP_SOCKET socket;
    MPFS file;
    SM_HTTP smHTTP;
    BYTE smHTTPGet;
    WORD VarRef;
    BYTE bProcess;
    BYTE Variable;
    BYTE fileType;
} HTTP_INFO;
typedef BYTE HTTP_HANDLE;


typedef enum
{
    HTTP_NOT_FOUND,
    HTTP_NOT_AVAILABLE
} HTTP_MESSAGES;

// Following message order must match with that of HTTP_MESSAGES enum.
static ROM char *HTTPMessages[] =
{
	    "HTTP/1.0 404 Not found\r\n\r\nNot found.\r\n",
	    "HTTP/1.0 503 \r\n\r\nService Unavailable\r\n"
};

// Standard HTTP messages.
ROM BYTE HTTP_OK_STRING[] = "HTTP/1.0 200 OK\r\nContent-type: ";
ROM BYTE HTTP_OK_NO_CACHE_STRING[] = "HTTP/1.0 200 OK\r\nDate: Wed, 05 Apr 2006 02:53:05 GMT\r\nExpires: Wed, 05 Apr 2006 02:52:05 GMT\r\nCache-control: private\r\nContent-type: ";
#define HTTP_OK_STRING_LEN 	(sizeof(HTTP_OK_STRING)-1)
#define HTTP_OK_NO_CACHE_STRING_LEN 	(sizeof(HTTP_OK_NO_CACHE_STRING)-1)

ROM BYTE HTTP_HEADER_END_STRING[]               =           \
                        "\r\n\r\n";
#define HTTP_HEADER_END_STRING_LEN                          \
                        (sizeof(HTTP_HEADER_END_STRING)-1)

// HTTP Command Strings
ROM BYTE HTTP_GET_STRING[]                      =           \
                        "GET";
#define HTTP_GET_STRING_LEN                                 \
                        (sizeof(HTTP_GET_STRING)-1)

// Default HTML file.
ROM BYTE HTTP_DEFAULT_FILE_STRING[]             =           \
                        "INDEX.HTM";
#define HTTP_DEFAULT_FILE_STRING_LEN                        \
                        (sizeof(HTTP_DEFAULT_FILE_STRING)-1)


// Maximum nuber of arguments supported by this HTTP Server.
#define MAX_HTTP_ARGS       (11)

// Maximum HTML Command String length.
#define MAX_HTML_CMD_LEN    (100)


static HTTP_INFO HCB[MAX_HTTP_CONNECTIONS];


static void HTTPProcess(HTTP_HANDLE h);
static HTTP_COMMAND HTTPParse(BYTE *string,
                              BYTE** arg,
                              BYTE* argc,
                              BYTE* type);
static BOOL SendFile(HTTP_INFO* ph);




/*********************************************************************
 * Function:        void HTTPInit(void)
 *
 * PreCondition:    TCP must already be initialized.
 *
 * Input:           None
 *
 * Output:          HTTP FSM and connections are initialized
 *
 * Side Effects:    None
 *
 * Overview:        Set all HTTP connections to Listening state.
 *                  Initialize FSM for each connection.
 *
 * Note:            This function is called only one during lifetime
 *                  of the application.
 ********************************************************************/
void HTTPInit(void)
{
    BYTE i;

    for ( i = 0; i <  MAX_HTTP_CONNECTIONS; i++ )
    {
        HCB[i].socket = TCPListen(HTTP_PORT);
        HCB[i].smHTTP = SM_HTTP_IDLE;
    }
}



/*********************************************************************
 * Function:        void HTTPServer(void)
 *
 * PreCondition:    HTTPInit() must already be called.
 *
 * Input:           None
 *
 * Output:          Opened HTTP connections are served.
 *
 * Side Effects:    None
 *
 * Overview:        Browse through each connections and let it
 *                  handle its connection.
 *                  If a connection is not finished, do not process
 *                  next connections.  This must be done, all
 *                  connections use some static variables that are
 *                  common.
 *
 * Note:            This function acts as a task (similar to one in
 *                  RTOS).  This function performs its task in
 *                  co-operative manner.  Main application must call
 *                  this function repeatdly to ensure all open
 *                  or new connections are served on time.
 ********************************************************************/
void HTTPServer(void)
{
    BYTE conn;

    for ( conn = 0;  conn < MAX_HTTP_CONNECTIONS; conn++ )
        HTTPProcess(conn);
}


/*********************************************************************
 * Function:        static BOOL HTTPProcess(HTTP_HANDLE h)
 *
 * PreCondition:    HTTPInit() called.
 *
 * Input:           h   -   Index to the handle which needs to be
 *                          processed.
 *
 * Output:          Connection referred by 'h' is served.
 *
 * Side Effects:    None
 *
 * Overview:
 *
 * Note:            None.
 ********************************************************************/
static void HTTPProcess(HTTP_HANDLE h)
{
    BYTE httpData[MAX_HTML_CMD_LEN+1];
    HTTP_COMMAND httpCommand;
    WORD httpLength;
    BOOL lbContinue;
    BYTE *arg[MAX_HTTP_ARGS];
    BYTE argc;
    BYTE i;
    HTTP_INFO* ph;
    ROM char* romString;

    ph = &HCB[h];

    do
    {
        lbContinue = FALSE;

        // If during handling of HTTP socket, it gets disconnected,
        // forget about previous processing and return to idle state.
        if(!TCPIsConnected(ph->socket))
        {
            ph->smHTTP = SM_HTTP_IDLE;
            break;
        }


        switch(ph->smHTTP)
        {
        case SM_HTTP_IDLE:
            if(TCPIsGetReady(ph->socket))
            {
                lbContinue = TRUE;

                httpLength = 0;
                while(httpLength < MAX_HTML_CMD_LEN &&
                      TCPGet(ph->socket, &httpData[httpLength++]) );
                httpData[httpLength] = '\0';
                TCPDiscard(ph->socket);

                ph->smHTTP = SM_HTTP_NOT_FOUND;
                argc = MAX_HTTP_ARGS;
                httpCommand = HTTPParse(httpData, arg, &argc, &ph->fileType);
                if ( httpCommand == HTTP_GET )
                {
                    // If there are any arguments, this must be a remote command.
                    // Execute it and then send the file.
                    // The file name may be modified by command handler.
                    if ( argc > 1u )
                    {
                        // Let main application handle this remote command.
                        HTTPExecCmd(&arg[0], argc);

                        // Command handler must have modified arg[0] which now
                        // points to actual file that will be sent as a result of
                        // this remote command.

                        // Assume that Web author will only use CGI or HTML
                        // file for remote command.
                        ph->fileType = HTTP_CGI;
                    }

                    ph->file = MPFSOpen(arg[0]);
                    if ( ph->file == MPFS_INVALID )
                    {
                        ph->Variable = HTTP_NOT_FOUND;
                        ph->smHTTP = SM_HTTP_NOT_FOUND;
                    }
                    else if ( ph->file == MPFS_NOT_AVAILABLE )

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色国产综合视频| 韩日av一区二区| 欧美一区二区黄| 国产麻豆9l精品三级站| 一区二区三区四区五区视频在线观看| 欧美久久久久中文字幕| 成人高清av在线| 三级在线观看一区二区| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 精品成人在线观看| eeuss影院一区二区三区| 天天影视网天天综合色在线播放| 国产视频一区在线观看| 69堂成人精品免费视频| 色综合天天天天做夜夜夜夜做| 图片区小说区区亚洲影院| 性欧美疯狂xxxxbbbb| 亚洲日本韩国一区| 中文字幕成人在线观看| 日韩精品一区二区三区在线| 9191成人精品久久| 欧美大度的电影原声| 久久午夜色播影院免费高清| 欧美一区中文字幕| 精品国产网站在线观看| 国产亚洲欧美在线| 亚洲人成电影网站色mp4| 中文字幕欧美日本乱码一线二线 | 亚洲成人免费视频| 日本vs亚洲vs韩国一区三区二区| 亚洲精品少妇30p| 国产精品日日摸夜夜摸av| 精品日韩成人av| 欧美一级生活片| 精品精品欲导航| 国产精品久久免费看| 一区二区三区四区中文字幕| 天堂久久久久va久久久久| 狠狠色丁香久久婷婷综合丁香| 成人免费视频caoporn| 国产福利一区二区三区视频在线| 国内外成人在线视频| 成人高清免费观看| 777色狠狠一区二区三区| 久久久久久久综合日本| 久久久精品蜜桃| 亚洲一区在线电影| 日韩不卡一区二区三区| 美女任你摸久久| 麻豆精品视频在线| www.日韩在线| 日韩午夜av电影| 欧美成人三级在线| 亚洲图片激情小说| 极品瑜伽女神91| 国产精品一区二区视频| 国产99精品视频| 91视频免费播放| 欧美日韩日日夜夜| 欧美高清视频一二三区 | 亚洲va韩国va欧美va| 精品一区二区久久久| 色综合久久99| 精品对白一区国产伦| 亚洲影视在线播放| 北条麻妃国产九九精品视频| 在线成人免费观看| 亚洲免费在线观看视频| 麻豆91在线播放| 欧美亚洲高清一区二区三区不卡| 欧美日韩免费不卡视频一区二区三区| 欧美性高清videossexo| 久久久精品天堂| 高清久久久久久| 日韩欧美国产综合| 日韩国产欧美在线观看| 色久综合一二码| 亚洲国产精品av| 精品中文字幕一区二区| 欧美三级电影在线看| 综合色中文字幕| 国产精品白丝jk黑袜喷水| 91精品国产色综合久久ai换脸| 亚洲伦在线观看| 不卡一二三区首页| 久久久久久99久久久精品网站| 日本欧美加勒比视频| 欧美色中文字幕| 亚洲欧美日韩一区二区| 91丨国产丨九色丨pron| 国产三级一区二区三区| 国产专区综合网| 日韩精品一区二区三区中文不卡| 日韩一区欧美二区| 欧美日本在线视频| 视频一区二区三区入口| 精品1区2区3区| 亚洲国产三级在线| 国内成+人亚洲+欧美+综合在线| 欧美日本一区二区| 亚洲无线码一区二区三区| 在线观看欧美精品| 国产精品国产三级国产普通话99 | 成人高清免费观看| 国产欧美日韩在线视频| 午夜视频在线观看一区| 欧美三区在线视频| 亚洲成人午夜电影| 56国语精品自产拍在线观看| 视频一区欧美日韩| 欧美老肥妇做.爰bbww| 亚洲第一在线综合网站| 欧美群妇大交群中文字幕| 日韩和的一区二区| 日韩精品一区在线| 黑人巨大精品欧美一区| 中文字幕电影一区| 99re在线视频这里只有精品| 久久九九99视频| a在线播放不卡| 亚洲另类在线一区| 欧美日韩精品高清| 免费欧美在线视频| 精品动漫一区二区三区在线观看| 国产91丝袜在线播放| 亚洲日本一区二区| 欧美日韩视频在线一区二区 | 69堂成人精品免费视频| 国内欧美视频一区二区| 国产精品欧美久久久久无广告| 99综合影院在线| 亚洲国产三级在线| 久久亚洲精精品中文字幕早川悠里| 国产一区视频网站| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 91麻豆国产精品久久| 日韩中文字幕区一区有砖一区| 精品少妇一区二区三区| 成人av免费在线| 香蕉久久一区二区不卡无毒影院| 日韩精品一区二区在线观看| 成人午夜在线播放| 亚洲成va人在线观看| 久久久亚洲欧洲日产国码αv| 北条麻妃一区二区三区| 日韩电影免费一区| 国产精品亲子乱子伦xxxx裸| 制服丝袜亚洲播放| 成人免费高清视频在线观看| 亚洲1区2区3区视频| 国产午夜亚洲精品不卡 | 亚洲激情第一区| 2023国产精品自拍| 在线免费观看视频一区| 国产在线精品一区在线观看麻豆| 亚洲人精品午夜| 精品成人a区在线观看| 日本黄色一区二区| 狠狠色丁香婷婷综合久久片| 亚洲一区电影777| 久久久91精品国产一区二区三区| 欧美在线不卡一区| 国产成人av网站| 日韩高清电影一区| 亚洲美女视频在线观看| 国产亚洲污的网站| 91精品国产91热久久久做人人| 97久久超碰国产精品| 国精品**一区二区三区在线蜜桃| 亚洲国产综合人成综合网站| 国产婷婷色一区二区三区四区 | 精品美女在线观看| 91猫先生在线| 国产成人免费视频网站 | 在线不卡的av| 91在线丨porny丨国产| 国模冰冰炮一区二区| 日韩电影一区二区三区四区| 一区二区三区在线免费播放| 国产精品―色哟哟| 久久嫩草精品久久久久| 91精品国产aⅴ一区二区| 欧美综合一区二区| av电影在线观看完整版一区二区| 国产中文字幕精品| 免费在线观看一区| 日韩精品一级二级 | 亚洲成人动漫在线观看| 亚洲精品一二三四区| 国产女同性恋一区二区| 久久女同性恋中文字幕| 亚洲精品在线观看网站| 欧美一区二区三区在线观看视频| 欧美系列亚洲系列| 在线观看区一区二| 在线免费av一区| 91久久精品一区二区三| www.成人在线| caoporen国产精品视频| 成人性生交大片免费看中文|