news 2026/4/23 17:10:16

TCP服务器并发编程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
TCP服务器并发编程

这里写目录标题

  • 1,多线程TCP并发控制

1,多线程TCP并发控制

基于多线程的TCP服务器并发程序

#include<iostream>#include<netinet/in.h>#include<vector>#include<unistd.h>#include<arpa/inet.h>#include<sys/socket.h>#include<sys/select.h>#include<sys/time.h>#include<cstring>#include<sys/select.h>#include<pthread.h>using namespace std;#definePORT8080#defineMAX_CLIENTS20#defineBUFFER_SIZE1024#defineMAX512struct SockInfo{struct sockaddr_in addr;int fd;};struct SockInfo infos[512];void*working(void*arg);void*working(void*arg){struct SockInfo*pinfo=(struct SockInfo*)arg;char ip[32];//inet_ntop(AF_INET,&pinfo->addr.sin_addr.s_addr,ip,sizeof(ip));//ntohs(pinfo->addr.sin_port);while(true){char buffer[1024];int len=recv(pinfo->fd,buffer,sizeof(buffer),0);if(len>0){cout<<buffer<<endl;}elseif(len==0){cout<<"客户端已经断开连接"<<endl;break;}else{break;}}}intmain(){int serverfd=socket(AF_INET,SOCK_STREAM,0);sockaddr_in addr;addr.sin_addr.s_addr=INADDR_ANY;addr.sin_port=htons(PORT);addr.sin_family=AF_INET;socklen_t len=sizeof(addr);bind(serverfd,(sockaddr*)&addr,len);listen(serverfd,MAX_CLIENTS);for(int i=0;i<MAX;i++){infos[i].fd=-1;}while(true){struct SockInfo*pinfo;for(int i=0;i<MAX;i++){if(infos[i].fd==-1){pinfo=&infos[i];break;}}socklen_t tmplen=sizeof(pinfo->addr);int cfd=accept(serverfd,(struct sockaddr*)&pinfo->addr,&tmplen);if(cfd==-1){perror("accept");continue;}pinfo->fd=cfd;//创建子线程pthread_t tid;pthread_create(&tid,NULL,working,pinfo);pthread_detach(tid);}close(serverfd);}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 8:20:21

终极EPUB编辑指南:用Sigil快速制作专业电子书的完整方案

终极EPUB编辑指南&#xff1a;用Sigil快速制作专业电子书的完整方案 【免费下载链接】Sigil Sigil is a multi-platform EPUB ebook editor 项目地址: https://gitcode.com/gh_mirrors/si/Sigil 想要轻松创建精美的EPUB电子书吗&#xff1f;Sigil作为一款免费开源的跨平…

作者头像 李华
网站建设 2026/4/23 8:21:47

如何快速解锁Netgear路由器隐藏功能:新手完整指南

如何快速解锁Netgear路由器隐藏功能&#xff1a;新手完整指南 【免费下载链接】netgear_telnet Netgear Enable Telnet (New Crypto) 项目地址: https://gitcode.com/gh_mirrors/ne/netgear_telnet Netgear路由器除了提供基础的网络功能外&#xff0c;还隐藏着强大的Tel…

作者头像 李华
网站建设 2026/4/23 11:36:35

Bodymovin插件终极指南:如何将AE动画快速转换为网页交互元素?

Bodymovin插件终极指南&#xff1a;如何将AE动画快速转换为网页交互元素&#xff1f; 【免费下载链接】bodymovin-extension Bodymovin UI extension panel 项目地址: https://gitcode.com/gh_mirrors/bod/bodymovin-extension 想要让精心设计的After Effects动画在网页…

作者头像 李华
网站建设 2026/4/23 11:18:35

Unity高斯泼溅技术完全指南:从零开始掌握实时3D渲染

传统3D渲染技术在处理大规模点云数据时常常面临性能瓶颈和存储压力。Unity Gaussian Splatting项目基于SIGGRAPH 2023的突破性研究成果&#xff0c;为开发者提供了革命性的实时辐射场渲染解决方案。本文将带您从基础概念到高级应用&#xff0c;全面掌握这一前沿技术。 【免费下…

作者头像 李华
网站建设 2026/4/23 12:34:18

Sketch Measure导出配置实战:从团队痛点到高效协作的完整指南

Sketch Measure导出配置实战&#xff1a;从团队痛点到高效协作的完整指南 【免费下载链接】sketch-measure Make it a fun to create spec for developers and teammates 项目地址: https://gitcode.com/gh_mirrors/sk/sketch-measure 你是否曾遇到过这样的场景&#xf…

作者头像 李华