udp服务器聊天版本

发布时间:2026/10/24 5:46:53

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/10/22 17:11:20

Java面向对象进阶—多态

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

2026/10/24 9:12:41

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

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

2026/10/23 14:46:56

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

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

2026/10/24 11:44:04

SaTScan中文说明书:空间流行病学聚集分析模型选择与数据准备指南

简介:SaTScan 中文说明书面向公共卫生、流行病学与空间统计方向的研究人员和学生,解决英文文档阅读门槛高、软件上手困难的问题。SaTScan 是一款自由软件,通过空间、时间及时空扫描统计,用于地理疾病监测、疾病集群检测与统计显著…

2026/10/24 11:44:04

自下而上注意力:VQA区域特征与视觉token工程实践

简介:这份代码包面向图像字幕、视觉问答(VQA)及显著区域特征提取的研究者与工程实践者,提供基于Faster R-CNN、ResNet-101和Visual Genome对象及属性标注的多GPU训练实现,可生成对应显著图像区域的输出特征&#xff0c…

2026/10/24 11:44:04

GAF-PCNN-MATT:时序信号转图像分类的MATLAB实战

简介:本资源面向具备一定深度学习与图像处理基础的研究人员和技术开发者,提供一套基于Matlab实现的GAF-PCNN-MATT图像分类预测方案,融合格拉姆角场、双通道脉冲耦合神经网络与多头注意力机制,用于应对高维复杂特征下传统方法分类精…

2026/10/24 11:44:04

交换机命令配置与排错:视图模型、端口调试和避坑指南

简介:面向华为交换机初学者与网络运维人员的命令配置参考文档,聚焦设备日常管理、以太网端口设置、虚拟局域网划分及命令行使用中的查阅需求,适合作为实验环境搭建、上机操作和故障排查的案头速查材料。压缩包仅含1个doc文件,大小…

2026/10/24 11:44:04

分子动力学模拟完整流程指南:从体系构建到MMPBSA分析

简介:《分子动力学步骤说明》是一份面向分子模拟初学者与准备撰写相关论文的研究人员的系统导读资料。内容按模拟进行的线性顺序展开,从体系构建(加溶剂、带电离子)开始,依次讲解能量最小化、NVT预平衡、NPT预平衡、生…

2026/10/24 11:39:04

Wi-Fi认证测试套件命令体系全解析:从控制面地图到实战避坑

简介:Wi-Fi Test Suite Control API Specification v10.12.0 是 Wi-Fi 联盟发布的认证测试套件控制接口规范文档,面向从事 Wi-Fi 设备研发、认证测试与互操作性验证的工程师及测试人员,用于解决认证测试中控制端与代理端接口不统一、测试流程…

2026/10/23 22:56:35

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/24 0:02:40

MATLAB缩进快捷键与批量格式化实战指南

1. 被自动缩进折磨的那些年如果你写过MATLAB代码,大概率经历过这种场景:从某个文档、网页或者聊天记录里复制了一段代码,粘贴进编辑器之后,每一行前面都带着莫名其妙的空格,有的行首是四个空格,有的是一个T…

2026/10/24 0:02:40

用Poco实现Qt风格信号与槽的跨平台C++方案

简介:本资源是一份面向C中级开发者的技术实践工程,聚焦于在非Qt框架环境下模拟实现Qt核心通信机制——信号与槽,借助Poco网络库的事件系统完成解耦式对象通信。适用于需在跨平台C项目中引入松耦合回调机制、但受限于无法集成Qt依赖的开发场景…

2026/10/24 0:02:40

ESXi裸机虚拟化安装指南:从硬件兼容到虚拟机部署

1. 为什么还要折腾ESXi:从一台闲置机器说起手里攒了几台淘汰下来的迷你主机,配置不算差,i5加16G内存,扔了可惜,装个桌面系统又觉得浪费。这种场景下,ESXi就成了一个绕不开的选择。它是一套裸机虚拟化平台&a…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑