multi_io 一连接一线程

每连接一个客户端,就创建一个线程
所谓c10k问题,指的是:服务器如何支持10k个并发连接,也就是concurrent 10000 connection(这也是c10k这个名字的由来)。

//函数类型 * client_thread 
//int clientfd=*(int*)arg
void *client_thread(void * arg){
      int clientfd=*(int*)arg;
      while(1){
           char buffer[128];
           int count=recv(clientfd,buffer,128,0);
           if(count==0) break;
           send(clientfd,buffer,count,0);
           printf("buffer=%s",buffer);
      }
      close(clientfd);
}

int main()
{
    int sockfd=socket(AF_INET,SOCK_STREAM,0);

    struct sockaddr_in serveraddr;
    memset(&serveraddr,0,sizeof(struct sockaddr));

    serveraddr.sin_family=AF_INET;
    serveraddr.sin_addr.s_addr=htonl(INADDR_ANY);
    serveraddr.sin_port=htons(2048);

    if(-1==bind(sockfd,(struct sockaddr*)&serveraddr,sizeof(struct sockaddr))){
         perror("bind");
         return -1;    
    }
    
    listen(sockfd,10);

    while(1){
         struct sockaddr_in clientaddr;
         socklen_t len=sizeof(clientaddr);
         int clientfd=accept(sockfd,(struct sockaddr*)&clientaddr,&len);
         printf("accept");

        pthread thid;
        pthread_create(&thid,NULL,client_thread,&clientfd);
    }

    getchar();

}
posted @   流光最璀璨i  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示