p12-13.c

来自「SUN Solaris8平台下进程间通信」· C语言 代码 · 共 47 行

C
47
字号
#include <sys/types.h>#include <sys/socket.h>#include <stdio.h>#include <netinet/in.h>#include <signal.h>#include <unistd.h>#include "err_exit.h"int make_socket(unsigned short int port);void doit(int);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);                /* 睡眠5秒仅为了演示需要 */    buf[n] = 0;    write(client_sockfd, buf, n);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?