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

📄 fileclient.c~

📁 FTP的客户端与主机端程序源码
💻 C~
字号:
/*客户端,即要下载文件的机子端程序*//*****************************FileClient.c********************************/#include<stdio.h>#include<sys/types.h>#include<stdlib.h>#include<sys/fcntl.h>#include<sys/socket.h>#include<netinet/in.h>#include<netdb.h>#define command "clear"#include<errno.h>#include <string.h>#define BUFFER_SIZE 4096#define NAME_SIZE 200#define SERVER_PORT 1810int main(int argc,int *argv[]){   char buf[BUFFER_SIZE] ={0},file[NAME_SIZE]={0};   int target,ret;   register int bytes,sockfd;   struct sockaddr_in sin ;   struct hostent *hp;	long long filesize;	unsigned int filenum;	if(argc<2)	{		fprintf(stderr,"Please enter the server's hostIP!\n");		exit(1);	}   system(command);	//printf("the host name is:%s\n",argv[1]);	/*if((hp=gethostbyname(argv[1]))==NULL)	{		fprintf(stderr, "返回服务器地址信息错!!!\n");		exit(1);	}*/   while((hp=gethostbyname(argv[1]))!=NULL){if((sockfd = socket(AF_INET, SOCK_STREAM, 0 )) < 0)        {      fprintf(stderr, "获取SOCKET号失败!!!\n");      exit(2);        }   // memset((char*)&sin, '\0', sizeof(sin));   sin.sin_family = AF_INET;   sin.sin_port = htons(SERVER_PORT);   sin.sin_addr =*(struct in_addr*)hp->h_addr;	//printf("the s_addr is:%d\n",sin.sin_addr.s_addr);	bzero(&(sin.sin_zero),8);/*连接到服务器*/   if((ret = connect(sockfd, (struct sockaddr*)&sin, sizeof(sin))) == -1)        {      fprintf(stderr, "不能与服务器连接!!!\n");      exit(3);        }   memset(buf, 0, BUFFER_SIZE);   while(read(sockfd, file, sizeof(file)) < 0);          sprintf(buf, "%s_%s", "receive", file);   if((target=open(buf, O_WRONLY|O_CREAT|O_TRUNC,0644)) < 0)        {      perror("不能打开目标文件!!");      exit(4);        }          memset(buf, 0, BUFFER_SIZE);   while((bytes = read(sockfd, buf, sizeof(buf))) > 0)        {      write(target,buf,bytes);      memset(buf, 0, BUFFER_SIZE);        }   printf("接收文件成功!!!\n");   close(target);   close(sockfd);}  while((hp=gethostbyname(argv[1]))!=NULL){if((sockfd = socket(AF_INET, SOCK_STREAM, 0 )) < 0)        {      fprintf(stderr, "获取SOCKET号失败!!!\n");      exit(2);        }   // memset((char*)&sin, '\0', sizeof(sin));   sin.sin_family = AF_INET;   sin.sin_port = htons(SERVER_PORT);   sin.sin_addr =*(struct in_addr*)hp->h_addr;	//printf("the s_addr is:%d\n",sin.sin_addr.s_addr);	bzero(&(sin.sin_zero),8);/*连接到服务器*/   if((ret = connect(sockfd, (struct sockaddr*)&sin, sizeof(sin))) == -1)        {      fprintf(stderr, "不能与服务器连接!!!\n");      exit(3);        }   memset(buf, 0, BUFFER_SIZE);   while(read(sockfd, filesize, sizeof(long long)) < 0);	while(read(sockfd, filenum, sizeof(unsigned int))<0);       	printf("the filesize is:%ld\n",filesize);	printf("the filenum	is:%d\n",filenum);	close(sockfd);}}

⌨️ 快捷键说明

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