Files
2025-12-18 06:01:29 +01:00

4.2 KiB

Python简易局域网聊天工具

项目介绍

本工具是一款基于Python开发的轻量级局域网聊天应用,支持多人实时通信、房间管理及权限控制,无需额外服务器,仅依赖局域网环境即可实现快速部署与使用,适用于小型团队协作、内网交流等场景。

核心功能

1. 房间管理:创建专属房间(支持密码锁定)、手动输入地址加入、自动搜索局域网房间
2. 实时通信:多人消息收发、@成员提醒、@全体通知功能
3. 权限控制:房主专属踢人、单独禁言/解禁、全体禁言/解禁、房间锁管理
4. 个性化设置:支持更换聊天文字颜色、清屏操作
5. 状态反馈:在线用户统计、禁言状态显示、房间连接状态提示
 
 技术栈
  
  - 开发语言:Python 3.6+
  - 核心技术:TCP协议(用户通信)、UDP广播(房间发现)、多线程并发(消息收发分离)
  - 依赖库:仅使用Python标准库(socket、threading、json、os、sys、time),无第三方依赖
   
   前置依赖
    
    1. 运行环境:安装Python 3.6及以上版本(推荐3.8+)
    2. 网络环境:所有用户需处于同一局域网(支持WiFi、有线局域网)
    3. 权限要求:运行脚本时需允许网络访问(防火墙放行Python进程)
     
     安装与部署
      
      1. 环境验证:打开终端/命令提示符,输入  python --version  确认Python版本符合要求
      2. 脚本获取:将聊天工具脚本(.py文件)保存至本地任意目录
      3. 启动运行:
      - Windows:在脚本目录按住Shift+右键,选择“在此处打开命令窗口”,输入  python 脚本文件名.py 
      - Linux/Mac:打开终端,切换至脚本目录,输入  python3 脚本文件名.py
       
       使用说明
        
        1. 主菜单操作
         
         1. - 创建房间:设置端口号(默认端口为8888)、创建后自动成为房主
         2. - 加入房间:手动输入目标房间IP和端口,若房间加锁需输入正确密码
         3. - 查找房间:自动扫描局域网内开放房间,选择序号即可加入
         4. - 退出脚本:关闭工具,终止所有连接
          
          2. 聊天界面指令
           
           - 基础指令:/清屏(清空终端显示)、/退出房间(返回主菜单)、/退出脚本(关闭工具)、/更换聊天颜色(选择文字颜色)
           - 房主专属指令:/房主菜单(打开权限管理界面)、/踢人 用户名(移出指定用户)、/禁言 用户名/全体(单独禁言或全体禁言)、/解禁 用户名/全体(解除禁言)
            
            3. 房主菜单操作
             
             1. - 踢人功能:输入用户名移出房间
             2. - 禁言功能:选择单独用户或全体进行禁言
             3. - 解禁功能:解除指定用户或全体禁言状态
             4. - 房间锁管理:开启/关闭房间锁,设置/修改房间密码
             5. - 查看在线用户:显示所有成员、禁言状态及在线人数
             6. - 解散房间:强制关闭房间,所有成员退出
             7. - 关闭菜单:返回聊天界面
              
              更新日志
               
               - 更新时间:2025年12月18日
               - 更新内容:
               1. 优化代码质量
               2. 规范代码
               3. 修复指令无效问题
                
                注意事项
                 
                 1. 端口号需在1024-65535之间选择,避免使用已被占用的端口
                 2. 房间密码需为4-8位字符,不含空格,建议告知信任用户避免泄露
                 3. 多人通信时请避免发送过大字符内容(单条消息建议不超过1024字符)
                 4. 若出现连接失败,检查是否处于同一局域网、IP/端口输入是否正确、防火墙是否拦截