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 + -
显示快捷键?