Python网络编程----实现简单的多人聊天室

本文介绍如何使用Python的UDP和多线程实现简单的多人聊天室。通过创建一个服务器负责数据分配和转发,达到广播效果。利用threading模块实现多线程,允许用户在不同时间进行交流。虽然存在一些局限性,如本地存储和个人信息追踪的问题,但这个项目加深了对字典操作的理解,并为未来使用JSON打下基础。
摘要由CSDN通过智能技术生成

还是用UDP,socket作为主体来实现,之前我们已经实现过单对单socket通信,这次想实现群发功能

原理其实就是一台服务器在负责分配转发数据,来达成广播的效果,这些思路其实也差不多

但是多人聊天没有这么强的规整性,你可能没等到A的消息,就要去和B说话了,多线程就可以实现这一点

给个链接,感觉写的很好:https://www.cnblogs.com/yeayee/p/4952022.html

主要就是依靠threading模块

你可以理解为,我们创建了一个类似于数组的空间,来存放我们所有要执行的工作,然后同时开始,然后通过阻塞父进程来等待子进程结束,这就是多线程工作

直接上代码段好了,用txt和字典可以伪造一个非常非常破的聊天室,自己其实感觉做的挺垃圾的,毕竟最后的成品,本地就算是存储了个人信息,要群发消息的话,还需要服务器存放的字典的values来追踪各个地址,完全是脱节的,唉,菜到落泪,不会数据库,也没有界面,不过总算是熟悉了一波字典的操作,争取早日用上json

SERVER:

import json
import socket

name_dict={}           #空字典

def register(data,client_addr):
    f=open("members.txt",'a+')
    data=data[9::]
    key=data.decode('utf-8')
    line=f.readline().strip()
    print(line)
    result=line.find(key)
    if result >=0:
        s="your information has been used, please register again"
        server.sendto(s.encode('utf-8'),client_addr)
        f.close()
        return 1

    while line:
        line = f.readline().strip()
        result=line.find(key)
        if result>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值