网络编程:服务端处理多个客户端----多进程实现、两次fork避免僵尸进程

本文探讨了在网络编程中,如何使用多进程来处理服务端对多个客户端的连接请求。通过两次fork操作,有效地避免了僵尸进程的产生。服务端在监听到客户端连接后,由子进程与客户端进行交互,客户端输入整数,服务端返回其二进制表示,输入0则客户端退出。
摘要由CSDN通过智能技术生成

涉及到一些网络编程的基本概念,这里不做解释。

重点集中在用多进程实现,并且两次fork避免僵尸进程。主进程负责监听,孙进程负责与客户端交流。

实现的功能很简单,客户端连接成功后,输入一个整数,服务端返回它的二进制形式。客户端输入0,则主动退出。

服务端代码:

#include <sys/types.h>  
#include <sys/socket.h>  
#include <stdio.h>  
#include <unistd.h>  
#include <string.h>  
#include <arpa/inet.h>  
#include <signal.h>  
#include <sys/wait.h>  
#include <stdlib.h>
  
#define PORT 6666  
#define SIZE 50  
  
int Create_socket()         //创建套接字和初始化以及监听函数  
{  
    int listen_socket = socket(AF_INET, SOCK_STREAM, 0);      //创建一个套接字    
    if(listen_socket == -1)  
    {  
        perror("socket");  
        return -1;  
    }  
    struct sockaddr_in addr;  
    bzero(&addr,sizeof(addr));  
      
    addr.sin_family = AF_INET;  //Internet地址族  
    addr.sin_port = htons(PORT);  //端口号,htons将主机字节序转为网
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值