发布时间:2026/8/24 14:41:28
udp服务器聊天版本 在服务器端将客户端管理起来这样在收到数据时决策是否增加/删除/查找/修改用户等登录用什么标识用户的唯一性呢如果需要登录注册涉及到协议暂且使用IP端口号来唯一标识用户对用户进行管理一般先定义用户但是比较复杂要订协议用户进行注册设置用户名和密码登录的时候要确认今 天从简把InetAddr看作用户新用户来的时候如何处理要通过查找看到用户列表是否有该用户涉及到查如果没有进行插入重新启动ip和端口号可能发生变化涉及到改也可能下线删除那如何管理呢如果使用unordered_map使用ipport作为键值是InetAddr在插入的时候使用InetAddr提供的方法toString获取键来进行比较插入但是也可以重载InetAddr的符号直接进行比较使用vector进行管理即可对用户进行管理UserManager.hpp上面UdpServer.hpp进行网络收发数据InetAddr.hpp对用户进行描述UserManager.hpp对用户进行组织现在用户和网络数据还是分离的需要将二者联系起来使用Route.hpp对网络来的用户进行插入和删除离开网络的用户进行广播数据等因为用户列表是临界资源可能并行进行增删查改所以进行保护其实Route这个类还是对于用户列表的再一次封装使得UserManager对于用户列表的增删查改更为纯粹加锁等操作都在Route完成广播的时候其实Route可以加一个队列成员把需要广播的消息push到队列中广播的时候直接从队列中取消息进行广播并发版本首先上面的客户端1发送aaa但下面的客户端2还没入网所以只会转发给客户端1消息aaa接着客户端2发送bbb入网收到转发回来的bbb接着客户端1发送ccc并且接收之前发过来的bbb问题1.只有给服务端发消息才能收消息因为客户端是阻塞式发送但实际上不发消息应该也能收2.客户端1发送ccc没有立马收到ccc因为接收之前的bbb消息延迟上面时采用ipport如果只比较ip那就是一台机器只能充当一个客户端虽然多线程但只有一个xshellqt或图形化界面每一个界面靠一个线程不同的消息往不同的显示器上显示把客户端改成多线程主线程做控制两个从线程分别负责收和发收的输出到文件描述符2将标准错误重定向到管道上面分不清那句话是谁说的而且启动客户端不说话就没办法收消息所以启动之后先设置昵称来区分消息并且启动之后主动向服务器发送消息简单的实现就到这里了可以静态编译生成client_chat发送到其它机器通过xshell或者虚拟机运行./client_chat 客户端的ip 客户端的port就可以进行聊天了qt windows启动多线程简单聊天系统登录注册自己加udp 网络抖动丢包聊天用udp做简单但做好不简单没有登录注册ipport作为标识Route内定义一个全局/静态变量64位从1k/w开始每注册一个就返回一个数字类似qq号用户入网怎么下线如果用户退出在转发消息的时候检测到quit类字眼就从用户列表移除该用户涉及更复杂的判断转发的时候加锁但是网络IO耗时先把用户列表拷贝一份进行IO多线程这两个函数可能线程不安全整体代码量有些大因为对套接字不是很熟悉不了解原理感觉信息量大把系统部分整合揉在一起1000多行udp和tcp套接字创建过程就是套路该创建绑定监听链接都是固定的感觉陌生是因为用的少陌生用的多了套接字创建流程固定创建套接字逻辑使用设计模式模板化正在学接口从0到1建立的过程

相关新闻

2026/8/24 14:41:28

Java面向对象进阶—多态

目录: 1.认识多态2.多态中调用成员的特点3.多态的优势和弊端1.认识多态:多态是面向对象的三大特征的最后一个,那么我们先了解什么是多态呢?实际上就是同类型的对象,表现出不同形态。 多态的表现形式:父类类…

2026/8/24 14:41:28

eDNA水体样品采集时可以检测的水质指标

检测水质指标可以告诉我们这个水体处于什么环境状态?有没有富营养化、有机污染、盐分/离子增加、缺氧等问题?这些变化有没有可能影响动物或植物群落?指标主要告诉你什么高/低可能意味着什么水温水体热环境高温、季节变化、热污染pH酸碱环境酸…

2026/8/24 14:36:27

94.RAG-RAG应用平台-Dify工作流(大模型和知识库使用说明)

内容参考于:图灵AI大模型全栈 Dify源码地址:https://github.com/langgenius/dify 中文文档:https://docs.dify.ai/v/zh-hans 官方地址: https://cloud.dify.ai/apps 下图蓝框的上一节中写完了,接下来是下图红框的两个 工作流 它是…

2026/8/24 16:46:48

扩展卡尔曼滤波(EKF)原理、实现与工程实践全解析

1. 项目概述:从卡尔曼到扩展,应对非线性世界的挑战 在传感器融合、机器人定位导航、自动驾驶乃至金融信号处理这些领域,我们常常面临一个核心问题:如何从一堆充满噪声的观测数据中,尽可能准确地估计出系统内部我们无法…

2026/8/24 16:46:48

线性目标规划:从多目标冲突到满意解决策的建模与实践

1. 项目概述:从“最优解”到“满意解”的思维跃迁干了这么多年项目管理和技术方案设计,我越来越觉得,现实世界里的决策,很少是那种“非黑即白”或者“唯一最优”的。更多时候,我们面对的是资源有限、目标冲突、约束复杂…

2026/8/24 16:41:48

拉格朗日乘子法进阶:从影子价格到灵敏性分析的建模实战

1. 从一道真题看拉格朗日乘子的“另一面” 如果你参加过数学建模竞赛,或者接触过运筹学、经济学优化问题,拉格朗日乘子法(Lagrange Multiplier)这个名字你一定不陌生。我们通常用它来求解带等式约束的优化问题:构造拉格…

2026/8/24 0:07:22

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/24 1:12:32

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/24 8:17:29

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/24 1:09:25

3条命令跑通LocalAI:无GPU本地AI引擎部署

3条命令跑通LocalAI:无GPU本地AI引擎部署 【免费下载链接】LocalAI LocalAI is the open-source AI engine. Run any model - LLMs, vision, voice, image, video - on any hardware. No GPU required. 项目地址: https://gitcode.com/GitHub_Trending/lo/LocalAI…

2026/8/24 1:09:25

AI推理性能测试怎么做:MLPerf Inference完整上手指南

AI推理性能测试怎么做:MLPerf Inference完整上手指南 【免费下载链接】inference Reference implementations of MLPerf inference benchmarks 项目地址: https://gitcode.com/gh_mirrors/inf/inference 同一个模型换一张卡,速度快多少你知道吗&a…

2026/8/24 13:42:17

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/23 6:14:43

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/23 4:22:01

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…