为了账号安全,请及时绑定邮箱和手机立即绑定

作业社区

探索学习新天地,共享知识资源!

0 提交作业
0 布置作业
0 满分作业
得分 100
学习任务

SamstagBaron 的学生作业:

#include"file_handle.h" #include"debug.h" #include #include int recv_protocol_head(int cfd,file_protocol_t* head){ ssize_t res; ssize_t received = 0; char*buffer = (char*)head; while(1){ res = recvTcp(cfd,buffer+received,sizeof(file_protocol_t)-received); if(res==-1){ DEBUF_INFO("[ERROR]: Received Failed"); return -1; } else if(res==0){ DEBUF_INFO("[ERROR]: Client poweroff, Received Failed"); return -1; }else{ received+=res; } if(received==sizeof(file_protocol_t)){ break; } } return 0; } int getFile(int cfd,const char*filename,size_t filesize){ char buffer[100]={0}; int fd = open(filename,O_WRONLY|O_CREAT|O_TRUNC,0644); if(fd==-1){ DEBUF_INFO("[ERROR]: Open File %s %s",filename,strerror(errno)); return -1; } ssize_t rbytes = 0,wbytes = 0,received = 0; while(1){ rbytes = recvTcp(cfd,buffer,100); if(rbytes==-1){ DEBUF_INFO("[ERROR]: Received Failed"); close(fd); return -1; } else if(rbytes==0){ DEBUF_INFO("[ERROR]: Client poweroff, Received Failed"); close(fd); return -1; }else{ received+=rbytes; wbytes = write(fd,buffer,rbytes); if(wbytes!=rbytes){ DEBUF_INFO("[ERROR]: Write File %s %s",filename,strerror(errno)); close(fd); return -1; } } if(received==filesize){ close(fd); return 0; } } return 0; } int RecvFileFromClient(int cfd){ file_protocol_t head; int res = recv_protocol_head(cfd,&head); int received = getFile(cfd,head.filename,head.file_size); return received; } int send_protocol_head(const char* filename,int sockfd){ file_protocol_t head; strcpy(head.filename,filename); int fd = open(filename,O_RDONLY); if(fd==-1){ DEBUF_INFO("[ERROR]: Open File %s %s",filename,strerror(errno)); return -1; } head.file_size = lseek(fd,0,SEEK_END); close(fd); int res = sendTcp(sockfd,(const void* )&head,sizeof(head)); return res==sizeof(head)?0:-1; } int UpLoadFileFromClient(int cfd,const char *filename){ int res = send_protocol_head(filename,cfd); if(res==-1){ return -1; } char buffer[1024] = {0}; int fd = open(filename,O_RDONLY); if(fd==-1){ DEBUF_INFO("[ERROR]: Open File %s %s",filename,strerror(errno)); return -1; } ssize_t rbytes = 0,sbytes = 0; while(1){ rbytes = read(fd,buffer,sizeof(buffer)); if(rbytes==0){ break; }else if(rbytes

得分 100
学习任务

SamstagBaron 的学生作业:

#include"file_handle.h" #include"debug.h" #include #include int recv_protocol_head(int cfd,file_protocol_t* head){ ssize_t res; ssize_t received = 0; char*buffer = (char*)head; while(1){ res = recvTcp(cfd,buffer+received,sizeof(file_protocol_t)-received); if(res==-1){ DEBUF_INFO("[ERROR]: Received Failed"); return -1; } else if(res==0){ DEBUF_INFO("[ERROR]: Client poweroff, Received Failed"); return -1; }else{ received+=res; } if(received==sizeof(file_protocol_t)){ break; } } return 0; } int getFile(int cfd,const char*filename,size_t filesize){ char buffer[100]={0}; int fd = open(filename,O_WRONLY|O_CREAT|O_TRUNC,0644); if(fd==-1){ DEBUF_INFO("[ERROR]: Open File %s %s",filename,strerror(errno)); return -1; } ssize_t rbytes = 0,wbytes = 0,received = 0; while(1){ rbytes = recvTcp(cfd,buffer,100); if(rbytes==-1){ DEBUF_INFO("[ERROR]: Received Failed"); close(fd); return -1; } else if(rbytes==0){ DEBUF_INFO("[ERROR]: Client poweroff, Received Failed"); close(fd); return -1; }else{ received+=rbytes; wbytes = write(fd,buffer,rbytes); if(wbytes==-1){ DEBUF_INFO("[ERROR]: Write File %s %s",filename,strerror(errno)); close(fd); return -1; } } if(received==filesize){ close(fd); return 0; } } return 0; } int RecvFileFromClient(int cfd){ file_protocol_t head; int res = recv_protocol_head(cfd,&head); int received = getFile(cfd,head.filename,head.file_size); return received; } int send_protocol_head(const char* filename,int sockfd){ file_protocol_t head; strcpy(head.filename,filename); int fd = open(filename,O_RDONLY); if(fd==-1){ DEBUF_INFO("[ERROR]: Open File %s %s",filename,strerror(errno)); return -1; } head.file_size = lseek(fd,0,SEEK_END); close(fd); int res = sendTcp(sockfd,(const void* )&head,sizeof(head)); return res==sizeof(head)?0:-1; }

得分 100
学习任务

SamstagBaron 的学生作业:

#include"file_handle.h" #include"debug.h" #include #include int recv_protocol_head(int cfd,file_protocol_t* head){ ssize_t res; ssize_t received = 0; char*buffer = (char*)head; while(1){ res = recvTcp(cfd,buffer+received,sizeof(file_protocol_t)-received); if(res==-1){ DEBUF_INFO("[ERROR]: Received Failed"); return -1; } else if(res==0){ DEBUF_INFO("[ERROR]: Client poweroff, Received Failed"); return -1; }else{ received+=res; } if(received==sizeof(file_protocol_t)){ break; } } return 0; } int getFile(int cfd,const char*filename,size_t filesize){ char buffer[100]={0}; int fd = open(filename,O_WRONLY|O_CREAT|O_TRUNC,0644); if(fd==-1){ DEBUF_INFO("[ERROR]: Open File %s %s",filename,strerror(errno)); } ssize_t rbytes = 0,wbytes = 0,received = 0; while(1){ rbytes = recvTcp(cfd,buffer,100); if(rbytes==-1){ DEBUF_INFO("[ERROR]: Received Failed"); close(fd); return -1; } else if(rbytes==0){ DEBUF_INFO("[ERROR]: Client poweroff, Received Failed"); close(fd); return -1; }else{ received+=rbytes; wbytes = write(fd,buffer,rbytes); if(wbytes==-1){ DEBUF_INFO("[ERROR]: Write File %s %s",filename,strerror(errno)); close(fd); return -1; } } if(received==filesize){ close(fd); return 0; } } return 0; } int RecvFileFromClient(int cfd){ file_protocol_t head; int res = recv_protocol_head(cfd,&head); int received = getFile(cfd,head.filename,head.file_size); return received; }

得分 100
学习任务

SamstagBaron 的学生作业:

tcp c file #include #include #include #include"tcptool.h" const int BLOCKSOCK = 100; int createTcpServer(const char* ip,short port){ int sockfd; ssize_t rbytes = 0,sbytes = 0; char buffer[1024] = {0}; sockfd = socket(AF_INET,SOCK_STREAM,0); if(sockfd==-1){ perror("error for socket"); return -1; } struct sockaddr_in addr; bzero(&addr,sizeof(addr)); addr.sin_family = AF_INET; addr.sin_port = htons(port); addr.sin_addr.s_addr = inet_addr(ip); int res = bind(sockfd,(const struct sockaddr*)&addr,sizeof(addr)); if(res==-1){ perror("error for bind"); return -1; } res = listen(sockfd,BLOCKSOCK); if(res==-1){ perror("error for listen"); return -1; } return sockfd; } int connectToServer(const char* ip,short port){ int sockfd; sockfd = socket(AF_INET,SOCK_STREAM,0); if(sockfd==-1){ perror("error for socket"); return -1; } struct sockaddr_in addr; bzero(&addr,sizeof(addr)); addr.sin_family = AF_INET; addr.sin_port = htons(port); addr.sin_addr.s_addr = inet_addr(ip); int res = connect(sockfd,(const struct sockaddr*)&addr,sizeof(addr)); if(res==-1){ perror("error for connet"); return -1; } return sockfd; } int listenToClient(int sockfd, struct sockaddr_in* addr){ int cfd; socklen_t len = sizeof(struct sockaddr); cfd = accept(sockfd,(struct sockaddr*) addr,&len); if(cfd==-1){ perror("error for accept"); return -1; } return cfd; } void show_accepted_client(struct sockaddr_in* addr){ printf("Ip: %s \n",inet_ntoa(addr->sin_addr)); printf("Port: %d \n",ntohs(addr->sin_port)); } ssize_t sendTcp(int sockfd,const void *buf,size_t len){ return send(sockfd,buf,len,0); } ssize_t recvTcp(int sockfd, void *buf,size_t len ){ return recv(sockfd,buf,len,0); } tcp makefile .PHONY: all clean SRC=$(wildcard *.c) OBJ=$(patsubst %.c,%.o,$(SRC)) all:$(OBJ) $(OBJ):%.o:%.c @$(CC) $(C_FLAG) $(INCLUDE_DIR) -c $^ -o $(OBJ_DIR)/$@ server file #include"tcptool.h" #include"debug.h" #include #include"stdlib.h" int main(int argc,char *argv[]){ if(argc!=3){ fprintf(stderr,"usage: \n",argv[0]); } int sockfd,sockcfd; sockfd = createTcpServer(argv[1],atoi(argv[2])); if(sockfd==-1){ DEBUF_INFO("create Tcp server Error"); } struct sockaddr_in addr; bzero(&addr,sizeof(addr)); sockcfd = listenToClient(sockfd,&addr); if(sockcfd==-1){ exit(EXIT_FAILURE); } show_accepted_client(&addr); close(sockcfd); close(sockfd); return 0; } server makefile .PHONY: all clean SRC=$(wildcard *.c) OBJ=$(patsubst %.c,%.o,$(SRC)) all:$(OBJ) server $(OBJ):%.o:%.c @$(CC) $(C_FLAG) $(INCLUDE_DIR) -c $^ -o $@ server:$(wildcard $(OBJ_DIR)/*.o) $(OBJ) @$(CC) $(C_FLAG) $(INCLUDE_DIR) $^ -o $(BIN_DIR)/$(SERVER) clean: @rm *.o client file #include"tcptool.h" #include"debug.h" #include #include"stdlib.h" int main(int argc,char *argv[]){ if(argc!=3){ fprintf(stderr,"usage: \n",argv[0]); } int sockfd; sockfd = connectToServer(argv[1],atoi(argv[2])); if(sockfd==-1){ DEBUF_INFO("create Tcp server Error"); } struct sockaddr_in addr; bzero(&addr,sizeof(addr)); close(sockfd); return 0; } client makefile .PHONY: all clean SRC=$(wildcard *.c) OBJ=$(patsubst %.c,%.o,$(SRC)) all:$(OBJ) server $(OBJ):%.o:%.c @$(CC) $(C_FLAG) $(INCLUDE_DIR) -c $^ -o $@ server:$(wildcard $(OBJ_DIR)/*.o) $(OBJ) @$(CC) $(C_FLAG) $(INCLUDE_DIR) $^ -o $(BIN_DIR)/$(CLIENT) clean: rm *.o

微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号