server_send_receive.c
来自「一个网络传输文件程序」· C语言 代码 · 共 67 行
C
67 行
#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 + =
减小字号Ctrl + -
显示快捷键?