怎么用python socket实现聊天室
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本文小编为大家详细介绍"怎么用python socket实现聊天室",内容详细,步骤清晰,细节处理妥当,希望这篇"怎么用python socket实现聊天室"文章能帮助大家解决疑惑,下面跟着小编的思路
千家信息网最后更新 2026年10月31日怎么用python socket实现聊天室
本文小编为大家详细介绍"怎么用python socket实现聊天室",内容详细,步骤清晰,细节处理妥当,希望这篇"怎么用python socket实现聊天室"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
server端
import socketimport json,structfrom concurrent.futures import ThreadPoolExecutordebug = Trues = socket.socket()s.bind(("127.0.0.1",8848))s.listen()clients = {}pool = ThreadPoolExecutor(100)def send_msg(soc, msg): l = len(msg.encode("utf-8")) soc.send(struct.pack("q",l)) # 发数据 soc.send(msg.encode("utf-8"))"""用于监听已经建立连接的客户端发来的消息"""def task(ip,c): while True: l = c.recv(8) ls = struct.unpack("q",l)[0] data = json.loads(c.recv(ls).decode("utf-8")) #接收到来自客户端的消息。 eg: data = {"to_addr":"msg":""} print("来自%s的消息:%s"%(ip,data["msg"])) # 客户端发过来的数据 # 数据有两种情况 一种是发给所有人的 另一种单独发给某一个人的 if data.get("to_addr"): #传过来一个json格式的字典,如果这个to_addr不是空的话,就私发给目标客户 target_ip = data["to_addr"] #从data字典里中获取目标ip target_conn = clients.get(target_ip) #获取目标客户的conn链接 send_msg(target_conn,data["msg"]) #发送讯息 else: for ip,conn in clients.items(): # if c != target_conn: send_msg(conn,data["msg"])#data["msg"] # # 从所有客户端列表中找到这一个 发给它 # to_addr = data["to_addr"] # # print(data["to_addr"],"_______________") # soc = clients.get(to_addr) # send_msg(soc,data["msg"]) # else: # # 遍历所有客户端 发给每一个人 # for k,soc in clients.items(): # # if soc != c: # send_msg(soc,data["msg"])while True: """以下代码用于检测是否有客户端连接""" c,add = s.accept() print("%s" % add[0],"连接到服务器!") clients[add[0]] = c # 把ip地址作为key,conn作为value存入clients字典中 ,clients = {"192.188.3.4":conn链接} if debug: print("clients=%s"%clients) """以下代码用于监听已经建立连接的客户端发来的消息""" pool.submit(task,add,c)client端
import socket,json,structfrom threading import Threadc = socket.socket()c.connect(("127.0.0.1",8848))print("连接服务器成功!")def recver(): while True: lens_bytes = c.recv(8) lens = struct.unpack("q", lens_bytes)[0] recv_msg = c.recv(lens).decode("utf-8") print(recv_msg)# 开启线程处理接收数据Thread(target=recver).start()while True: msg = input(">>>>:").strip() # 阻塞 if "@" in msg: info = {"msg":msg.split("@")[0],"to_addr":msg.split("@")[1]} else: info = {"msg": msg} data = json.dumps(info).encode("utf-8") c.send(struct.pack("q",len(data))) c.send(data)读到这里,这篇"怎么用python socket实现聊天室"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
客户
客户端
utf-8
数据
消息
聊天室
字典
文章
目标
个人
代码
内容
服务器
链接
处理
服务
监听
妥当
成功
地址
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
云南咖啡
中智农互联网科技
西安纸贵互联网科技有限公司
科技和互联网公司
互联网科技与金融科技
互联网科技金融公司
万易互联网科技
互联网科技革命
掌上梦互联网科技
互联网科技论坛
深圳期待互联网科技
西藏七维空间互联网科技有限公司
央行互联网金融科技公司
广州恒生互联网科技有限
互联网方面的科技前沿
锡山区互联网智能科技产品供应
互联网第三次科技革命特征
广东鹅鹅鹅互联网科技有限公司
上海万顺科技互联网有限公司招聘
现代科技的标志之一的互联网
互联网科技垄断
互联网科技作文
互联网金融科技平台
郑州华宇互联网科技
卫星互联网科技股票
博兴的互联网电子科技公司
阿里巴巴算科技企业还是互联网
深圳市罗太互联网科技有限公司
济南有互联网科技公司吗
安徽九吞吴互联网科技有限公司