📄 server_send_receive.c
字号:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <fcntl.h>#include <sys/socket.h>#include <netinet/in.h>#include <errno.h>#include "server_send_receive.h"#include "input_check.h"#define MAXBUF 1024#define FNAMELEN 100int server_send_receive(int connfd){ int fd,n; char buf[MAXBUF]; char f_name[FNAMELEN]; bzero(buf,MAXBUF); bzero(f_name,FNAMELEN); read(connfd,buf,MAXBUF); if(strcmp(buf,"CTS")==0){ /**** client to server ****/ write(connfd,"RTR",8); /**** Ready To Read *******/ n=read(connfd, f_name, FNAMELEN); buf[n]='\0'; if(server_checkDIR(f_name)!=0){ /**** check the DIR *******/ write(connfd,"DERR",4); return 1; } write(connfd,"OK",2); fd = open(f_name,O_WRONLY | O_CREAT | O_TRUNC, 0644); if(fd<0){ perror("fail to open"); return 1; } while((n=read(connfd,buf,MAXBUF))>0){ write(fd,buf,n); } close(fd); } else if(strcmp(buf,"STC")==0){ /**** server to client ****/ write(connfd,"RTS",8); /**** Ready To Send *******/ n=read(connfd, f_name, FNAMELEN); buf[n]='\0'; if(server_checkfile(f_name)!=0){ /**** check the filename **/ write(connfd,"FERR",4); return 1; } write(connfd, "OK", 2); read(connfd, buf, MAXBUF); bzero(buf, MAXBUF); fd = open(f_name,O_RDONLY); if(fd<0){ perror("fail to open"); return 1; } while((n=read(fd,buf,MAXBUF))>0){ write(connfd,buf,n); } close(fd); } return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -