📄 server.c
字号:
#include <sys/types.h>#include <sys/socket.h>#include <stdio.h>#include <stdlib.h>#include <sys/stat.h>#include <fcntl.h>#include <errno.h>#include <string.h>#include <unistd.h>#include <netinet/in.h>#include <pthread.h>#define SERVPORT 3333#define BACKLOG 10#define MAX_CONNECTED_NO 10#define MAXDATASIZE 80int main(){ struct sockaddr_in server_sockaddr,client_sockaddr; int sin_size,recvbytes; int sockfd,client_fd,c_client_fd; int ffd; int i; int ret; char recvbuf[MAXDATASIZE]; char buf[MAXDATASIZE]; if((sockfd = socket(AF_INET,SOCK_STREAM,0))==-1) { perror("socket"); exit(1); } printf("socket success!,sockfd=%d\n",sockfd); server_sockaddr.sin_family=AF_INET; server_sockaddr.sin_port=htons(SERVPORT); server_sockaddr.sin_addr.s_addr=INADDR_ANY; bzero(&(server_sockaddr.sin_zero),8); if(bind(sockfd,(struct sockaddr *)&server_sockaddr,sizeof(struct sockaddr))==-1) { perror("bind"); exit(1); } printf("bind success!\n"); if(listen(sockfd,BACKLOG)==-1) { perror("listen"); exit(1); } printf("listening....\n"); if((client_fd=accept(sockfd,(struct sockaddr *)&client_sockaddr,&sin_size))==-1) { perror("accept"); exit(1); } c_client_fd=client_fd; if((recvbytes=recv(client_fd,recvbuf,MAXDATASIZE,0))==-1) { perror("recv"); exit(1); } //printf("received a connection :%s\n",recvbuf); for(i=strlen(recvbuf);i>=0;i--) { recvbuf[i+2]=recvbuf[i]; } recvbuf[0]='.'; recvbuf[1]='/'; //printf("received a connection :%s\n",recvbuf); ffd=open(recvbuf,O_RDONLY|O_EXCL,0400); if(ffd==-1) { ret=send(client_fd,"file not exsit",15,0); printf("no file\n"); if(ret==-1) { perror("send"); exit(1); } return 0; } while(read(ffd,buf,80)) { ret=send(c_client_fd,buf,sizeof(buf),0); if(ret==-1) { perror("send file"); exit(1); } memset(buf,0,sizeof(buf)); } close(ffd); printf("file tansferred!\n"); close(sockfd); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -