Python实现网络聊天室(支持多人聊天与私聊)

这个实验构建了一个使用Python的Socket和多线程技术的网络聊天室,支持多人聊天和私聊。服务器端负责接收和转发用户消息,客户端则实现了用户注册登录和聊天界面。当用户断开连接时,服务器会自动更新在线用户列表。代码中详细解释了服务器如何处理用户和消息,以及客户端如何接收和显示聊天内容和在线用户列表。
摘要由CSDN通过智能技术生成
实验名称:

网络聊天室

功能:

i. 掌握利用Socket进行编程的技术
ii. 掌握多线程技术,保证双方可以同时发送
iii. 建立聊天工具
iv. 可以和单人聊天
v. 可以和多个人同时进行聊天
vi. 使用图形界面,显示双方的语录
vii. 程序可以在一定程度上进行错误识别

概述

实验通过聊天室可以完成单人或多人之间的聊天通信,功能的实现主要是通过Socket通信来实现。本次实验采用客户端/服务器(C/S)架构模式,通过Python语言来编写服务器端与客户端的程序。运用多线程可完成多点对多点的聊天。
服务器端程序主要用于接收用户信息,消息接收与转发。
客户端程序实现用户注册登录,聊天信息显示与信息输入。

代码解释

统计当前在线人数,并且将新用户加到用户列表中。
Serve.py
在这里插入图片描述
这是服务器对于聊天服务的实现。
在这里插入图片描述
通过继承threading.Thread类而实现多线程,重写run函数。在这里插入图片描述
接受来自客户端的用户名,如果用户名为空,使用用户的IP与端口作为用户名。如果用户名出现重复,则在出现的用户名依此加上后缀“2”、“3”、“4”……
在这里插入图片描述
在获取用户名后便会不断地接受用户端发来的消息(即聊天内容),结束后关闭连接。在这里插入图片描述
如果用户断开连接,将该用户从用户列表中删除,然后更新用户列表。在这里插入图片描述
将地址与数据(需发送给客户端)存入messages队列。在这里插入图片描述
服务端在接受到数据后,会对其进行一些处理然后发送给客户端,如下图,对于聊天内容,服务端直接发送给客户端,而对于用户列表,便由json.dumps处理后发送。

在这里插入图片描述
Client.py
建立连接,发送用户名及判断是否为私聊消息,私聊用~识别在这里插入图片描述
接受来自服务器发送的消息
在这里插入图片描述
对接收到的消息进行判断,如果是在线用户列表(用json.dumps处理过),便清空在线用户列表框,并将此列表输出在在线用户列

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值