📄 fileclient.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 + -