python基于udp的网络聊天室再用tkinter显示_Python实现网络聊天室的示例代码(支持多人聊天与私聊)...

实验名称:

网络聊天室

功能:

i. 掌握利用Socket进行编程的技术

ii. 掌握多线程技术,保证双方可以同时发送

iii. 建立聊天工具

iv. 可以和单人聊天

v. 可以和多个人同时进行聊天

vi. 使用图形界面,显示双方的语录

vii. 程序可以在一定程度上进行错误识别

概述

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

服务器端程序主要用于接收用户信息,消息接收与转发。

客户端程序实现用户注册登录,聊天信息显示与信息输入。

代码解释

统计当前在线人数,并且将新用户加到用户列表中。

Serve.py

e840e5ea30f9fd900736484db034a061.png

这是服务器对于聊天服务的实现。

1b8127e3fdf639acdf03d00a83727ef3.png

通过继承threading.Thread类而实现多线程,重写run函数。

c0630ca7d5a851e1a046ccc1aaad882c.png

接受来自客户端的用户名,如果用户名为空,使用用户的IP与端口作为用户名。如果用户名出现重复,则在出现的用户名依此加上后缀“2”、“3”、“4”……

62b267bc184f0593ac940ff003b0c80a.png

在获取用户名后便会不断地接受用户端发来的消息(即聊天内容),结束后关闭连接。

d6aa9dc113fd233086ddcb11263f26b4.png

如果用户断开连接,将该用户从用户列表中删除,然后更新用户列表。

8f4681d1f5f447afc2598304885427d4.png

将地址与数据(需发送给客户端)存入messages队列。

7fb8a221c81cdee2cebc767bfb318960.png

服务端在接受到数据后,会对其进行一些处理然后发送给客户端,如下图,对于聊天内容,服务端直接发送给客户端,而对于用户列表,便由json.dumps处理后发送。

be10c6b4b0011b896a31bd40d8ef26a2.png

Client.py

建立连接,发送用户名及判断是否为私聊消息,私聊用~识别

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值