📄 socket_nofork_server.c
字号:
#include <errno.h>#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <netdb.h>#include <arpa/inet.h>#include <stdlib.h>#include <netinet/in.h>#include <signal.h>void doit(int);int make_socket(unsigned short int port){ int sock; struct sockaddr_in name; sock=socket(AF_INET,SOCK_STREAM,0); if(sock<0){ printf("error is:%s",strerror(errno)); exit(0); } name.sin_family=AF_INET; name.sin_port=htons(port); name.sin_addr.s_addr=htonl(INADDR_ANY); if(bind(sock,(struct sockaddr *)&name,sizeof(name))<0){ printf("error is:%s",strerror(errno)); exit(0); } return sock;} int main(void){ int server_sockfd,client_sockfd; int server_len,client_len; struct sockaddr_in client_address; server_sockfd=make_socket(2003); listen(server_sockfd,22); signal(SIGCHLD,SIG_IGN); while(1){ printf("server waiting\n"); client_len=sizeof(client_address); client_sockfd=accept(server_sockfd,(struct sockaddr *)&client_address,&client_len); doit(client_sockfd); close(client_sockfd); }}void doit(client_sockfd){ char buf[255]; int n; n=read(client_sockfd,buf,sizeof(buf)); sleep(5); buf[n]=0; write(client_sockfd,buf,n);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -