实现一个简单的网络通信下(udp)

时间过去好久了,先回忆一下上一篇博客的代码!!

目前来看,我们客户端发一条消息,我服务器收到这一条消息之后呢,服务器也知道了是谁给我发来的消息,紧接这就把这条消息放进buffer当中,在把我们的 用户IP和端口号,提取出来当作我们 的key插入我们的用户管理当中,在发回给客户端

那么我们接下来在干一件事,在加一个客户端

但是这时候127.0.0.1 - 42909这个客户端并没有“你好l”这一条消息,这个客户端的IO 被阻塞了

而我们现在想要的效果是,我服务端发送消息,在服务端用户管理当中的用户,都能收到这一条消息,并且哪怕我的这个用户不向服务端发送消息,也依然能收到来自服务端的消息

那么我们就需要把我们的客户端改一下,引入我们的多线程,让我们的一个线程发消息,一个线程收消息

这样,我们的读写两个线程的回调方法就写好了

发现此时我们的多线程读写,用的sock都是同一个,sock代表的就是文件(我们是没办法对同一个文件同时又是读又是写的),但是在这边是没有问题的,我们的udp是全双工的 --> 可以同时进行收和发,而不受干扰

但是此时,一个客户端把要发的和要收的消息,混在一起了,我们可以分开来

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

伸展树你需要了解一下

介绍 伸展树(Splay Tree)是一种平衡二叉搜索树,它能在O(log n)内完成插入、查找和删除操作。它是丹尼尔斯立特Daniel Sleator 和 罗伯特恩卓塔扬Robert Endre Tarjan 在1985年发明的。 伸展树是一种自调整形式的二叉查找树,它会在…

51单片机项目(18)——基于51单片机的大棚环境监测系统

1.功能描述 首先使用DS18B20,测量土壤温度,并显示在OLED屏幕左边。然后使用土壤湿度传感器测量土壤湿度,因为这个传感器输出的值是模拟量,所以需要使用AD转换模块。本次使用ADC0832,这是一个8位精度的AD转换模块&#…

MATLAB算法实战应用案例精讲-【路径规划】 图搜索算法

目录 前言 几个高频面试题目 运动规划、路径规划、轨迹规划对比 1. 运动规划 2. 路径规划VS轨迹规划

大数据技术学习笔记(七)—— Zookeeper

目录 1 Zookeeper 概述1.1 Zookeeper 定义1.2 Zookeeper 工作机制1.3 Zookeeper 特点1.4 数据结构1.5 应用场景 2 Zookeeper 安装3 客户端命令行操作4 Zookeeper 的 Java 客户端操作4.1 IDEA 环境搭建4.2 初始化 ZooKeeper 客户端4.3 创建子节点4.4 获取子节点4.5 判断Znode是否…

深入理解 Kafka 集群搭建与管理

Apache Kafka 作为分布式流处理平台的核心,其集群搭建与管理是确保高可用性和高性能的关键。本文将深入研究 Kafka 集群的构建、配置、工作原理、节点角色以及一些高级管理策略,以助力读者更深层次地理解和灵活运用 Kafka 集群。 Kafka 集群基础 1 集群…

智能优化算法应用:基于供需算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于供需算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于供需算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.供需算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

Flume 安装部署

文章目录 Flume 概述Flume 安装部署官方网址下载安装配置文件启动 Flume 进程启动报错输出文件乱码问题 Flume 概述 Flume(Apache Flume)是一个开源的分布式日志收集、聚合和传输系统,属于 Apache 软件基金会的项目之一。其主要目标是简化大…

预约系统源码解析:打造智能定制化预约服务的技术奇迹

在当今数字化时代,预约系统的重要性日益凸显,而预约系统源码的开放将为各行业带来更加灵活、智能的预约解决方案。本文将深入探讨预约系统源码的技术内幕,为开发者提供实用的代码示例,助力打造智能定制化的预约服务。 技术栈概览…

【字符串匹配】【KMP算法】Leetcode 28 找出字符串中第一个匹配项的下标☆

【字符串匹配】【KMP算法】Leetcode 28 找出字符串中第一个匹配项的下标 (1)前缀和后缀(2)前缀表(最长相同的前缀和后缀的长度)(3)匹配过程示意(4)next数组的…

鸿蒙开发:UIAbility组件与UI的数据同步-使用EventHub进行数据通信【鸿蒙专栏-21】

文章目录 ArkTS应用模型中UIAbility组件与UI的数据同步使用EventHub进行数据通信使用globalThis进行数据同步1. UIAbility和Page之间使用globalThis2. UIAbility和UIAbility之间使用globalThis3. 使用globalThis的注意事项4. 使用globalThis的注意事项同名对象覆盖导致问题的场…

Python----练习:使用面向对象实现报名系统开发

第一步:分析哪些动作是由哪些实体发出的 学生提出报名 学生提供相关资料 学生缴费 机构收费 教师分配教室 班级增加学生信息 于是,在整个过程中,一共有四个实体:学生、机构、教师、班级!在现实中的一个具体的实…

Kubernetes+istio部署bookinfo、Online boutique和sock shop

Kubernetesistio部署bookinfo、Online boutique和sock shop 文章目录 Kubernetesistio部署bookinfo、Online boutique和sock shopbookinfoonline-boutiquesock-shop参考 bookinfo # 创建相应的namespace kubectl create ns bookinfo # 切换namespace kubectl config set-conte…

xxl-job(分布式调度任务)

简介 针对分布式任务调度的需求,市场上出现了很多的产品: 1)TBSchedule:淘宝推出的一款非常优秀的高性能分布式调度框架,目前被应用于阿里,京东,支付宝,国美等很多互联网企业的流程调度系统中。…

【深度学习】Adversarial Diffusion Distillation,SDXL-Turbo 一步出图

代码: https://huggingface.co/stabilityai/sdxl-turbo 使用 SDXL-Turbo 是SDXL 1.0的精炼版本,经过实时合成训练。SDXL-Turbo 基于一种称为对抗扩散蒸馏 (ADD) 的新颖训练方法(请参阅技术报告),该方法允许在高图像质…

求最大公约数,和最小公倍数的规则

求最大公约数,和最小公倍数的规则? 最大公约数(Greatest Common Divisor,简称GCD)是指两个或多个整数共有约数中最大的一个。例如,12和18的最大公约数是6,因为12和18同时都能被6整除。 求最大公…

GPT实现开放式世界游戏实践【生化危机】

最近开始研究如何基于GPT构建一个游戏引擎,于是先从简单的文字游戏开始探索。 从最简单的选择机制、故事机制,完善成一个包括天气、事件、技能、属性、伙伴、建造系统的-生化危机版文字游戏-。 我唯一的体验是:AI游戏,大有可为! …

Linux socket编程(9):IO复用之poll和epoll详解

在之前的文章中,我们学习了IO复用模型之select原理及例子,但是select有监听描述符个数的限制,而且select的效率并不高,所以这篇文章就来学习效率更高的poll和Linux特有的epoll方法。 文章目录 1 select/poll/epoll对比2 poll2.1 p…

《小满生活》连续8天收视破2,生活剧怎么拍才好看?

拍生活剧从不失手的导演汪俊回归统治区,新剧《小满生活》以连续8天收视率破2的骄人成绩笑傲国产剧市场。 ​秦昊、蒋欣主演的《小满生活》是“小系列”的第四部作品,聚焦都市中年夫妻为了二胎换新房的社会问题,这次没有和老搭档黄磊合作&…

SCAU:链表创建与插入结点(填空)

链表创建与插入结点(填空) Time Limit:1000MS Memory Limit:65535K 题型: 填空题 语言: G;GCC;VC 描述 代码实现先创新一个链表,然后显示该链表,之后插入一个结点,再显示插入结点的链表。 请填空,完成…

如何用Python调整视频的播放速度(90)

今天我们继续用Python玩转视频。 还是用Python的第三方库moviepy。 如果你对此文章感兴趣的话,可以看看之前的几篇文章。 都是和视频、moviepy相关的。 相信你会收获满满。 今天要实现什么效果呢? 调整视频的播放速度,比如1.25倍速、1.5…