socket网络编程——多进程、多线程处理并发

  如下图所示, 当一个客户端与服务器建立连接以后,服务器端 accept()返回,进而准备循环接收客户端发过来的数据。
  如果客户端暂时没发数据,服务端会在 recv()阻塞。此时,其他客户端向服务器发起连接后,由于服务器阻塞了,无法执行 accept()接受连接,也就是其他客户端发送的数据,服务器无法读取。服务器也就无法并发同时处理多个客户端。

  这个问题可以通过引入多线程和多进程来解决。 服务端接受一个客户端的连接后,创建一个线程或者进程,然后在新创建的线程或进程中循环处理数据。主线程(父进程)只负责监听客户端的连接,并使用 accept()接受连接,不进行数据的处理。如下图所示:

 

多线程处理并发的服务器端示例代码 MultiThread.c 如下: 

#include <stdio.h>      // 引入标准输入输出头文件
#include <stdlib.h>     // 引入标准库头文件
#include <unistd.h>     // 引入Unix标准函数定义头文件
#include <string.h>     // 引入字符串处理头文件
#include <assert.h>     // 引入断言头文件
#include <sys/socket.h> // 引入套接字接口头文件
#include <netinet/in.h> // 引入互联网地址族头文件
#include <arpa/inet.h>  // 引入互联网定义头文件
#include <pthread.h>    // 引入POSIX线程头文件

v

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/685671.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

关于main函数参数列表的那些事

写在最前面&#xff1a; 本篇博客所写代码&#xff0c;全部都依赖于Linux环境。 在开始之前&#xff0c;我们先问自己几个问题&#xff1a; main函数可以传参吗?如果main函数可以传参&#xff0c;最多可以传几个参数。main函数传递的参数具体作用是什么&#xff1f; 一.是否…

25-unittest执行顺序

在使用unittest框架时&#xff0c;各个测试方法的执行顺序是怎样的&#xff0c;本篇通过简单案例讲解unittest执行顺序。 一、定义测试类 import unittestclass Demo(unittest.TestCase):def setUp(self):print("start!")def tearDown(self):print("end!"…

大模型的跃进众生相

最近一段时间&#xff0c;在互联网科技圈&#xff0c;掀起了一阵大模型发布潮&#xff0c;许多大企业加码其中&#xff0c;甚至不少互联网大佬级人物也在其中全情投入&#xff0c;开启了人工智能创业浪潮。那么在这阵阵浪潮中&#xff0c;我们可以观察到什么样的“众生相”&…

unity中animation和animator在使用上的区别

Animation&#xff08;动画&#xff09;&#xff0c;可直接存储在物体上的animation组件中 Animation 组件用于在对象上直接存储和播放动画数据。这些数据通常是通过关键帧动画&#xff08;keyframe animation&#xff09;制作的&#xff0c;其中包含了对象在不同时间点的变换…

IO进程线程(九)线程的同步 进程间通信

文章目录 一、 线程的同步&#xff08;一&#xff09;无名信号量sem1. 定义和初始化2.获取信号量3.释放信号量4. 销毁5. 使用示例 &#xff08;二&#xff09;条件变量1. 定义和初始化2. 获取条件变量3. 释放条件变量4. 销毁条件变量 二、进程间通信&#xff08;一&#xff09;…

二叉搜索树(BST,Binary Search Tree)

目录 前言 一、二叉搜索树概念 二、二叉搜索树的实现与操作 1.查找 2.插入 3.删除 4.中序遍历 5.完整代码 三、二叉搜索树的应用&#xff08;K模型、KV模型&#xff09; 1.K模型 2.KV模型 3.完整代码 四、二叉搜索树的性能分析 前言 为何学&#xff1f; 1.二叉…

OceanBase 内存研究(OceanBase 3.2.4.5)

内存结构 从官网的结构图可以看出&#xff0c;一台observer可使用的总内存(memory_limit)包括 系统内存(system_memory) 和 租户内存(sys租户与普通租户) 系统内存 系统内存system_memory 属于 observer 的内部内存&#xff0c;允许其它租户共享使用该内存资源 (root10.0.0.…

vue2转vue3初步下载pnpm遇到的问题 pnpm : 无法加载文件 D:\nodejs\pnpm.ps1

安装pnpm npm install -g pnpm pnpm -v 提示&#xff1a; 解决&#xff1a;nvm install 18.18.0 下载最稳定版本的nodejs nvm use 18.18.0 然后注意重新下载删除pnpm npm uninstall -g pnpm npm install -g pnpmlatest 在vscode使用pnpm报错 解决&#xff1a;管理员运行Windo…

爬虫(没)入门:用 node-crawler 爬取 blog

起因 前几天想给一个项目加 eslint&#xff0c;记得自己曾经在博客里写过相关内容&#xff0c;所以来搜索。但是发现 csdn 的只能按标题&#xff0c;没办法搜正文&#xff0c;所以我没搜到自己想要的内容。 没办法只能自己又重新折腾了一通 eslint&#xff0c;很烦躁。迁怒于…

tomcat配置请求的最大参数个数和请求数据大小

maxParameterCount"10000" maxPostSize"10485760" maxParameterCount&#xff1a;单个请求最大请求参数个数&#xff1b; maxPostSize&#xff1a;单个请求最大数据大小&#xff0c;1048576010M&#xff1b;

flutter3-os:基于flutter3.x+dart3+getx手机版os管理系统

flutter3-os-admin跨平台手机后台OS系统。 原创Flutter3.22Dart3.4Getxfl_chart等技术开发仿ios手机桌面OA管理系统。自研栅格化布局引擎、自定义桌面壁纸、小部件、底部Dock菜单、可拖拽悬浮球等功能。 全新自研栅格化OS菜单布局引擎。 使用技术 编辑器&#xff1a;VScode技术…

【架构模型】

一、客户端/服务端模式 二、单击应用模式 单机应用系统是最简单的软件结构&#xff0c;是指运行在一台物理机器上的独立应用程序。

【大模型】基于Hugging Face调用及微调大模型(1)

文章目录 一、前言二、Transformer三、Hugging Face3.1 Hugging Face Dataset3. 2 Hugging Face Tokenizer3.3 Hugging Face Transformer3.4 Hugging Face Accelerate 四、基于Hugging Face调用模型4.1 调用示例4.2 调用流程概述4.2.1 Tokenizer4.2.2 模型的加载4.2.3 模型基本…

spring源码初始学习基础-环境

环境&#xff1a;在这里插入代码片 allprojects {repositories {maven { url file:///D:/software/repository} // 本地仓库地址&#xff0c;如果没有依次向下寻找maven { url "https://maven.aliyun.com/repository/public" }mavenLocal()mavenCentral()}buildscri…

CopilotKit:开源 Copilot 框架,部署应用内 AI 代理,使用 Langchain 自动执行任何任务!

原文链接&#xff1a;&#xff08;更好排版、视频播放、社群交流、最新AI开源项目、AI工具分享都在这个公众号&#xff01;&#xff09; CopilotKit&#xff1a;开源 Copilot 框架&#xff0c;部署应用内 AI 代理&#xff0c;使用 Langchain 自动执行任何任务&#xff01; &am…

前端工程化工具系列(九)—— mddir(v1.1.1):自动生成文件目录结构工具

mddir 是一个基于项目目录结构动态生成 Markdown 格式目录结构的工具&#xff0c;方便开发者在文档中展示文件和文件夹的组织结构。 1. 安装 全局安装改工具&#xff0c;方便用于各个项目。 pnpm i -g mddir2. 使用 在想要生成目录接口的项目内打开命令行工具&#xff0c;输…

RocketMQ教程(一):RocketMQ的基本概念

RocketMQ是什么? RocketMQ 是一个分布式消息中间件和流计算平台,由阿里巴巴团队开源并贡献给 Apache 软件基金会,现为 Apache 顶级项目。它主要用于处理大规模数据的传输问题,支持高吞吐量、高可用性和可扩展性的消息发布和订阅服务。RocketMQ 能够确保消息的可靠传输,支持…

从报名到领证:软考高级【系统分析师】报名考试全攻略

本文共计13156字&#xff0c;预计阅读39分钟。包括七个篇章&#xff1a;报名、准考证打印、备考、考试、成绩查询、证书领取及常见问题。 不想看全文的可以点击目录&#xff0c;找到自己想看的篇章进行阅读。 一、报名篇 报名条件要求&#xff1a; 1.凡遵守中华人民共和国宪…

R语言探索与分析17-股票题目

Value at Risk&#xff08;VaR&#xff09;是一种统计技术&#xff0c;用于量化投资组合在正常市场条件下可能遭受的最大潜在损失。它是风险管理和金融领域中一个非常重要的概念。VaR通常以货币单位表示&#xff0c;用于估计在给定的置信水平和特定时间范围内&#xff0c;投资组…

码农危是否到来? AI大模型时代到来程序员能做啥?

前言 “马斯克提到人工智能会让工作变得毫无意义&#xff0c;并建议人们可能需要去编写人工智能程序&#xff0c;以避免被AI剥夺就业”&#xff0c;AI大模型的爆发&#xff0c;各种自动化编码应用工具&#xff0c;AI机器人出现&#xff0c;“前有2023年2月份&#xff0c;ChatG…