嵌入式学习——3——TCP并发(未完成)

1、多进程实现TCP并发

复制代码
//定义信号处理函数
void handler(int signo)
{
    if(signo == SIGCHLD)
    {
        // 回收所有的僵尸进程
        while(waitpid(-1, NULL, WNOHANG) != 0);    
    }
}

int main(){
    //将SIGCHLD信号绑定到信号处理函数中
    signal(SIGCHLD, handler);

    sfd = socket();           //创建用于通信的套接字文件描述符
    bind();                      //绑定ip地址和端口号
    listen();                 //将套接字设置成被动监听状态

    while(1) {
        newfd = accept();             //阻塞等待客户端连接请求,并为其创建一个新的用于通信的套接字问津描述符
        pid = fork();             //创建子进程用于处理客户端
        if(pid > 0) {
            //父进程
            close(newfd);  
  
        }elseif(pid == 0) {
            // 子进程
            //跟当前客户端进行通信
            close(sfd);           //关闭sfd
            recv();              //阻塞读取消息
            send();              //发送消息
            close(newfd);                //关闭套接字
            exit();                 //退出进程
        }
    }
    close(sfd);                      //关闭监听
    return 0; 
}

2、多线程实现TCP并发

复制代码
//定义线程体函数
void *deal_cli_msg(void *arg)
{
        //跟当前客户端进行通信
    recv();              //阻塞读取消息
    send();              //发送消息
    close(newfd);                //关闭套接字
    pthread_exit(NULL);            //退出线程
}

int main(){
    sfd = socket();           //创建用于通信的套接字文件描述符
    bind();                      //绑定ip地址和端口号
    listen();                 //将套接字设置成被动监听状态

    while(1) {
        newfd = accept();             //阻塞等待客户端连接请求,并为其创建一个新的用于通信的套接字问津描述符
        pthread_create(&tid, NULL, deal_cli_msg, &info);         //创建分支线程用于跟客户端进行通信
        pthread_detach(tid);                      //将线程设置成分离态
    }
    close(sfd);                      //关闭监听
    return 0;
}

3、select

4、epoll

相关推荐
姓蔡小朋友22 分钟前
Redis网络I/O模型
网络·数据库·redis
qq_3814549930 分钟前
Python学习技巧
开发语言·python·学习
量子物理学33 分钟前
openssl自建CA并生成自签名SSL证书
网络·网络协议·ssl
im_AMBER34 分钟前
算法笔记 18 二分查找
数据结构·笔记·学习·算法
成空的梦想38 分钟前
除了加密,它还能验明正身:SSL如何防范网络钓鱼?
网络·https·ssl
van久1 小时前
.Net Core 学习: Razor Pages -- EF Core简介
学习·.netcore
以孝治家行动2 小时前
学习无止境 行动在进行—以孝治家义工暖心守护独居老人
学习·以孝治家
honsor2 小时前
精准监测 + 实时传输!网络型温湿度传感器,筑牢环境数据管理防线
网络·物联网
Radan小哥3 小时前
Docker学习笔记—day011
笔记·学习·docker
星域智链3 小时前
AI加持日常小节日:让每一份心意都精准升温✨
人工智能·科技·学习·生活·节日