# python-tcp-chat **Repository Path**: LiaCin/python-tcp-chat ## Basic Information - **Project Name**: python-tcp-chat - **Description**: Python �������� TCP ������������Socket threading Tkinter GUI�������� FlexusX ���������� - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-10 - **Last Updated**: 2026-07-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Python 实现基于 TCP 的聊天程序 基于 **TCP Socket** 的多人聊天室:服务端用 **threading** 为每个客户端开线程并广播消息,客户端提供**控制台版**与 **Tkinter GUI 版**两种形态。 在 **4 台华为云 FlexusX 服务器**(Ubuntu 24.04)上并行实操:1 台跑服务端 + 4 台跑客户端,验证 TCP 连接、多线程并发与消息广播。 ## 知识点 | 知识点 | 说明 | | --- | --- | | TCP/IP 协议 | 面向连接、可靠字节流;三次握手建立连接 | | Python Socket | `socket.socket(AF_INET, SOCK_STREAM)` 服务端 listen/accept、客户端 connect | | threading 多线程 | 服务端每接受一个连接起一个守护线程,并发处理多个客户端 | | Tkinter GUI | 用图形界面收发消息,接收放到独立线程避免界面卡死 | ## 文件说明 - `chat_server.py` —— 聊天服务器(多线程广播) - `chat_client.py` —— 控制台客户端(支持脚本化消息,便于无界面服务器并行测试) - `chat_gui.py` —— Tkinter 图形界面客户端(`--auto` 可无界面自动连发,用于截图验证) - `run_chat.py` —— 本地编排脚本:paramiko 在 4 台服务器上并行部署并实测 - `results_chat/` —— 4 节点实测日志与合并 transcript - `gui.png` —— 在服务器 Xvfb 虚拟显示下运行 GUI 客户端的截图 ## 本地快速体验 ```bash # 终端1:启动服务器 python3 chat_server.py 9000 # 终端2/3/...:启动多个控制台客户端 python3 chat_client.py 127.0.0.1 9000 小明 "你好|大家好" # 或启动图形界面客户端 python3 chat_gui.py ``` ## 4 节点并行部署(华为云 FlexusX) ```bash python3 run_chat.py ``` - `ecs-a16b-0001` (114.116.249.146):聊天服务器 + 1 个本机客户端 - `ecs-a16b-0002 / 0003 / 0004`:各运行 1 个客户端,并发连入服务器 - 服务器用 `setsid` 脱离会话常驻,端口 9000 在节点间互通 ## 运行结果(节选) 每个客户端都收到了**其他 3 个节点**的消息,服务端日志显示 4 个客户端分别由 `Thread-2~5` 并发处理,证明 TCP 连接、多线程并发与广播均正常工作。 详见 `Python 实现基于TCP聊天程序.md`(CSDN 博客)。