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

📄 ftpcli.c

📁 一个ftp服务器程序
💻 C
字号:
#include	"ftpdaemon.h"char    ftplog_file[_POSIX_PATH_MAX];char    curr_time[80];int main(int argc, char **argv){	int			sockfd;	struct sockaddr_in	servaddr;	char			filename[80];	if ( argc != 3 ) {		printf("Usage : ftpcli <IP Address> <filename>\n");		exit ( 0 );	}	strcpy(filename, argv[2]);		sockfd = socket(AF_INET, SOCK_STREAM, 0);	bzero(&servaddr, sizeof(servaddr));	servaddr.sin_family = AF_INET;	servaddr.sin_port = htons(FTP_SERV_PORT);	servaddr.sin_addr.s_addr = inet_addr( argv[1] );	if (connect(sockfd, (void *)&servaddr, sizeof(servaddr))==-1) {		perror("connect()");		exit(-1);	}	get_file(sockfd, filename);		/* do it all */	close ( sockfd );	exit(0);}get_file(int sockfd, char *filename){	char Downname[80];	FILE *rcvfp;	char buffer[FILEBUF_SIZE];	int filelen;	int num, left, i, j, bytes;	char ack;	strcpy(Downname, "/tmp/TESTTEST");	if ( (rcvfp = fopen(Downname, "wb")) == NULL ) {		printf("Cannot open file [%s] to write\n", Downname);		return ;	}	if ( send_nbytes(sockfd, filename, NAMELEN) != E_SUCC ) {		fclose ( rcvfp );		printf("send_nbytes() fail\n");		return ;	}	if ( recv_nbytes(sockfd, buffer, _FILELEN_, -1) != E_SUCC ) {		fclose( rcvfp );		printf("recv_nbyters() fail\n");		return ;	}	filelen = atoi ( buffer );	if ( filelen <= 0 ) {		printf("Filelen < 0\n");		return ;	}	num  = filelen / FILEBUF_SIZE;	left = filelen % FILEBUF_SIZE;	for ( j=0; j<=num; j++) {		bytes = ( j == num ) ? left : FILEBUF_SIZE;		if ( bytes > 0 ) {			memset(buffer, 0, sizeof(buffer));			if ( recv_nbytes ( sockfd, buffer, bytes, -1) != E_SUCC ) {				ack = ACK_FAIL;				send_nbytes( sockfd, &ack, 1 );				fclose( rcvfp );				return ;			}			ack = ACK_SUCC;			if ( send_nbytes( sockfd, &ack, 1) != E_SUCC ) {				fclose( rcvfp );				return ;			}			if ( fwrite( buffer, bytes, 1, rcvfp ) != 1 ) {				printf("Fwrite error\n");				fclose( rcvfp );				return ;			}		}	}	printf("File get success...\n");}

⌨️ 快捷键说明

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