⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 socket_server.c

📁 Linux大学上机源码学习
💻 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,5);  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);    if(fork()==0){      close(server_sockfd);      doit(client_sockfd);      close(client_sockfd);      exit(0);    }    else      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 + -