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

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

?? ftp.c

?? 單片機(jī)c語(yǔ)言程序設(shè)計(jì)100例--基于PIC+PROTEUS
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/*********************************************************************
 *
 *                  FTP ServerModule for Microchip TCP/IP Stack
 *
 *********************************************************************
 * FileName:        FTP.c
 * Dependencies:    StackTsk.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     4/23/01  Original        (Rev 1.0)
 * Nilesh Rajbharti     11/13/02 Fixed FTPServer()
 * Howard Schlunder		07/10/06 Added hash printing to FTP client
 * Howard Schlunder		07/20/06 Added FTP_RESP_DATA_NO_SOCKET error message
  ********************************************************************/
#define THIS_IS_FTP

#include <string.h>
#include <stdlib.h>
#include "..\Include\FTP.h"
#include "..\Include\TCP.h"
#include "..\Include\Tick.h"

#include "..\Include\MPFS.h"

#if defined(STACK_USE_FTP_SERVER)


#define FTP_COMMAND_PORT                (21)
#define FTP_DATA_PORT                   (20)
#define FTP_TIMEOUT                     (TICK)((TICK)180 * TICK_SECOND)
#define MAX_FTP_ARGS                    (7)
#define MAX_FTP_CMD_STRING_LEN          (31)

typedef enum _SM_FTP
{
    SM_FTP_NOT_CONNECTED,
    SM_FTP_CONNECTED,
    SM_FTP_USER_NAME,
    SM_FTP_USER_PASS,
    SM_FTP_RESPOND
} SM_FTP;

typedef enum _SM_FTP_CMD
{
    SM_FTP_CMD_IDLE,
    SM_FTP_CMD_WAIT,
    SM_FTP_CMD_RECEIVE,
    SM_FTP_CMD_WAIT_FOR_DISCONNECT
} SM_FTP_CMD;

typedef enum _FTP_COMMAND
{
    FTP_CMD_USER,
    FTP_CMD_PASS,
    FTP_CMD_QUIT,
    FTP_CMD_STOR,
    FTP_CMD_PORT,
    FTP_CMD_ABORT,
    FTP_CMD_UNKNOWN,
    FTP_CMD_NONE,
} FTP_COMMAND;

// Each entry in following table must match with that of FTP_COMMAND enum.
ROM char *FTPCommandString[] =
{
    "USER",                         // FTP_CMD_USER
    "PASS",                         // FTP_CMD_PASS
    "QUIT",                         // FTP_CMD_QUIT
    "STOR",                         // FTP_CMD_STOR
    "PORT",                         // FTP_CMD_PORT
    "ABOR"                          // FTP_CMD_ABORT
};
#define FTP_COMMAND_TABLE_SIZE  ( sizeof(FTPCommandString)/sizeof(FTPCommandString[0]) )


typedef enum _FTP_RESPONSE
{
    FTP_RESP_BANNER,
    FTP_RESP_USER_OK,
    FTP_RESP_PASS_OK,
    FTP_RESP_QUIT_OK,
    FTP_RESP_STOR_OK,
    FTP_RESP_UNKNOWN,
    FTP_RESP_LOGIN,
    FTP_RESP_DATA_OPEN,
    FTP_RESP_DATA_READY,
    FTP_RESP_DATA_CLOSE,
	FTP_RESP_DATA_NO_SOCKET,
    FTP_RESP_OK,

    FTP_RESP_NONE                       // This must always be the last
                                        // There is no corresponding string.
} FTP_RESPONSE;

// Each entry in following table must match with FTP_RESPONE enum
ROM char *FTPResponseString[] =
{
    "220 Ready\r\n",                    // FTP_RESP_BANNER
    "331 Password required\r\n",        // FTP_RESP_USER_OK
    "230 Logged in\r\n",                // FTP_RESP_PASS_OK
    "221 Bye\r\n",                      // FTP_RESP_QUIT_OK
    "500 \r\n",                         // FTP_RESP_STOR_OK
    "502 Not implemented\r\n",          // FTP_RESP_UNKNOWN
    "530 Login required\r\n",           // FTP_RESP_LOGIN
    "150 Transferring data...\r\n",     // FTP_RESP_DATA_OPEN
    "125 Done\r\n",                    	// FTP_RESP_DATA_READY
    "\r\n226 Transfer Complete\r\n",    // FTP_RESP_DATA_CLOSE
	"425 Can't create data socket.  Increase MAX_SOCKETS.\r\n",	//FTP_RESP_DATA_NO_SOCKET
    "200 Ok\r\n"                        // FTP_RESP_OK
};


static union
{
    struct
    {
        unsigned char bUserSupplied : 1;
        unsigned char bLoggedIn: 1;
    } Bits;
    BYTE Val;
} FTPFlags;


static TCP_SOCKET       FTPSocket;      // Main ftp command socket.
static TCP_SOCKET       FTPDataSocket;  // ftp data socket.
static WORD_VAL         FTPDataPort;    // ftp data port number as supplied by client

static SM_FTP           smFTP;          // ftp server FSM state
static SM_FTP_CMD       smFTPCommand;   // ftp command FSM state

static FTP_COMMAND      FTPCommand;
static FTP_RESPONSE     FTPResponse;

static char             FTPUser[FTP_USER_NAME_LEN];
static char             FTPString[MAX_FTP_CMD_STRING_LEN+2];
static BYTE             FTPStringLen;
static char             *FTP_argv[MAX_FTP_ARGS];    // Parameters for a ftp command
static BYTE             FTP_argc;       // Total number of params for a ftp command
static TICK             lastActivity;   // Timeout keeper.


static MPFS             FTPFileHandle;

// Private helper functions.
static void ParseFTPString(void);
static FTP_COMMAND ParseFTPCommand(char *cmd);
static void ParseFTPString(void);
static BOOL ExecuteFTPCommand(FTP_COMMAND cmd);
static BOOL PutFile(void);
static BOOL Quit(void);


// Uncomment following line if ftp transactions are to be displayed on
// RS-232 - for debug purpose only.

//#define FTP_SERVER_DEBUG_MODE
#define FTP_PUT_ENABLED

#if defined(FTP_SERVER_DEBUG_MODE)
static USARTPut(BYTE c)
{
    while( !TXSTA_TRMT);
    TXREG = c;
}
#else

#define USARTPut(a)

#endif


/*********************************************************************
 * Function:        void FTPInit(void)
 *
 * PreCondition:    TCP module is already initialized.
 *
 * Input:           None
 *
 * Output:          None
 *
 * Side Effects:    None
 *
 * Overview:        Initializes internal variables of FTP
 *
 * Note:
 ********************************************************************/
void FTPInit(void)
{
    FTPSocket       = TCPListen(FTP_COMMAND_PORT);
    smFTP           = SM_FTP_NOT_CONNECTED;
    FTPStringLen    = 0;
    FTPFlags.Val    = 0;
    FTPDataPort.Val = FTP_DATA_PORT;
}


/*********************************************************************
 * Function:        void FTPServer(void)
 *
 * PreCondition:    FTPInit() must already be called.
 *
 * Input:           None
 *
 * Output:          Opened FTP connections are served.
 *
 * Side Effects:    None
 *
 * Overview:
 *
 * 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.
 ********************************************************************/
BOOL FTPServer(void)
{
    BYTE v;
    TICK currentTick;

    if ( !TCPIsConnected(FTPSocket) )
    {
        FTPStringLen    = 0;
        FTPCommand      = FTP_CMD_NONE;
        smFTP           = SM_FTP_NOT_CONNECTED;
        FTPFlags.Val    = 0;
        smFTPCommand    = SM_FTP_CMD_IDLE;
        return TRUE;
    }

    if ( TCPIsGetReady(FTPSocket) )
    {
        lastActivity    = TickGet();

        while( TCPGet(FTPSocket, &v ) )
        {
            USARTPut(v);
            FTPString[FTPStringLen++]   = v;
            if ( FTPStringLen == MAX_FTP_CMD_STRING_LEN )
                FTPStringLen            = 0;
        }
        TCPDiscard(FTPSocket);


        if ( v == '\n' )
        {
            FTPString[FTPStringLen]     = '\0';
            FTPStringLen                = 0;
            ParseFTPString();
            FTPCommand                  = ParseFTPCommand(FTP_argv[0]);
        }
    }
    else if ( smFTP != SM_FTP_NOT_CONNECTED )
    {
        currentTick = TickGet();
        currentTick = TickGetDiff(currentTick, lastActivity);
        if ( currentTick >= FTP_TIMEOUT )
        {
            lastActivity                = TickGet();
            FTPCommand                  = FTP_CMD_QUIT;
            smFTP                       = SM_FTP_CONNECTED;
        }
    }

    switch(smFTP)
    {
    case SM_FTP_NOT_CONNECTED:
        FTPResponse = FTP_RESP_BANNER;
        lastActivity = TickGet();
        /* No break - Continue... */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色网站国产精品| 色婷婷综合五月| 亚洲一区免费观看| 精品国产123| 欧美亚洲动漫精品| 成人黄色软件下载| 裸体一区二区三区| 亚洲美女屁股眼交3| 欧美成人三级在线| 欧美日韩一区高清| 92国产精品观看| 国产伦精品一区二区三区视频青涩 | 久久久国产精品麻豆| 在线免费观看视频一区| 成人性生交大片免费看在线播放 | 国产精品国产三级国产aⅴ入口| 337p亚洲精品色噜噜噜| 91在线观看免费视频| 成人午夜精品一区二区三区| 蜜臀av性久久久久蜜臀aⅴ流畅| 亚洲精品国产精华液| 国产精品无遮挡| 久久综合九色欧美综合狠狠| 91麻豆精品国产无毒不卡在线观看| 99在线精品观看| 高清视频一区二区| 国产专区综合网| 蜜桃视频第一区免费观看| 亚洲第四色夜色| 亚洲国产精品久久久男人的天堂| 亚洲欧美另类久久久精品 | 国产精品成人免费在线| 国产欧美一区二区精品性| 日韩精品一区二区三区在线播放| 欧美精品第1页| 在线播放/欧美激情| 欧美午夜宅男影院| 欧美制服丝袜第一页| 91成人免费在线| 一本一本大道香蕉久在线精品| 成人99免费视频| 成人黄色在线视频| 91香蕉国产在线观看软件| caoporen国产精品视频| 99久久99久久精品免费看蜜桃| 99精品国产视频| 94色蜜桃网一区二区三区| 一本色道久久综合亚洲91| 色94色欧美sute亚洲13| 91国产视频在线观看| 欧美精品在线一区二区| 91精品国产综合久久福利| 欧美一级黄色大片| 久久―日本道色综合久久| 欧美激情一区二区三区不卡| 国产精品久久三区| 一区二区三区小说| 日韩电影免费一区| 国产精品自拍一区| 99国产一区二区三精品乱码| 欧洲生活片亚洲生活在线观看| 欧美日韩午夜在线| 欧美v日韩v国产v| 亚洲国产精品二十页| 亚洲欧美日韩精品久久久久| 亚洲电影一级黄| 激情综合色综合久久综合| 国产ts人妖一区二区| 99久久精品一区二区| 欧美午夜一区二区| 日韩精品一区二区三区四区| 中文字幕av一区 二区| 亚洲一区二区三区视频在线播放| 免播放器亚洲一区| 成人午夜私人影院| 欧美在线视频不卡| 精品国产髙清在线看国产毛片| 国产精品丝袜91| 天天亚洲美女在线视频| 国产精品一区二区久久精品爱涩| www..com久久爱| 欧美另类videos死尸| 国产视频不卡一区| 香蕉成人伊视频在线观看| 狠狠v欧美v日韩v亚洲ⅴ| 91丨porny丨户外露出| 日韩欧美二区三区| 亚洲嫩草精品久久| 国产一区二区在线看| 欧美最新大片在线看| 久久精品视频免费| 午夜精品一区在线观看| 国产高清久久久| 欧美福利视频一区| 最新久久zyz资源站| 老司机免费视频一区二区| 99麻豆久久久国产精品免费 | 精品日韩一区二区三区免费视频| 成人欧美一区二区三区| 国产综合久久久久久久久久久久 | 99精品热视频| 精品国产91洋老外米糕| 樱花草国产18久久久久| 国产盗摄精品一区二区三区在线| 欧美高清性hdvideosex| 伊人夜夜躁av伊人久久| 大胆欧美人体老妇| 精品美女在线播放| 日韩电影在线观看电影| 欧美伊人久久久久久久久影院| 久久免费国产精品| 裸体在线国模精品偷拍| 欧美老肥妇做.爰bbww视频| 中文字幕一区视频| 高清shemale亚洲人妖| 欧美电影免费提供在线观看| 午夜av电影一区| 欧洲av在线精品| 一区二区三区四区精品在线视频| 国产69精品久久99不卡| 精品区一区二区| 免费观看91视频大全| 777色狠狠一区二区三区| 一区二区三区在线播| 日本精品视频一区二区| 最新成人av在线| 99久久精品情趣| 综合网在线视频| 91在线免费看| 亚洲免费高清视频在线| av电影在线观看不卡| 中文字幕一区二区三| 97国产一区二区| 亚洲日本护士毛茸茸| 91麻豆精品一区二区三区| 亚洲图片另类小说| 色综合天天性综合| 亚洲日本护士毛茸茸| 色婷婷精品久久二区二区蜜臀av | 日韩一区二区在线免费观看| 日韩精品色哟哟| 欧美一区二区三区在线视频| 日本 国产 欧美色综合| 欧美电影免费提供在线观看| 国内久久婷婷综合| 久久久久久久久久久久久女国产乱 | 99久久精品免费精品国产| 国产精品人人做人人爽人人添| 丁香五精品蜜臀久久久久99网站 | 国产精品福利影院| 91视频一区二区| 亚洲最大色网站| 欧美高清性hdvideosex| 精品一区二区在线播放| 亚洲国产精品激情在线观看| 成人av影院在线| 一区二区三区精品在线| 制服丝袜国产精品| 久久99国产精品免费| 国产女主播视频一区二区| 91一区二区三区在线观看| 亚洲妇熟xx妇色黄| 欧美成人精品3d动漫h| 国产999精品久久久久久| 中文字幕欧美一区| 欧美精品一二三| 国产揄拍国内精品对白| 国产精品理论片在线观看| 欧美日韩在线精品一区二区三区激情| 日本欧美在线看| 中文字幕av资源一区| 欧美色国产精品| 国产自产高清不卡| 亚洲欧美一区二区三区孕妇| 欧美丰满美乳xxx高潮www| 国产成人一级电影| 亚洲精品免费播放| 日韩精品一区二区三区视频播放| 波多野结衣中文一区| 香蕉影视欧美成人| 欧美国产成人精品| 欧美日韩大陆在线| 成人午夜在线免费| 青青国产91久久久久久| 最新不卡av在线| 欧美mv日韩mv亚洲| 在线免费观看成人短视频| 久久精品国产精品亚洲精品| 成人免费一区二区三区在线观看| 91精品国产综合久久久久久| 不卡的电视剧免费网站有什么| 日韩精品欧美精品| 亚洲欧美一区二区三区极速播放| 欧美一区日韩一区| 日本道免费精品一区二区三区| 久久草av在线| 亚洲国产日韩精品| 国产精品久久久久久久久久久免费看 | 精品伦理精品一区| 欧美亚洲一区二区三区四区|