嵌入式学习——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

相关推荐
爱看大明王朝15662 小时前
磁件学习-磁性元器件的极限计算
笔记·学习
东风破1373 小时前
DM8达梦共享存储集群DSC搭建步骤
数据库·学习·dm达梦数据库
星幻元宇VR3 小时前
VR科普大空间:沉浸式公共教育新模式
科技·学习·安全·vr·虚拟现实
笨鸟先飞的橘猫6 小时前
MMO游戏中的“跨服团队副本”匹配与状态同步系统
分布式·学习·游戏·lua·skynet
Oflycomm6 小时前
工业以太网四大主流协议(EtherCAT/PROFINET/EtherNet/IP/Modbus)技术参数深度对比
网络·网络协议·tcp/ip·欧飞信·plc模组
yong99906 小时前
C# 实时查看硬件使用率(CPU 内存 硬盘 网络)
开发语言·网络·c#
kobesdu6 小时前
【ROS2实战笔记-18】ROS2 通信的隐秘控制:DDS 配置参数如何决定系统性能
网络·人工智能·笔记·机器人·开源·ros·人形机器人
雨落在了我的手上7 小时前
如何学习java?
java·开发语言·学习
wangl_927 小时前
Modbus RTU 与 Modbus TCP 深入指南-现代替代协议
网络·网络协议·tcp/ip·tcp·modbus·rtu
吃好睡好便好8 小时前
汽车基本组成
学习·汽车