import socket
import threading
class ChatServer:
def __init__(self, host="127.0.0.1", port=12345):
self.server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.server.bind((host, port))
self.server.listen(5) # 最大等待连接数
print(f"服务器启动,监听地址:{host}:{port}")
self.clients = {} # 存储连接的客户端 {address: socket}
def broadcast(self, message, exclude_socket=None):
"""向所有客户端广播消息"""
for client_socket in self.clients.values():
if client_socket != exclude_socket:
try:
client_socket.send(message.encode("utf-8"))
except:
pass
def handle_client(self, client_socket, address):
"""处理单个客户端连接"""
print(f"客户端连接:{address}")
self.clients[address] = client_socket
while True:
try:
message = client_socket.recv(1024).decode("utf-8")
if not message:
break
print(f"[{address}] 消息:{message}")
# 广播消息给其他客户端
self.broadcast(f"[{address}] {message}", exclude_socket=client_socket)
except:
break
# 客户端断开连接
print(f"客户端断开连接:{address}")
client_socket.close()
del self.clients[address]
def run(self):
"""启动服务器"""
while True:
client_socket, address = self.server.accept()
threading.Thread(target=self.handle_client, args=(client_socket, address)).start()
if __name__ == "__main__":
server = ChatServer()
server.run()
源码空间站11
- 粉丝: 5124
- 资源: 891
最新资源
- (179719018)NPC三电平逆变器改进同步载波调制算法仿真 (同步SPWM,同步SVPWM) 本仿真的优点: 1)三电平逆变器的输出相电压保持
- 基于springboot的校园新闻网站源码(java毕业设计完整源码+LW).zip
- (19059030)java开发学生信息管理系统
- 攀爬机器人sw2016含cad可编辑全套技术资料100%好用.zip
- C#源码 上位机 SECS协议,里面包含各种进制转,用于半导体行业,程序全源码
- 2019年江西省职业院校技能大赛网络搭建与应用竞赛方案
- 一款同时支持JAVA REST API和JAVA WebSocket和Apache Dubbo RPC接口文档生成的工具,smart-doc在业内率先提出基于JAVA泛型定义推导的理念
- 全方位平面定位系统sw2018可编辑全套技术资料100%好用.zip
- nginx-1.23.2版本RPM包
- 三相电流型PWM整流matlab仿真,采用电压外环和电流内环的双闭环控制策略,附赠自己整理的说明文档和几篇参考文献
- 自然人电子税务局(扣缴端)个税官网下载 ETax模拟电子税务局学习系统 自然人电子税务局扣缴客户端数据恢复电脑重装个税数据丢失怎么处理数据丢失了怎么办备份更换电脑后,教你轻松恢复个税扣缴端数据个税扣缴
- deletexxxxxxxxxxxxxxxxxxxxxxxxxx
- 练习-登录123401
- 雷电模拟器安装Lxposed
- 双馈风机次同步振荡抑制策略(一) 含 基于转子侧附加阻尼控制(SDC)的双馈风机次同步振荡抑制,不懂就问, 附加阻尼控制 (SDC)被添加到 RSC 内部控制器的q轴输出中 这种方法是由Andres
- 基于springboot的新生宿舍管理系统源码(java毕业设计完整源码+LW).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈