📄 server.c
字号:
//============================================================================// Name : server.cpp// Author : maduohe// Version :// Copyright : nercis// Description : Hello World in C, Ansi-style//============================================================================#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <unistd.h>#include <netdb.h>#define MAXSIZE 80#define MYPORT 3490#define BACKLOG 10#define BUFSIZE 100void str_ser(int sockfd);int main(void) { int sockfd,con_fd,ret; struct sockaddr_in my_addr; struct sockaddr_in their_addr; int sin_size = sizeof(struct sockaddr_in); //char *buf; int pid ; sockfd = socket(AF_INET,SOCK_STREAM,0); if(sockfd<0) { printf("error in socket."); exit(0); } //创建监听套接口 my_addr.sin_family = AF_INET; my_addr.sin_port = htons(MYPORT); my_addr.sin_addr.s_addr = htonl(INADDR_ANY); bzero(&(my_addr.sin_zero),8); ret = bind(sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr)); if(ret<0) { printf("error in binding"); } //绑定监听套接口 ret = listen(sockfd,BACKLOG); if(ret<0) { printf("error in listening"); exit(1); } //监听连接请求 while(1) { ///sin_size = sizeof(struct sockaddr_in); con_fd = accept(sockfd,(struct sockaddr*)&their_addr,(socklen_t*)&sin_size); if(con_fd<0) { printf("error in accept."); exit(1); } //创建新的连接 if((pid = fork()) == 0) { //子进程代码 close(sockfd); str_ser(con_fd); //接受并处理数据 close(con_fd); exit(0); } else { //父进程代码 close(con_fd); } } close(sockfd); exit(0); }void str_ser(int sockfd) { char recvs[MAXSIZE]; int n=0; while(1) { if((n = recv(sockfd,recvs,MAXSIZE,0)) == 0) { return; } send(sockfd,recvs,n,0); } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -