上班族自救指南:我用AI写了个局域网聊天工具,专治两台电脑传文件困难症
一个周末搞定的小工具,解决了每天插拔U盘几十次的烦恼
“文章末尾有获取下载方式”
相信很多上班族都有这样的经历:工位上摆着两台电脑,一台内网办公,一台外网查资料。两台电脑之间传个文件、发个消息,要么靠U盘来回插拔,要么用微信/QQ小号来回倒腾,要么找一台公网服务器做中转——体验极差。
我就是这种"双机党"的典型受害者。
我工作的场景是这样的:左边一台内网电脑,处理公司内部系统、写代码、看文档;右边一台外网电脑,查技术资料、下载工具、跟外部沟通。两台电脑物理隔离,中间没有共享文件夹,没有局域网共享服务。
以前传文件怎么做的?U盘。一根U盘插来拔去,每天几十次。有时候文件改了一版又一版,U盘里的版本和电脑里的版本对不上,出了错都不知道是谁的锅。
发消息更搞笑:两个屏幕并排摆着,想给对方发个消息,得掏出手机打开微信,或者打开网页版QQ,消息发出去还得等对面刷新。明明人就在旁边,沟通却要绕一大圈。
我寻思着,两台电脑不就在同一个局域网里吗?为什么不能用局域网直接通信呢?
— — —
于是 LanChat 就诞生了

— — —
LanChat 使用指南
LanChat 是一个开箱即用的局域网即时通讯工具,不需要服务器、不需要互联网、不需要注册账号,双击打开就能用。
第一步:下载
下载后是一个单独的 exe 文件,双击运行即可。不需要安装,不需要配置环境,U盘拷过去就能用。(需要提前在两台电脑上都放一份)
第二步:启动
双击 LanChat.exe,程序会自动以当前计算机的主机名作为用户名启动。你会看到一个简洁的界面:
• 左侧是在线用户列表,显示当前局域网内所有运行 LanChat 的用户
• 右侧是聊天区域,双击左侧用户即可开始聊天
程序启动后会自动搜索局域网内的其他用户,不需要手动刷新。你也可以点击左上角的"刷新"按钮手动扫描。

第三步:发送消息
• 点击左侧在线用户列表中的任意用户,打开聊天窗口
• 在底部输入框中输入文字,按 Enter 键或点击"发送"按钮
• 消息会以气泡形式显示在聊天区域中,自己的消息在右侧(绿色气泡),对方的消息在左侧(白色气泡)
• 按 Shift+Enter 可以换行


第四步:发送文件
• 点击输入框旁边的"📎 发送文件"按钮,选择文件即可发送
• 更快捷的方式:直接点击发送文件按钮选择文件即可发送
• 接收的文件会自动保存到电脑的 下载/LanChat/ 文件夹中,对方可以右击气泡然后另存为自己要的位置

第五步:常用操作
右键点击消息气泡可以弹出菜单:
• 文本消息:复制文本 / 复制消息内容
• 文件消息:打开文件 / 另存文件… / 复制消息内容
双击收到的文件消息可以直接打开文件。
注意事项
• LanChat 使用 UDP 广播发现局域网内的其他用户,需要电脑在同一个子网内
• 如果 Windows 防火墙弹出网络访问提示,请点击"允许"
• 如果在线用户列表没有显示其他用户,点击"刷新"按钮手动扫描,或检查两台电脑是否在同一局域网
• 默认端口:UDP 9876(发现服务),TCP 9877(消息传输)
— — —
技术框架
LanChat 全部使用 Python 标准库实现,只有一个第三方依赖,零外部服务依赖。
技术架构


通信架构

编程语言:Python 3.14
Python是目前最流行的通用编程语言之一,语法简洁,生态丰富。LanChat 选择了 Python 作为开发语言,主要看中其标准库功能全面——网络编程、GUI 开发、多线程等均内置支持,一个解释器就能搞定全部功能。
网络通信:TCP + UDP 混合协议
LanChat 使用两种传输层协议协同工作:
UDP 广播(端口 9876)
用于局域网用户发现。每台电脑启动后会每隔 3 秒向局域网广播一条"hello"心跳消息,包含自己的主机名。其他电脑收到后就知道有新的用户上线了。如果连续 12 秒没有收到某台电脑的心跳,系统会自动将其标记为离线。
TCP 点对点(端口 9877)
用于实际的文本消息和文件传输。TCP 提供可靠的、有序的传输保障,确保消息不丢失、不乱序。文件传输时采用 32KB 的分块策略,每传完一块更新一次进度,大文件传输也有实时反馈。
GUI 框架:Tkinter
Tkinter 是 Python 内置的 GUI 框架,跨平台、轻量级,不依赖任何第三方 GUI 库。LanChat 的所有界面——在线用户列表、聊天窗口、消息气泡、输入框、按钮——全部使用 Tkinter 构建。
消息气泡的圆角背景使用了 Tkinter 的 Canvas 画布组件,通过多边形(Polygon)加平滑曲线模拟圆角矩形效果。
文件拖拽:tkinterdnd2
文件拖拽功能依赖 tkinterdnd2 库,它底层调用 TkDnD 原生扩展,实现了 Windows 原生的拖放体验。如果没有安装该库,程序会自动降级为按钮发送模式,不影响正常使用。
数据流
文本消息发送

文件发送

并发模型:多线程
LanChat 使用了 4 个后台守护线程并行工作:
• UDP 监听线程——持续接收局域网广播
• UDP 广播线程——定时发送心跳 + 检测用户超时
• TCP 服务线程——监听消息传输端口
• 消息队列处理线程——串行化网络消息到 UI
所有网络线程在后台运行,UI 更新通过 Tkinter 的 after() 方法线程安全地调度到主线程。
打包部署:PyInstaller
使用 PyInstaller 将 Python 脚本打包为单个 exe 可执行文件,无需安装 Python 解释器即可运行。打包时 TkDnD 原生扩展库一并集成。
为什么没有用 Electron / Web 技术?
很多人会问:为什么不用 Electron?网页版不是更方便?
答案很简单:第一,我的场景不需要跨平台(公司发什么电脑就用什么);第二,我需要一个 U 盘就能拷走的、双击就能用的工具,Electron 动辄上百 MB 的体积不符合这个要求;第三,Python + Tkinter 恰好够用,过度设计不是好事。
— — —
LanChat 不是什么大项目,它只是我在日常工作中遇到的一个小痛点,花了一点业余时间写出来的小工具。从有想法到第一版能用,只用了一个周末的时间。
但它确实解决了我每天插拔 U 盘几十次的烦恼。两台电脑之间的沟通,从"掏出手机发微信"变成了"双击打开直接说话"。
有时候最好的工具,就是为你量身定做的那一个。
— — —
项目地址/下载软件
(搜索公众号“码来的小朋友”,进入聊天框输入:01聊天工具 )
夜雨聆风