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

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

?? ftpdwl0.c

?? C語言源代碼及相關資料
?? C
字號:
#ifdef	_CVI_
#include <utility.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "ftpdwl.h"
#include "gprs_a.h"

int		mystrncmpnocase ( char * p, char * q, int n );

#define	FTP_RSP_LEN						128
static
unsigned
char	szFTP[ FTP_RSP_LEN + 1 ];

int		ftp_get_response ( int ctrl, unsigned char * presponse, int size, int timeout )
{
unsigned
char *	p = presponse;
unsigned
char	c[ 2 ];
int		i;

	while ( 1 )
	{
		i = 0;
		while ( socket_read ( ctrl, c, 1 ) != 1 )
		{
#ifdef	_CVI_
			if ( ++i >= 100 ) printf ( "\n\tSometing wrong?\n\n" );
#endif
			if (   i >= 10000 ) return (*p = 0);					//	Here a timeout may be needed! Otherwise endless loop will cause	//	To Do...
		}
		if ( size-- > 0 ) *p++ = c[ 0 ];
		if ( c[ 0 ] == '\n' ) break;
	}
	*p = '\0';
#ifdef	_CVI_
	printf ( "\nFTP RSP:\n%s\n\n", presponse );
#endif
	return (int)(p - presponse);
}

int		ftp_login ( int ctrl, unsigned char * pusername, unsigned char * ppassword )
{
	ftp_get_response ( ctrl, szFTP, FTP_RSP_LEN, 0 );

	if ( mystrncmpnocase ( (char *)szFTP, "220 ", 4 ) == 0 )				//	Ready to login
	{
		sprintf ( (char *)szFTP, "USER %s\r\n", pusername );
		socket_write ( ctrl, szFTP, strlen ( (char *)szFTP ) );
		ftp_get_response ( ctrl, szFTP, FTP_RSP_LEN, 0 );
	}

	if ( mystrncmpnocase ( (char *)szFTP, "331 ", 4 ) == 0 )				//	Password is needed
	{
		sprintf ( (char *)szFTP, "PASS %s\r\n", ppassword );
		socket_write ( ctrl, szFTP, strlen ( (char *)szFTP ) );
		ftp_get_response ( ctrl, szFTP, FTP_RSP_LEN, 0 );
	}

	if (!mystrncmpnocase ( (char *)szFTP, "230 ", 4 ) == 0 ) return 0;		//	fail to login

	return 1;
}

int		ftp_get_pasv_param ( unsigned char * presponse, unsigned char * pip, int * pport )
{
//	227 Entering Passive Mode (221,231,140,211,11,140)
int		i = 0;
unsigned
char *	p = presponse;
unsigned
char 	c;

	while ( *p++ != '(' );
	while ( i < 4 )
	{
		c = *p++;
		if ( c == ',' )
		{
			*pip++ = '.';
			i++;
		}
		else
			*pip++ = c;
	}
	*(pip - 1 ) = '\0';

	i = 0;
	while ( (c=*p++) != ',' )
	{
		i = i * 10 + c - '0';
	}

	*pport = i << 8;						//	

	i = 0;
	while ( (c=*p++) != ')' )
	{
		i = i * 10 + c - '0';
	}
	*pport += i;
	return 1;
}

int		ftp_set_pasv ( int ctrl )
{
int		i;
int		data;
int		port;
unsigned
char	ip[ 20 ];

	sprintf ( (char *)szFTP, "PASV\r\n" );
	socket_write ( ctrl, szFTP, strlen ( (char *)szFTP ) );
	ftp_get_response ( ctrl, szFTP, FTP_RSP_LEN, 0 );

	if (!mystrncmpnocase ( (char *)szFTP, "227 ", 4 ) == 0 ) return 0;		//	fail to Entering Passive Mode

	if (!ftp_get_pasv_param ( szFTP, ip, &port ) ) return 0;

	for ( i = 5; i > 0; i-- )
	{
		data = socket_open ( SOCKET_TCP, ip, port );
		if ( data > 0 ) break;
#ifdef	_CVI_
		printf ( "\n\n\tsocket(%d ) error!\n\n", data );
		Delay ( 2 );
#endif
	}
	if ( i == 0 ) return 0;

	return data;
}

int		ftp_get_file ( int ctrl, int data, unsigned char * pfilename, int start, int size, CALLBACK_FTP fn )
{
int	nBytes = 0;
int	nbytes = 0;

//	if ( ctrl <= 0 ) return 0;
//	if ( data <= 0 ) return 0;
//	if (!pfilename ) return 0;

//	set the indicator of the first byte to retrieve from file
	sprintf ( (char *)szFTP, "REST %d\r\n", start );
	socket_write ( ctrl, szFTP, strlen ( (char *)szFTP ) );
	ftp_get_response ( ctrl, szFTP, FTP_RSP_LEN, 0 );

	if (!mystrncmpnocase ( (char *)szFTP, "350 ", 4 ) == 0 ) return 0;		//	fail to Reset to the byte at 'start'

//	binary file to be transfered
	sprintf ( (char *)szFTP, "TYPE I\r\n" );
	socket_write ( ctrl, szFTP, strlen ( (char *)szFTP ) );
	ftp_get_response ( ctrl, szFTP, FTP_RSP_LEN, 0 );

	if (!mystrncmpnocase ( (char *)szFTP, "200 ", 4 ) == 0 ) return 0;		//	fail to Entering BINARY Mode

//	start to transfer file
	sprintf ( (char *)szFTP, "RETR %s\r\n", pfilename );
	socket_write ( ctrl, szFTP, strlen ( (char *)szFTP ) );
//	ftp_get_response ( ctrl, szFTP, FTP_RSP_LEN, 0 );				//	mark it to avoid buffer of data stream overrun!

//	if (!mystrncmpnocase ( szFTP, "150 ", 4 ) == 0 ) return 0;		//	there is a error!

	while ( 1 )
	{
		socket_read ( ctrl, szFTP, FTP_RSP_LEN );

		if ( FTP_RSP_LEN < size ) nbytes = FTP_RSP_LEN;
		else                      nbytes = size;

		nbytes = socket_read ( data, szFTP, nbytes );

		if ( nbytes <= 0 )
		{
#ifdef	_CVI_
		static	int	c = 0;
			if ( ++c >= 500 )
			{
				c = 0;
				printf ( "\n\n\tI'm super hungry!\n\n" );
			}
#endif
			continue;									//	Here a timeout may be needed! Otherwise endless loop will cause	//	To Do...
		}

//		logfile ( "USERTEST", szFTP, nbytes );
		if ( fn ) fn ( szFTP, nbytes, start + nBytes );

		nBytes += nbytes;
		size   -= nbytes;
#ifdef	_CVI_
		printf ( "\n\n\tByte recieved : %08d\n\n", nBytes );
#endif

		if ( size <= 0 ) break;
	}

	return nBytes;
}

int		ftp_dwl ( unsigned char * pip, int port, unsigned char * pusername, unsigned char * ppassword, unsigned char * pfilename, int start, int size, CALLBACK_FTP fn )
{
int		nBytes = 0;
int		ctrl;
int		data;
int		i;

	for ( i = 5; i > 0; i-- )
	{
		ctrl = socket_open ( SOCKET_TCP, pip, port );
		if ( ctrl > 0 ) break;
#ifdef	_CVI_
		printf ( "\n\n\tsocket(%d ) error!\n\n", ctrl );
		Delay ( 2 );
#endif
	}
	if ( i == 0 ) return 0;

	if ( ftp_login ( ctrl, pusername, ppassword ) )
	{
		data = ftp_set_pasv ( ctrl );
		if ( data > 0 )
		{
			nBytes = ftp_get_file ( ctrl, data, pfilename, start, size, fn );
			socket_close ( data );
		}
	}

	socket_close ( ctrl );
	return nBytes;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
狠狠狠色丁香婷婷综合久久五月| 91麻豆国产在线观看| 国产91精品精华液一区二区三区| a亚洲天堂av| 精品99999| 日韩国产精品久久久久久亚洲| 国产成人精品一区二| 欧美日韩电影在线| 亚洲欧洲在线观看av| 久久精品国产99国产精品| 色综合激情五月| 国产亚洲综合在线| 久久精品国产99国产精品| 色av成人天堂桃色av| 国产精品成人一区二区艾草| 极品尤物av久久免费看| 欧美日韩国产中文| 亚洲欧美日韩在线不卡| 成人短视频下载 | 日本道色综合久久| 国产日产欧美一区| 麻豆免费看一区二区三区| 欧美影院精品一区| 亚洲精品久久嫩草网站秘色| 不卡av在线网| 中文乱码免费一区二区| 国产麻豆精品久久一二三| 欧美一级淫片007| 日本va欧美va瓶| 欧美日韩五月天| 亚洲综合精品自拍| 在线观看日韩精品| 亚洲一区二区黄色| 欧美三级在线视频| 亚洲成人动漫在线免费观看| 欧美性xxxxxxxx| 亚洲mv在线观看| 欧美一区二区视频网站| 日韩精彩视频在线观看| 欧美一区二区精品在线| 免费xxxx性欧美18vr| 日韩久久久精品| 国产精品一级二级三级| 国产清纯美女被跳蛋高潮一区二区久久w | 国产精品色噜噜| www.视频一区| 亚洲国产精品嫩草影院| 欧美色精品在线视频| 日本不卡1234视频| 久久久蜜桃精品| 波波电影院一区二区三区| 国产精品国产成人国产三级 | 亚洲激情图片小说视频| 在线免费观看不卡av| 五月婷婷欧美视频| 久久精品亚洲国产奇米99| 成人免费av网站| 亚洲免费伊人电影| 欧美日本一区二区在线观看| 久久99久久99| 亚洲免费高清视频在线| 91精品国产麻豆国产自产在线 | 蜜臀99久久精品久久久久久软件| 精品国产91亚洲一区二区三区婷婷| 久久精品噜噜噜成人av农村| 日本一区二区成人在线| 欧美影院午夜播放| 国产成人免费9x9x人网站视频| 亚洲综合丝袜美腿| 久久亚洲一区二区三区四区| 色天天综合色天天久久| 九九视频精品免费| 亚洲高清在线精品| 国产精品女上位| 日韩亚洲欧美一区二区三区| 99久久久精品免费观看国产蜜| 日韩黄色片在线观看| 国产精品欧美经典| 精品国产乱子伦一区| 色综合久久久久| 国产成人综合精品三级| 亚洲国产精品精华液网站| 中文字幕欧美区| 精品国产乱码久久久久久图片 | 色综合视频一区二区三区高清| 另类中文字幕网| 亚洲国产综合在线| 亚洲精品一区二区三区精华液 | 国产欧美一区二区三区沐欲 | 91美女在线观看| 韩国一区二区三区| 亚洲激情网站免费观看| 国产亚洲精品精华液| 欧美最猛黑人xxxxx猛交| bt欧美亚洲午夜电影天堂| 免费美女久久99| 日韩激情在线观看| 国产欧美一区二区精品仙草咪 | 国产一区在线观看麻豆| 日韩制服丝袜先锋影音| 久久免费精品国产久精品久久久久| 欧美老人xxxx18| 成人免费三级在线| 国产精品亚洲一区二区三区妖精 | 亚洲色图20p| 国产精品嫩草影院com| 日韩午夜三级在线| 91麻豆精品国产91久久久久久 | 国产老肥熟一区二区三区| 亚洲一区二区精品视频| 亚洲你懂的在线视频| 国产日韩精品一区二区三区| 久久久久久久一区| 日韩精品一区二区三区中文不卡 | 日韩视频不卡中文| 欧美一卡2卡3卡4卡| 91久久精品日日躁夜夜躁欧美| 91视频xxxx| 不卡的av在线播放| 成人激情图片网| 丰满少妇在线播放bd日韩电影| 国产v综合v亚洲欧| 国模套图日韩精品一区二区| 国产一区二区三区免费观看| 亚洲综合成人网| 视频一区国产视频| 一区二区三区四区视频精品免费| 国产精品色哟哟| 亚洲一区二区欧美| 午夜精品在线看| 国内欧美视频一区二区| 久久国产精品露脸对白| 国产剧情一区二区三区| 国产精品一区二区三区乱码| 丁香婷婷深情五月亚洲| 粉嫩嫩av羞羞动漫久久久| 91玉足脚交白嫩脚丫在线播放| 成人黄色软件下载| 欧美丝袜自拍制服另类| 欧美性生活久久| 精品福利一区二区三区| 久久久久国产成人精品亚洲午夜| 国产精品视频yy9299一区| 国产精品国产三级国产aⅴ无密码| 夜夜亚洲天天久久| 亚洲愉拍自拍另类高清精品| 免费成人小视频| 91色porny| 91精品国产黑色紧身裤美女| 国产午夜亚洲精品不卡| 日韩一区中文字幕| 美女性感视频久久| 国产精品91xxx| 欧美日韩精品免费观看视频| 91精品国产综合久久精品图片| 国产三区在线成人av| 欧美成人精品高清在线播放| 欧美高清在线精品一区| 亚洲第一成人在线| 国产一区视频在线看| 久久91精品国产91久久小草| 丁香桃色午夜亚洲一区二区三区| 色综合久久99| 国产日韩精品久久久| 亚洲一区二区三区激情| 成人91在线观看| 欧美日韩精品一区二区天天拍小说 | 91捆绑美女网站| 欧美一区二区三区视频| 日韩伦理免费电影| 日本欧美久久久久免费播放网| 91丨porny丨蝌蚪视频| 日韩欧美高清dvd碟片| 中文字幕日韩精品一区| 精品一区二区三区香蕉蜜桃| 91视频www| 中文字幕永久在线不卡| 日韩在线一二三区| 欧洲一区在线电影| 久久久久国色av免费看影院| 免费观看一级欧美片| 国产一区二区中文字幕| 91精品国产手机| 亚洲成人在线观看视频| 国产精品一卡二| 久久精品在线免费观看| 亚洲大片在线观看| 欧美日韩视频在线观看一区二区三区 | 国产精品一区一区| 欧美成人乱码一区二区三区| 夜夜操天天操亚洲| 色狠狠综合天天综合综合| 国产午夜精品在线观看| 国产盗摄女厕一区二区三区| 91麻豆精品国产91久久久更新时间| 亚洲人成7777| 在线看日韩精品电影| 国产精品女主播av| 91麻豆产精品久久久久久| 中文字幕欧美日韩一区|