基于UDP的dos多人聊天室
文章目录
##前言
\qquad这学期正好有门TCP/IP 编程,乘机写了个dos下的聊天室,去年这个时候用Java写了个带GUI的多人聊天室,不过整体来看这次在对网络编程有了一定的理论基础后,这次用c++写的时候,那叫一个轻车熟路。写了多个版本的demo,在文章的最后会把demo更新描述。(对于Java版或者Demo有需要的可以在评论区回复)。
##聊天室优点与可拓展功能
###优点:
1.实现了基本的聊天功能,包括群聊与私聊
2.用户注册时使用文件做过渡,用户退出登陆时仍可保留用户信息
3.封装消息传递时格式,包括消息的生成与解析
4.友好的操作逻辑
5.多方位错误提醒
###可拓展功能
1.本次由于要求,将客户端一分为二包括接收端和发送端,虽然减少了开多线程带来的工作量,但是使整个聊天室的一体性大打折扣,于是就可以在客户端开多线程去优化。
2.这聊天室限于其类型,只是通过文档来保存用户列表,但是可以使用数据库来增加用户量增大带来的问题
3.聊天室并不支持文件发送,可以考虑后期添加
4.聊天室未对多群组,好友关系留下拓展接口,这是考虑到文件操作的局限性,如果有需求,可以做两方面考量,第一是使用数据库建立好友关系,群组关系,用户表;第二修改消息格式,拓展对添加的群组选择拓展。
##实测
###登陆界面
###注册
###聊天
###群聊
###私聊
###退出(左边为sender退出,右边为receiver退出)
##编译环境
IDE : CodeBlocks 16.01
语言:C++
运行须知:需要添加链接库,才可以运行
##后记
\qquad现附上代码,有空在补上内部实现的亮点与不足,有什么问题,可以随时私信。有空可以follow下博主的github(丑不要碧莲,有打广告).最后附上下载链接,喜欢点赞就行。(csdn必须要c币,github免费下载)
##下载入口
csdn下载入口
github下载入口
基于UDP的dos多人聊天室相关推荐
- 基于UDP的简易多人聊天室
1.服务器 1.服务器采用了线程进行编写,这样可以共享链表,比较简单. 2.实现思路:由客户端发送消息(内容包含:客户端自定义的名字.客户端发送消息的类别.客户端发送的消息内容),服务器接收到消息后根 ...
- python实现简易聊天需要登录博客园zip下载_Python基于Socket实现简易多人聊天室的示例代码...
前言 套接字(Sockets)是双向通信信道的端点. 套接字可以在一个进程内,在同一机器上的进程之间,或者在不同主机的进程之间进行通信,主机可以是任何一台有连接互联网的机器. 套接字可以通过多种不同的 ...
- 网络编程套接字(上篇)UDP实现简易多人聊天室
目录 背景知识 主机间通信本质 socket 端口号特点: 为什么不用进程pid? 网络字节序 socket编程接口API sockaddr结构 编辑 简单UDP网络程序 了解UDP协议 简易多人聊 ...
- java 网络编程 聊天_Java——网络编程(实现基于命令行的多人聊天室)
目录: 1.ISO和TCP/IP分层模型 2.IP协议 3.TCP/UDP协议 4.基于TCP的网络编程 5.基于UDP的网络编程 6.基于TCP的多线程的聊天室的实现 1.ISO和TCP/IP分层模 ...
- Java——网络编程(实现基于命令行的多人聊天室)
2019独角兽企业重金招聘Python工程师标准>>> 目录: 1.ISO和TCP/IP分层模型 2.IP协议 3.TCP/UDP协议 4.基于TCP的网络编程 5.基于UDP的网络 ...
- C 基于UDP实现一个简易的聊天室
引言 本文是围绕Linux udp api 构建一个简易的多人聊天室.重点看思路,帮助我们加深 对udp开发中一些api了解.相对而言udp socket开发相比tcp socket开发注意的细节要少 ...
- 基于Netty框架的多人聊天室
因为产品升级,需要将原生的Java Socket通信改为Netty框架所以学习了Netty,这是一个多人聊天室,就算是第一个小作品吧. 使用的时候先开启服务端,之后开启任意多个客户端,即可实现多人聊天 ...
- 基于socket实现的多人聊天室项目(python)
最近做了一个多人聊天室项目,主要目的是练习和巩固socket编程. 在开始之前,可以先了解一下socket的TCP三次握手和四次挥手. 参考:https://blog.csdn.net/luoyoub ...
- python多人聊天室_Python基于Socket实现简易多人聊天室
前言 套接字(Sockets)是双向通信信道的端点. 套接字可以在一个进程内,在同一机器上的进程之间,或者在不同主机的进程之间进行通信,主机可以是任何一台有连接互联网的机器. 套接字可以通过多种不同的 ...
最新文章
- 商汤三体梦幻联动,能遭遇水滴的那种元宇宙要来了!我在现场听见了次元壁破碎的声音...
- Linux系统安装python3和创建python3虚拟环境
- 条件测试 linux,Linux的条件测试
- python代码翻译器-python写的翻译代码
- 《Android Framework-跨进程通信高级实战课》笔记
- .NET多线程编程(14)——用C#实现蜘蛛/爬虫程序的多线程控制
- 重新审视虚拟桌面存储
- 漫谈工业软件(4)-关于开源工业控制软件
- 解决OverflowError: int too large to convert to float的办法
- Java入门学习笔记——郝斌(三)线程
- 电脑的热点手机连接不上怎么办
- 电磁场与电磁波 试题含答案
- Traceback (most recent call last):IndexError: list assignment index out of range
- 猜数字游戏 由计算机,猜数字游戏实验报告
- 福禄克光纤测试:多模光纤 VS 单模光纤
- 三子棋 C语言【详解】
- Python max函数
- ROS 机器人模型节点的运动控制原理
- CVPR2020论文分方向整理之检测篇_3D目标检测(代码/论文解读/136篇打包下载)
- YUV图像格式转换方法实践
热门文章
- openwrt上opkg更新报错opkg_download: Failed to download .............
- 毕夏钟伟强沧桑战全场泪奔
- 假发外贸有必要建自己的网店吗?
- 仿人机器人学习笔记(一)坐标变换
- MapGIS67编辑线右键结束时,想继续接着编辑线时怎么操作?
- 食亨CEO王泰舟对话新华社:餐饮数字化经营时代已经到来
- android mic 测试软件,麦克风测试校正系统(IK Multimedia ARC System 3)
- 精益生产五大原则是什么?五大精益生产原则的分析与应用
- 树莓派吃派(android Pie)指南
- -march= 所带参数(armv4)不正确(2018-07-01)