网络编程是许多应用的核心,Python 提供了强大的 socket 库,方便我们构建客户端和服务器程序。
本文将带你一步步实现一个简单的多人聊天室,实现消息的收发和广播。


一、Socket 基础介绍

  • socket.socket() 创建套接字

  • 服务器使用 bind() 绑定地址,listen() 监听连接

  • 客户端使用 connect() 连接服务器

  • send()recv() 发送和接收数据


二、服务器端代码示例


python

复制编辑

import socket import threading clients = [] def handle_client(client_socket): while True: try: message = client_socket.recv(1024).decode('utf-8') if not message: break broadcast(message, client_socket) except: clients.remove(client_socket) client_socket.close() break def broadcast(message, sender_socket): for client in clients: if client != sender_socket: try: client.send(message.encode('utf-8')) except: clients.remove(client) client.close() def main(): server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind(('0.0.0.0', 5555)) server.listen(5) print("服务器启动,等待连接...") while True: client_socket, addr = server.accept() print(f"连接来自 {addr}") clients.append(client_socket) thread = threading.Thread(target=handle_client, args=(client_socket,)) thread.start() if __name__ == '__main__': main()


三、客户端代码示例


python

复制编辑

import socket import threading def receive_messages(sock): while True: try: msg = sock.recv(1024).decode('utf-8') if msg: print(msg) except: break def main(): client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.connect(('127.0.0.1', 5555)) threading.Thread(target=receive_messages, args=(client,), daemon=True).start() while True: msg = input() if msg == 'exit': break client.send(msg.encode('utf-8')) if __name__ == '__main__': main()


四、运行流程

  1. 启动服务器脚本

  2. 启动多个客户端脚本,输入消息

  3. 消息会被服务器接收并广播给所有其他客户端


五、总结与扩展建议

知识点 说明
多线程 处理多个客户端并发连接
消息广播 将消息发送给除发送者外的所有客户端
异常处理 保证客户端断开时服务器稳定运行

你还可以进一步完善:

  • 添加用户名和登录验证

  • 支持私聊和群聊功能

  • 增加图形界面(如 Tkinter)

  • 使用加密协议保障安全

https://bigu.wang

https://www.bigu.wang

https://binm.wang

https://www.binm.wang

https://bint.wang

https://www.bint.wang

https://biop.wang

https://www.biop.wang

https://bits.wang

https://www.bits.wang

https://bjqb.wang

https://www.bjqb.wang

https://bjsm.wang

https://www.bjsm.wang

https://bleo.wang

https://www.bleo.wang

https://ono.wang

https://www.ono.wang

https://onz.wang

https://www.onz.wang

https://opo.wang

https://www.opo.wang

https://osm.wang

https://www.osm.wang

https://osn.wang

https://www.osn.wang

https://ovi.wang

https://www.ovi.wang

https://oxq.wang

https://www.oxq.wang

https://oti.wang

https://www.oti.wang

https://owu.wang

https://www.owu.wang

https://piq.wang

https://www.piq.wang

https://qmi.wang

https://www.qmi.wang

https://qki.wang

https://www.qki.wang

https://ref.wang

https://www.ref.wang

https://sak.wang

https://www.sak.wang

https://sar.wang

https://www.sar.wang

https://sfa.wang

https://www.sfa.wang

https://sfe.wang

https://www.sfe.wang

https://sgo.wang

https://www.sgo.wang

https://sku.wang

https://www.sku.wang

https://ycxjz.cn

https://www.ycxjz.cn

https://bnbmhomes.cn

https://www.bnbmhomes.cn

https://jinjianzuche.com

https://www.jinjianzuche.com

https://ahswt.cn

https://www.ahswt.cn

https://szwandaj.cn

https://www.szwandaj.cn

https://psbest.cn

https://www.psbest.cn

https://shanghai-arnold.cn

https://www.shanghai-arnold.cn

https://zgsscw.com

https://www.zgsscw.com

https://shxqth.cn

https://www.shxqth.cn

https://wdxj.cn

https://www.wdxj.cn

https://jad168.com

https://www.jad168.com

https://ultratrailms.cn

https://www.ultratrailms.cn

https://tztsjd.cn

https://www.tztsjd.cn

https://csqcbx.cn

https://www.csqcbx.cn

https://qazit.cn

https://www.qazit.cn

https://ahzjyl.cn

https://www.ahzjyl.cn

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐