怎么用python socket实现聊天室
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,本文小编为大家详细介绍"怎么用python socket实现聊天室",内容详细,步骤清晰,细节处理妥当,希望这篇"怎么用python socket实现聊天室"文章能帮助大家解决疑惑,下面跟着小编的思路
千家信息网最后更新 2025年11月07日怎么用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安全错误
数据库的锁怎样保障安全
网络安全业务用房可研
数据库怎么调整字段到最后一行
联想机架式服务器一个多少钱
如何设计并创建数据库
数据库数字变化触发器
卢氏淘客软件开发平台
关于网络安全的队会ppt
奇安信统一服务器安全系统
菏泽市 网络技术
手机端app软件开发
深圳学软件开发难吗
花生壳 数据库 怎么用
当兵的有做软件开发的吗
成都的软件开发公司
原神服务器一天多少钱
怎么重启esxi管理服务器
软件开发的软件测试
联通交话费未通过网络安全
2020网络安全厂家排名
宜兴上门软件开发销售
无线网络安全现状的分析
阿里巴巴软件开发有前途吗
2017软件开发那个方向
威海市网络安全信息通报中心
郑州统计年鉴知网数据库
网络安全的知名公司
成都市网络安全生态圈政策
ps4网战连不上服务器
电力行业网络安全案例报价
亚马逊香港服务器