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

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

?? simpleftp.c

?? 嵌入式linux下面的ftp程序
?? C
字號:
#include "SimpleFTP.h"//-------------------static functions------------------   static int ftpcmd(SimpleFTP *sftp ,const char *s1, const char *s2, FILE *stream, char *buf);  // static int ftpcmd(SimpleFTP *sftp ,const char *s1, const char *s2 ,FILE *stream);   static int xconnect(const struct sockaddr_in *s_addr);   static int xconnect_ftpdata(SimpleFTP *sftp ,const char *buf);   static int bb_xopen(const char *pathname, int flags);   static size_t bb_full_fd_action(int src_fd, int dst_fd, const size_t size);   static ssize_t safe_read(int fd, void *buf, size_t count);   static ssize_t safe_write(int fd, const void *buf, size_t count);   static int safe_strtoul(char *arg, unsigned long* value);   static ssize_t bb_full_write(int fd, const void *buf, size_t len);   static int bb_copyfd_size(int fd1, int fd2, const off_t size);   static void setError(SimpleFTP *sftp ,char * errStr);  char * getLastReply(SimpleFTP *sftp)   //  {    return sftp->reply ;  }  	char * getError(SimpleFTP *sftp)	{ 		return sftp->error;	}   int SimpleFTP_init(SimpleFTP **sftp){     *sftp = (SimpleFTP *) malloc (sizeof(SimpleFTP));	 if (*sftp == NULL)	 {		 return -1;	 }	 (*sftp)->control_stream == 0;	 memset(&((*sftp)->s_in) ,0 ,sizeof(struct sockaddr_in));	 memset(&(*sftp)->reply ,'\0' ,64);	 memset(&(*sftp)->error ,'\0' ,64);   }   void SimpleFTP_free(SimpleFTP *sftp){	   pclose(sftp->control_stream);	  // free(sftp->control_stream);	   free(sftp);   }int ftpConnect(SimpleFTP *sftp  ,char *user ,char *pass,char *host,int port){   struct hostent *he;   char buf[512];  // memset(&s_in,0,sizeof(struct sockaddr_in));   sftp->s_in.sin_family = AF_INET;   he = gethostbyname(host);   memcpy(&(sftp->s_in.sin_addr),he->h_addr_list[0],he->h_length);   sftp->s_in.sin_port = htons(port);   sftp->control_stream = fdopen(xconnect(&(sftp->s_in)),"r+");     if(sftp->control_stream == NULL ){          printf("Could not open control stream");          return 0;       }     	if (ftpcmd(sftp ,NULL, NULL, sftp->control_stream, buf) != 220) {		printf("%s", buf + 4);                return 0;	}	/*  Login to the server */	switch (ftpcmd(sftp ,"USER ", user, sftp->control_stream, buf)) {	case 230:		break;	case 331:		if (ftpcmd(sftp ,"PASS ", pass, sftp->control_stream, buf) != 230) {			    printf("PASS error: %s", buf + 4);                            return 0;		}		break;	default:		{       printf("USER error: %s", buf + 4);                        return 0;                }	}         ftpcmd(sftp ,"TYPE I", NULL, sftp->control_stream, buf);       return 1;}void ftpDisconnect(SimpleFTP *sftp ){	char buf[64];	ftpcmd(sftp,"QUIT", NULL, sftp->control_stream,buf);}char * pwd(SimpleFTP *sftp ){  char buf[128];  if(ftpcmd(sftp,"PWD" ,NULL ,sftp->control_stream ,buf) == 257)	{	  char * start = buf + 5;	  char * end = strrchr(start ,'\"');	  int len = end - start ;	  char * path = (char *)malloc(len + 1);	  strncpy(path ,start ,len);	  path[len] = '\0';	  return path;	}else{		return NULL;	}}int cwd(SimpleFTP *sftp ,char *dir){	char buf[64];  return (ftpcmd(sftp,"CWD ", dir, sftp->control_stream ,buf) == 250 );}int stor(SimpleFTP *sftp ,char * local_path){  	struct stat sbuf;	char buf[512];	int fd_data;	int fd_local;	int response;	/*  Connect to the data socket */	if (ftpcmd(sftp,"PASV", NULL, sftp->control_stream, buf) != 227) {		printf("PASV error: %s", buf + 4);	}	fd_data = xconnect_ftpdata(sftp ,buf);/*	if (ftpcmd(sftp,"CWD ", server_path, control_stream, buf) != 250) {		printf("CWD error: %s", buf + 4);	}*/	/* get the local file */	if ((local_path[0] == '-') && (local_path[1] == '\0')) {		fd_local = STDIN_FILENO;	} else {		fd_local = bb_xopen(local_path, O_RDONLY);		fstat(fd_local, &sbuf);		sprintf(buf, "ALLO %lu", (unsigned long)sbuf.st_size);		response = ftpcmd(sftp,buf, NULL, sftp->control_stream, buf);		switch (response) {		case 200:		case 202:			break;		default:			close(fd_local);			printf("ALLO error: %s", buf + 4);			break;		}	}	response = ftpcmd(sftp,"STOR ", local_path, sftp->control_stream, buf);	switch (response) {	case 125:	case 150:		break;	default:		close(fd_local);		printf("STOR error: %s", buf + 4);		close(fd_data);		return 0;	}	/* transfer the file  */	if (bb_full_fd_action(fd_local, fd_data,0) == -1) {		printf("bb_full_fd_action error!\n");		close(fd_data);		return 0;	}	/* close it all down */	close(fd_data);	if (ftpcmd(sftp,NULL, NULL, sftp->control_stream, buf) != 226) {		printf("error: %s", buf + 4);	}	return 1;}int get(SimpleFTP *sftp ,const char *local_path ,char * server_path){	char buf[512];	off_t filesize = 0;	int fd_data;	int fd_local = -1;	off_t beg_range = 0;	char do_continue = 0;	/* Connect to the data socket */	if (ftpcmd(sftp,"PASV", NULL, sftp->control_stream, buf) != 227) {		fprintf(stderr,"PASV error: %s", buf + 4);		return FALSE;	}	fd_data = xconnect_ftpdata(sftp , buf);	if (ftpcmd(sftp,"SIZE ", server_path, sftp->control_stream, buf) == 213) {		unsigned long value = filesize;		if (safe_strtoul(buf + 4, &value)){			 fprintf(stderr,"SIZE error: %s", buf + 4);             return FALSE;		}		filesize = value;	}	if ((local_path[0] == '-') && (local_path[1] == '\0')) {		fd_local = STDOUT_FILENO;		do_continue = 0;	}	if (do_continue) {		struct stat sbuf;		if (lstat(local_path, &sbuf) < 0) {			fprintf(stderr,"fstat()\n");			return FALSE;		}		if (sbuf.st_size > 0) {			beg_range = sbuf.st_size;		} else {			do_continue = 0;		}	}	if (do_continue) {		sprintf(buf, "REST %ld", (long)beg_range);		if (ftpcmd(sftp,buf, NULL, sftp->control_stream, buf) != 350) {			do_continue = 0;		} else {			filesize -= beg_range;		}	}	if (ftpcmd(sftp,"RETR ", server_path, sftp->control_stream, buf) > 150) {		fprintf(stderr,"RETR error: %s\n", buf + 4);	}	/* only make a local file if we know that one exists on the remote server */	if (fd_local == -1) {		if (do_continue) {			fd_local = bb_xopen(local_path, O_APPEND | O_WRONLY);		} else {			fd_local = bb_xopen(local_path, O_CREAT | O_TRUNC | O_WRONLY);		}	}	/* Copy the file */	if (bb_copyfd_size(fd_data, fd_local, filesize) == -1) {		return FALSE;	}	/* close it all down */	close(fd_data);	if (ftpcmd(sftp,NULL, NULL, sftp->control_stream, buf) != 226) {		fprintf(stderr,"ftp error: %s", buf + 4);		return FALSE;	}	//ftpcmd(sftp,"QUIT", NULL, control_stream, buf);	return(TRUE);}int bin(SimpleFTP *sftp ){	char buf[64];  return (ftpcmd(sftp,"TYPE I", NULL, sftp->control_stream ,buf) == 200);}int ascii(SimpleFTP *sftp ){ 	char buf[64];  return (ftpcmd(sftp,"TYPE A", NULL, sftp->control_stream ,buf) == 200);}static int  xconnect(const struct sockaddr_in *s_addr){	int s = socket(AF_INET, SOCK_STREAM, 0);	if (connect(s, (const struct sockaddr *)s_addr, sizeof(struct sockaddr_in)) < 0)	{		       printf("Unable to connect to remote host (%s)",				inet_ntoa(s_addr->sin_addr));	}	return s;} static int ftpcmd(SimpleFTP *sftp,const char *s1, const char *s2, FILE *stream, char *buf){   	if (verbose_flag && s1 && s2) {		       fprintf(stdout ,"cmd %s%s\n", s1, s2);	}		else if(verbose_flag && s1 ){			   fprintf(stdout ,"cmd %s\n", s1);		}	if (s1) {		if (s2) {			fprintf(stream, "%s%s\n", s1, s2);		} else {			fprintf(stream, "%s\n", s1);		}	}	do {		char *buf_ptr;		if (fgets(buf, 510, stream) == NULL) {		         printf("fgets()");		}		buf_ptr = strstr(buf, "\r\n");		if (buf_ptr) {			*buf_ptr = '\0';		}	} while (! isdigit(buf[0]) || buf[3] != ' ');    if( verbose_flag){		fprintf(stdout,"%s\n",buf);	}	 sprintf(sftp->reply,"%s",buf);	return atoi(buf);}static int xconnect_ftpdata(SimpleFTP *sftp ,const char *buf){	char *buf_ptr;	unsigned short port_num;	buf_ptr = strrchr(buf, ',');	*buf_ptr = '\0';	port_num = atoi(buf_ptr + 1);	buf_ptr = strrchr(buf, ',');	*buf_ptr = '\0';	port_num += atoi(buf_ptr + 1) * 256;	sftp->s_in.sin_port=htons(port_num);	return(xconnect(&(sftp->s_in)));}static int bb_xopen(const char *pathname, int flags){	int ret;	ret = open(pathname, flags, 0777);	if (ret == -1) {		printf("%s", pathname);	}	return ret;}/* If size is 0 copy until EOF */static size_t bb_full_fd_action(int src_fd, int dst_fd, const size_t size){	size_t read_total = 0;	RESERVE_CONFIG_BUFFER(buffer,BUFSIZ);	while ((size == 0) || (read_total < size)) {		size_t read_try;		ssize_t read_actual; 		if ((size == 0) || (size - read_total > BUFSIZ)) {			read_try = BUFSIZ;		} else {			read_try = size - read_total;		}		read_actual = safe_read(src_fd, buffer, read_try);		if (read_actual > 0) {			if ((dst_fd >= 0) && (bb_full_write(dst_fd, buffer, (size_t) read_actual) != read_actual)) {				printf("write error! \n");	/* match Read error below */				break;			}		}		else if (read_actual == 0) {			if (size) {				printf("Unable to read all data");			}			break;		} else {			/* read_actual < 0 */			printf("Read error");			break;		}		read_total += read_actual;	}	RELEASE_CONFIG_BUFFER(buffer);	return(read_total);}static ssize_t safe_read(int fd, void *buf, size_t count){	ssize_t n;	do {		n = read(fd, buf, count);	} while (n < 0 && errno == EINTR);	return n;}static ssize_t bb_full_write(int fd, const void *buf, size_t len){	ssize_t cc;	ssize_t total;	total = 0;	while (len > 0) {		cc = safe_write(fd, buf, len);		if (cc < 0)			return cc;		/* write() returns -1 on failure. */		total += cc;		buf = ((const char *)buf) + cc;		len -= cc;	}	return total;}static ssize_t safe_write(int fd, const void *buf, size_t count){	ssize_t n;	do {		n = write(fd, buf, count);	} while (n < 0 && errno == EINTR);	return n;}static int safe_strtoul(char *arg, unsigned long* value){	char *endptr;	int errno_save = errno;	assert(arg!=NULL);	errno = 0;	*value = strtoul(arg, &endptr, 0);	if (errno != 0 || *endptr!='\0' || endptr==arg) {		return 1;	}	errno = errno_save;	return 0;}static int bb_copyfd_size(int fd1, int fd2, const off_t size){	if (size) {		return(bb_full_fd_action(fd1, fd2, size));	}	return(0);}static void setError(SimpleFTP *sftp ,char * errStr){  if (errStr)  {	  int size = strlen(errStr);	  strncpy(sftp->error ,errStr ,size);	  sftp->error[size] = '\0';  }}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丁香激情综合国产| 成人午夜av影视| 亚洲精品videosex极品| 一区精品在线播放| 中文字幕在线一区免费| 国产精品国产三级国产aⅴ中文| 欧美videofree性高清杂交| 欧美日本乱大交xxxxx| 欧美三级日韩三级国产三级| 欧美人成免费网站| 精品99999| 国产精品素人视频| 亚洲无线码一区二区三区| 无码av中文一区二区三区桃花岛| 日韩精品成人一区二区在线| 麻豆精品国产91久久久久久| 国产美女在线观看一区| jvid福利写真一区二区三区| 在线观看视频一区二区| 91精品国产色综合久久不卡蜜臀| 精品乱码亚洲一区二区不卡| 中文字幕欧美日韩一区| 一区二区三区不卡在线观看| 日韩精品免费视频人成| 精品中文字幕一区二区| 91网上在线视频| 日韩欧美久久一区| 久久久国际精品| 亚洲一级在线观看| 国产毛片精品国产一区二区三区| 色婷婷激情久久| 精品免费一区二区三区| 亚洲欧美日韩国产一区二区三区 | 成人性生交大片免费看中文网站 | 一区二区三区精品| 老司机午夜精品| 91亚洲国产成人精品一区二三| 欧美私模裸体表演在线观看| 337p日本欧洲亚洲大胆精品| 亚洲人成网站精品片在线观看| 久久精品国产秦先生| 91久久奴性调教| 国产情人综合久久777777| 亚洲bt欧美bt精品777| 成人免费视频一区| 日韩免费一区二区三区在线播放| 亚洲欧美一区二区在线观看| 国内外精品视频| 欧美放荡的少妇| 亚洲日本va午夜在线电影| 国产一区二区电影| 日韩欧美中文一区| 亚洲在线观看免费视频| av成人免费在线| 久久亚洲私人国产精品va媚药| 天天操天天综合网| 精品视频一区二区三区免费| 国产精品污污网站在线观看| 国产一区二区在线观看免费| 日韩视频在线一区二区| 日日噜噜夜夜狠狠视频欧美人 | 亚洲一级电影视频| 91免费版在线看| 欧美高清在线一区二区| 国产精品一线二线三线| 精品成人在线观看| 美女mm1313爽爽久久久蜜臀| 欧美精品粉嫩高潮一区二区| 亚洲一区二区三区视频在线播放| 波多野结衣精品在线| 亚洲国产精品传媒在线观看| 成人做爰69片免费看网站| 国产亚洲精品aa| 国产成人免费高清| 国产精品视频一二| av爱爱亚洲一区| 亚洲精品乱码久久久久久| 一本大道av一区二区在线播放| 国产精品第五页| 色婷婷亚洲婷婷| 亚洲chinese男男1069| 日韩一区二区三区三四区视频在线观看 | 久久精品久久综合| 精品日韩在线观看| 国产乱码精品一区二区三区忘忧草 | 欧美日本一区二区在线观看| 亚洲国产人成综合网站| 欧美午夜不卡在线观看免费| 人禽交欧美网站| 国产亚洲一区字幕| 日本韩国精品在线| 亚洲国产精品久久久久秋霞影院| 666欧美在线视频| 激情偷乱视频一区二区三区| 国产日韩欧美精品一区| 色94色欧美sute亚洲13| 午夜激情一区二区| 久久综合狠狠综合久久综合88| 成人精品鲁一区一区二区| 一区二区三区美女视频| 欧美一卡二卡三卡四卡| 成人激情小说乱人伦| 一区二区三区四区精品在线视频| 欧美精品在线一区二区三区| 国产一区二区三区免费播放 | 日韩精品午夜视频| 国产调教视频一区| 欧美日韩精品欧美日韩精品一综合| 麻豆精品久久精品色综合| 最好看的中文字幕久久| 日韩欧美亚洲另类制服综合在线| www.一区二区| 蜜桃视频一区二区三区在线观看| 国产精品免费网站在线观看| 欧美美女黄视频| 成人av集中营| 国内精品第一页| 亚洲va在线va天堂| 一区二区中文字幕在线| 欧美精品一区二区三区很污很色的 | 粉嫩av亚洲一区二区图片| 亚洲亚洲精品在线观看| 欧美激情综合五月色丁香| 欧美一区二区在线播放| 一本色道久久综合精品竹菊| 国产精品一二二区| 日韩av网站在线观看| 亚洲女同一区二区| 国产精品乱码久久久久久| 日韩欧美国产三级电影视频| 欧美三级日韩三级国产三级| 成人国产视频在线观看| 国内精品久久久久影院一蜜桃| 午夜精品视频在线观看| 亚洲人成伊人成综合网小说| 日本一区二区三区四区| 日韩精品中文字幕一区| 欧美精品一级二级三级| 欧洲在线/亚洲| 91蝌蚪porny九色| 成人午夜视频在线观看| 国产98色在线|日韩| 激情综合色综合久久| 免费成人av在线| 免费在线观看一区| 免费在线观看视频一区| 免费观看30秒视频久久| 青青草原综合久久大伊人精品优势| 亚洲午夜久久久| 亚洲图片欧美一区| 亚洲成人第一页| 亚洲在线中文字幕| 五月天激情小说综合| 日日骚欧美日韩| 久久超级碰视频| 国产精品一区二区久久精品爱涩| 美女看a上一区| 激情欧美日韩一区二区| 国产毛片精品国产一区二区三区| 美国欧美日韩国产在线播放| 另类小说欧美激情| 精品一区二区久久久| 国产呦精品一区二区三区网站| 久久99久久久久久久久久久| 国内成人精品2018免费看| 国产成人一区二区精品非洲| 成人精品鲁一区一区二区| 91小视频在线| av日韩在线网站| 欧美日韩国产综合一区二区 | 欧美高清视频在线高清观看mv色露露十八 | 欧美三级电影在线观看| 91.com视频| 国产婷婷色一区二区三区四区 | 亚洲午夜一区二区| 免费观看久久久4p| 成人精品国产福利| 欧美在线999| 久久人人97超碰com| 亚洲人成网站精品片在线观看| 天天射综合影视| 国产91在线观看| 91精品综合久久久久久| 日本一区二区成人| 日韩黄色免费网站| 成人18视频日本| 日韩欧美国产麻豆| 亚洲精品免费在线播放| 久久精品久久综合| 欧美亚洲禁片免费| 久久综合av免费| 五月开心婷婷久久| 99在线视频精品| 欧美成人高清电影在线| 亚洲六月丁香色婷婷综合久久 | 久久久不卡网国产精品一区| 亚洲国产视频直播| 国产成人99久久亚洲综合精品| 欧美日韩黄色影视| 国产精品久久久久7777按摩|