不同线程中使用accept()函数时出现CBadfiledescriptor问题。
创始人
2025-01-09 21:30:17
0

该问题可能是由于多个线程同时操作同一 个套接字(socket)引起的。此时一个线程关闭了套接字,而另一个线程仍然在尝试使用该套接字,从而导致Bad file descriptor错误。解决方法是在每个线程中创建和使用一个单独的套接字,而不是共享同一个套接字。

以下是一个使用线程池创建多个线程,每个线程都处理单独的连接的代码示例:


#define MAX_THREADS 10

void* worker(void* arg) {
    int* connfd = (int*) arg;
    // 使用单独的套接字处理连接请求
    // ...
    close(*connfd);
    free(connfd);
    return NULL;
}

int main() {
    int listenfd, connfd, clientlen;
    struct sockaddr_in clientaddr;
    pthread_t threads[MAX_THREADS];
    pthread_attr_t attr;
    pthread_attr_init(&attr);
    pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
    listenfd = Open_listenfd(port);
    while (1) {
        clientlen = sizeof(clientaddr);
        connfd = Accept(listenfd, (struct sockaddr*)&clientaddr, &clientlen);
        // 在线程池中为新连接创建一个线程
        pthread_t tid;
        int *fdptr = malloc(sizeof(int));
        *fdptr = connfd;
        Pthread_create(&tid, &attr, worker, fdptr);
    }
    return 0;
}

相关内容

热门资讯

2分钟规律!掌中乐游戏中心辅助... 2分钟规律!掌中乐游戏中心辅助工具,传奇扑克辅助(详细透视辅助黑科技教程)是由北京得掌中乐游戏中心辅...
四分钟详情!决战十三水有没有外... 四分钟详情!决战十三水有没有外挂,微扑克发牌系统(详细透视辅助脚本教程);大神普及一款德州ai内幕,...
七分钟总结!中至棋牌有挂的吗,... 大家肯定在之前中至棋牌有挂的吗或者中至棋牌有挂的吗中玩过七分钟总结!中至棋牌有挂的吗,hm3德州辅助...
6分钟教学!微信天天斗地主有挂... 6分钟教学!微信天天斗地主有挂的吗,wpk辅助(详细透视辅助挂教程)1、这是跨平台的微信天天斗地主有...
8分钟教程!中至麻将助赢神器购... 8分钟教程!中至麻将助赢神器购买,德州ai辅助神器app(详细透视辅助app教程);中至麻将助赢神器...
十分钟教学!传送屋激k,微扑克... 【福星临门,好运相随】;十分钟教学!传送屋激k,微扑克有稳赢的打法(详细透视辅助黑科技教程);暗藏猫...
3分钟了解!微信小程序雀神辅助... WePoker透视辅助版本解析‌,3分钟了解!微信小程序雀神辅助器汇检测到吗,wpk微扑克真的有助辅...
七分钟总结!八闽13水有外挂吗... 七分钟总结!八闽13水有外挂吗,wepower德州辅助器(详细透视辅助器教程);大神普及一款德州ai...
两分钟透明!微信财神十三张辅助... 两分钟透明!微信财神十三张辅助器是真的吗,wepoke app系统规律(详细透视辅助软件教程)相信很...
4分钟教程!星悦陕西麻将神器,... WePoker透视辅助版本稳定性对比与推荐‌:4分钟教程!星悦陕西麻将神器,云扑克辅助器苹果版(详细...