⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ftp.c

📁 C语言源代码及相关资料
💻 C
字号:


#include "config.h"

Communi_Stru   	FtpCtrl;	//IP,端口号
FTPCMDINFO	FtpCmdInfo;	//用户名,密码,文件路径及文件名
FTPCMD FtpCmd[] = 		//FTP命令字及其内容
{
	{"USER ",FtpCmdInfo.Ftp_UserName},
	{"PASS ",FtpCmdInfo.Ftp_UserPWD},
	{"TYPE ","I"},
	{"PASV "," "},
	{"RETR ",FtpCmdInfo.DirFile_Name},
	{"REST ",FtpCmdInfo.DirFile_Len},
};


uint8	GetFtpPort(INT8U *revbuf)
{
	INT8U i = 0,j = 0,k = 0;
	INT8U hport,lport;
	
	INT8U *portptr = revbuf; 
	char hpbuf[10];
	char lpbuf[10];
	if(strstr((char *)portptr,"227"))
	{
		
		while(1)
		{
			if(*portptr++ == ',')
			{
				i++;		
				if(i == 4)break;	
			
			}
				
		}
	  	
	  	while(*portptr != ',')
	  	{
	  		hpbuf[j++] = *portptr++;
	  	}
	  	
	  	hpbuf[j] = '\0';
	  	hport = atoi(hpbuf);
	  	
	  	 
	  	portptr++;
	  	
	  	while(*portptr != ')'){
	  		lpbuf[k++] = *portptr++;
	  	}
	  	
	  	lpbuf[k] = '\0';
	  	lport = atoi(lpbuf);
	  	
	  	sprintf(FtpCtrl.strPort,"%d", ((INT16U)hport<<8)|(INT16U)lport);
	  	
	  	return TRUE;
	  	
	  	
	}
	
	return FALSE ;
	
}


/*****************************************************************
 Function name:		FtpSendCmd
 Descriptions:		connecting FTP command with para  
 parameters:		Buffer:  point to buf including com and para
 					len:     length of command   
 Returned value:	None
******************************************************************/ 
uint8 FtpSendCmd(uint8	*	ftpCmdbuf,FTPCMD	ftpCmd,uint16 *	cmdlen)
{
	char 	buff[TRANSINFOLEN];
	uint16	i=0;
	
	memset(buff,0,sizeof(buff));
	
	memcpy(ftpCmdbuf,ftpCmd.CmdName,strlen(ftpCmd.CmdName));
	*cmdlen =strlen(ftpCmd.CmdName);
	memcpy(ftpCmdbuf+*cmdlen,ftpCmd.CmdPara,strlen(ftpCmd.CmdPara));
	*cmdlen +=strlen(ftpCmd.CmdPara);
	memcpy(ftpCmdbuf+*cmdlen,"\r\n",strlen("\r\n"));
	*cmdlen +=strlen("\r\n");
	for(i=0;i<strlen((char	*)ftpCmdbuf);i++)
		sprintf(buff+strlen(buff),"%02X",ftpCmdbuf[i]);
	*cmdlen=strlen(buff);
	memcpy(ftpCmdbuf,buff,*cmdlen);
	
	return	TRUE;
	
}


uint8 Ftp_Conn (uint8	*	uiReviceBuf0,uint16	*	uiNum)
{	
	INT8U		tempbuff[TRANSINFOLEN/2];
	
	memset(uiReviceBuf0,0,TRANSINFOLEN);
	FtpSendCmd(uiReviceBuf0,FtpCmd[0],uiNum);
	Send_data(uiReviceBuf0,TRANSINFOLEN,uiNum);
	uartWrite(UART2,uiReviceBuf0,*uiNum,NULL);	
	
	uartWrite(UART3,uiReviceBuf0,*uiNum,NULL);	//测试
	OSTimeDlyHMSM(0,0,2,500);
	memset(uiReviceBuf0,0,TRANSINFOLEN);
	if(LoadUart2(UART2, uiReviceBuf0, uiNum))
	{
		memset(tempbuff,0,sizeof(tempbuff));
	    *uiNum=getHexStr(tempbuff,uiReviceBuf0,*uiNum);
	    memset(uiReviceBuf0,0,TRANSINFOLEN);
	    memcpy(uiReviceBuf0,tempbuff,*uiNum);
		
		uartWrite(UART3,uiReviceBuf0,*uiNum,NULL);	//测试
	}

	memset(uiReviceBuf0,0,TRANSINFOLEN);
	FtpSendCmd(uiReviceBuf0,FtpCmd[1],uiNum);
	Send_data(uiReviceBuf0,TRANSINFOLEN,uiNum);
	uartWrite(UART2,uiReviceBuf0,*uiNum,NULL);	
	
	uartWrite(UART3,uiReviceBuf0,*uiNum,NULL);	//测试
	OSTimeDlyHMSM(0,0,2,0);
	memset(uiReviceBuf0,0,TRANSINFOLEN);
	if(LoadUart2(UART2, uiReviceBuf0, uiNum))
	{
		memset(tempbuff,0,sizeof(tempbuff));
	    *uiNum=getHexStr(tempbuff,uiReviceBuf0,*uiNum);
	    memset(uiReviceBuf0,0,TRANSINFOLEN);
	    memcpy(uiReviceBuf0,tempbuff,*uiNum);
		
		uartWrite(UART3,uiReviceBuf0,*uiNum,NULL);	//测试
	}
	
	memset(uiReviceBuf0,0,TRANSINFOLEN);
	FtpSendCmd(uiReviceBuf0,FtpCmd[2],uiNum);
	Send_data(uiReviceBuf0,TRANSINFOLEN,uiNum);
	uartWrite(UART2,uiReviceBuf0,*uiNum,NULL);	
	
	uartWrite(UART3,uiReviceBuf0,*uiNum,NULL);	//测试
	OSTimeDlyHMSM(0,0,5,0);
	memset(uiReviceBuf0,0,TRANSINFOLEN);
	if(LoadUart2(UART2, uiReviceBuf0, uiNum))
	{
		memset(tempbuff,0,sizeof(tempbuff));
	    *uiNum=getHexStr(tempbuff,uiReviceBuf0,*uiNum);
	    memset(uiReviceBuf0,0,TRANSINFOLEN);
	    memcpy(uiReviceBuf0,tempbuff,*uiNum);
		
		uartWrite(UART3,uiReviceBuf0,*uiNum,NULL);	//测试
	}
	
	memset(uiReviceBuf0,0,TRANSINFOLEN);
	FtpSendCmd(uiReviceBuf0,FtpCmd[3],uiNum);
	Send_data(uiReviceBuf0,TRANSINFOLEN,uiNum);
	uartWrite(UART2,uiReviceBuf0,*uiNum,NULL);	
	
	uartWrite(UART3,uiReviceBuf0,*uiNum,NULL);	//测试
	OSTimeDlyHMSM(0,0,5,0);
	memset(uiReviceBuf0,0,TRANSINFOLEN);
	if(LoadUart2(UART2, uiReviceBuf0, uiNum))
	{
		memset(tempbuff,0,sizeof(tempbuff));
	    *uiNum=getHexStr(tempbuff,uiReviceBuf0,*uiNum);
	    memset(uiReviceBuf0,0,TRANSINFOLEN);
	    memcpy(uiReviceBuf0,tempbuff,*uiNum);
		
		uartWrite(UART3,uiReviceBuf0,*uiNum,NULL);	//测试
		GetFtpPort(uiReviceBuf0);
		
	}
	
	
	return TRUE;
	
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -