Skip to content
ideastudiosPublic
forked from Emsoro/IPMsgPro

About

倍信 (Beixin/IPMsg Pro) - 局域网即时通讯 (LAN messenger), 兼容飞秋/IPMsg v3.0 协议 | A LAN messenger compatible with FeiQ/IPMsg v3.0, built with C++17 + React + WebView2

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Repository files navigation

倍信 (IPMsg Pro) v1.5.0

简体中文 | English

Release License Platform Build

基于 TauriCPP 框架和 ipmsg-master 协议实现的局域网即时通讯应用,兼容飞秋和IPMsg v3.0 协议(UDP 2425 端口)。

下载

前往 Releases 下载最新的单文件绿色版(无需安装,下载即用):

  • IPMsgPro-x.y.z-win64.zip — Windows x64 便携版(含 SHA256 校验)

功能特性

  • 用户自动发现 — UDP 广播自动发现局域网用户,支持多网段配置;子网定向广播 + 已知用户单播兜底,重启后联系人列表持久保留
  • 文字消息 — 实时收发文字消息,送达回执
  • 图片发送 — 发送图片前预览确认,接收后缩略图展示
  • 文件传输 — 发送/接收文件确认流程,传输进度实时显示
  • 消息右键菜单 — 文字消息复制、图片保存到本地、文件打开所在目录
  • 类微信界面 — 三栏布局:左侧会话列表、中间用户列表、右侧聊天面板;自绘标题栏,无原生窗口边框
  • 数据持久化 — SQLite 存储消息历史与联系人,配置信息本地保存,重启后聊天记录完整可达
  • 新消息提示音 — 收到新文字消息或文件接收请求时播放提示音,可在「设置」中开关(提示音已作为资源嵌入 exe,运行时自动提取播放)
  • 表情支持 — 聊天输入框可插入 emoji 表情,基于雪碧图(emoji.png)+ 定位数据(emoji_positon.less)实现

技术栈

层 技术
前端 React + TypeScript + Tailwind CSS + Vite
后端 C++17 + Win32 + WebView2
框架 TauriCPP (轻量 Tauri 替代,单 exe 无安装)
协议 IPMsg v3.0 (UDP 2425) + TCP 文件传输
数据库 SQLite3

项目结构

IPMsgPro/
├── src/                    # C++ 后端
│   ├── main.cpp           # 应用入口
│   ├── ipmsg/             # IPMsg 协议实现(移植自 ipmsg-master)
│   ├── bridge/            # 前后端桥接命令处理
│   ├── database/          # SQLite 消息存储
│   └── file/              # TCP 文件传输管理
├── frontend/              # React 前端
│   └── src/
│       ├── components/    # UI 组件
│       ├── stores/        # Zustand 状态管理
│       ├── services/      # 后端桥接服务
│       ├── assets/        # 静态资源(emoji 雪碧图 emoji.png 与定位样式 emoji_positon.less)
│       ├── emojiData.ts   # 由 assets/emoji_positon.less 生成的表情数据(scripts/gen_emoji_ts.cjs)
│       └── types/         # TypeScript 类型定义
├── TauriCPP/              # TauriCPP 框架(子模块)
├── resources/             # 应用图标、通知提示音(embedded)等资源
└── CMakeLists.txt         # CMake 构建配置

构建方式

前置依赖

  • Visual Studio 2022(含 C++ 桌面开发工作负载)
  • CMake 3.15+
  • Python 3(用于资源打包)
  • Node.js 18+

构建步骤

# 一键构建(自动安装前端依赖、构建前端、编译 C++)
.\build.ps1 -Arch x64          # 编译 x64 → build_x64/Release/IPMsgPro.exe
.\build.ps1 -Arch x86          # 编译 x86 → build_x86/Release/IPMsgPro_X86.exe

# 其他选项
.\build.ps1 -Arch x64 -Config Debug   # Debug 模式
.\build.ps1 -Arch x86 -Clean          # 清理重编
.\build.ps1 -Arch x64 -Run            # 编译完自动运行
.\build.ps1 -Arch x64 -SkipFrontend   # 跳过前端构建(前端未改动时)

手动构建

# 1. 安装前端依赖并构建
cd frontend
npm install
npm run build

# 2. 编译 C++(x64 / x86 二选一或都编译)
cd ..
cmake -B build_x64 -G "Visual Studio 17 2022" -A x64
cmake --build build_x64 --config Release

cmake -B build_x86 -G "Visual Studio 17 2022" -A Win32
cmake --build build_x86 --config Release

# 输出:
#   build_x64/Release/IPMsgPro.exe
#   build_x86/Release/IPMsgPro_X86.exe

协议兼容

兼容 IPMsg v3.0 协议,可与原版 IPMsg 及飞秋(FeiQ)互通:

  • UDP 2425 端口消息收发
  • TCP 文件传输(端口 2425)
  • IPMSG_SENDMSG / IPMSG_RECVMSG / IPMSG_FILEATTACHOPT 等标准命令
  • 文件接收确认流程(IPMSG_GETFILEDATA / IPMSG_RELEASEFILES)
  • 飞秋协议兼容:GBK/UTF-8 编码自动转换、无 \0 分隔符的 GETFILEDATA 解析、扩展版本号格式
  • 文件传输进度实时显示,发送完成后进度保持在 100% 并显示「发送成功」,支持打开接收文件所在文件夹

更新日志

v1.5.0

  • 修复:发送文件时聊天窗口出现两条记录
    • 历史记录合并改为按 id 去重、实时消息优先(带进度的副本胜出),传输完成/失败状态回写数据库
    • 接收方确认接收后消息 id 与后端对齐,同一请求重传不再重复弹窗
  • 修复:重启后联系人丢失、聊天记录无法到达
    • 联系人持久化到数据库,重启后以离线状态显示,点击即可查看历史记录
    • 新增子网定向广播(192.168.x.255),并向已知用户单播上线请求,广播被路由器/防火墙过滤的网络也能互相发现
    • 联系人退出改为置灰,不再从列表消失
    • 聊天记录改为加载最新 50 条(原先加载最旧的 50 条)
  • 新增:消息右键菜单
    • 文字消息 → 复制;图片消息 → 保存图片到本地(系统保存对话框);文件消息 → 打开文件所在目录
    • 移除 WebView2 默认的浏览器右键菜单
  • 新增:自绘标题栏
    • 去掉原生窗口标题与图标,界面更简洁;顶部条支持拖动、双击最大化、贴边分屏,右上角最小化/最大化/关闭按钮(关闭仍遵循「最小化行为」托盘设置)
  • 修复:消息列表智能滚动
    • 向上翻阅历史时,右键菜单或传输进度刷新不再把列表拽回底部

v1.4.5

  • 截图编辑器重构
    • 将文字工具替换为铅笔涂写工具,支持自由绘制
    • 工具栏按钮改为 SVG 图标样式(矩形、箭头、铅笔、马赛克),视觉更直观
    • 工具栏移至图片底部,操作更便捷
    • 取消/确定按钮改为红色 X / 绿色 √ 图标按钮
    • 截图文件命名改为 Beixin_YYYYMMDDHHmmss_screenshot.png 格式
  • 修复截图后窗口不在最前
    • SetAlwaysOnTop 增加 SWP_SHOWWINDOW 标志和 SetForegroundWindow 调用,确保截图结束后窗口回到前台

v1.4.0

  • 截图发送改为标准文件传输
    • 发送截图(及普通图片)不再使用飞秋内联富文本(引用消息 + 分片)协议,改为走标准 IPMSG_FILEATTACHOPT 文件通道;对方以「接收 / 确认」流程接收并保存,与常规文件发送行为一致
    • 移除了「原样回显给飞秋」诊断按钮及相关的内联截图回显逻辑

v1.3.0

  • 拖拽文件走真实磁盘路径发送(不再走 save_temp)
    • 在主窗口注册原生 IDropTarget,拦截系统级文件拖放(读取 CF_HDROP 中的真实文件路径),直接走 file.send 真实路径发送;不再经由前端 HTML5 拖放拿不到路径而退化为 base64 + file.save_temp 落盘的方案
    • 把拖放目标同时登记到主窗口及所有 WebView2 子窗口(含深层浏览器子窗口),并每 2 秒兜底重新登记,解决 WebView2 抢走拖放目标导致「拖上去一闪而过、松手无反应」的问题
  • 启动日志增强
    • 程序启动时在 ipmsg_gui_debug.log 输出:应用版本号、当前系统版本号(Windows 产品名/版本/内部版本号/ReleaseId)、默认语言与地区(如 zh-CN)、本机所有 IPv4 地址,便于排障

v1.2.2

  • 修复飞秋列表中中文昵称/群组名乱码
    • 本地用户信息(昵称、群组等)以 UTF-8 存储,广播报文在未携带 IPMSG_UTF8OPT 时统一编码为 GBK 发送,飞秋(FeiQ)可正确显示中文名
    • 文本消息与文件消息正文统一在 MakeMsg 内完成 UTF-8 → GBK 编码,避免重复转换
    • 修复“打开文件夹”跳到桌面:接收文件后打开所在文件夹时,UTF-8 路径未正确转为 UTF-16 导致中文路径失效,改用 MultiByteToWideChar(CP_UTF8) 正确转换
    • 文件传输崩溃防护与追踪日志:文件收/发均运行于 detached 线程,未捕获异常会触发 std::terminate 直接崩溃且无日志。现已在 HandleClientConnection/SendFileThread/RecvFileThread 入口及前端事件回调 bridge_->Emit(含 WebView2 回调)处包裹 try/catch 并记录异常;并在 WinMain 安装 SetUnhandledExceptionFilter + std::set_terminate,将 SEH 异常/未捕获 C++ 异常写入 ipmsg_gui_debug.log,便于定位中文文件名等场景的崩溃根因
  • 日志入口统一:将分散的 WriteTransferLog(FILE_XFER)、WriteDebugLog(BRIDGE)、MsgLog(MSGMNG)包装函数以及各模块中裸写的 std::cout/std::cerr 全部收口到唯一的 ipmsg::LogMessage(tag, level, msg) 入口,日志统一按 [时间][模块][级别] 消息 格式输出到 ipmsg_gui_debug.log,便于统一追踪与排查。

v1.2.0

  • 文件传输进度显示优化
    • 发送/接收过程中只更新对应气泡的进度条,不再整体刷新整个对话列表(解决对话记录不断闪烁的问题)
    • 发送完成后进度条保持在 100%,不再回落到 0%
    • 兼容飞秋分片/续传(GETFILEDATA)请求,避免续传重新从 0% 上报导致进度归零
  • 统一日志系统
    • 将原先分散的 ipmsgpro.log、msgmng.log 与 ipmsg_gui_debug.log 合并为单一文件 ipmsg_gui_debug.log
    • std::cout / std::cerr 的输出也重定向进该文件
    • 文件在每次启动应用时清空重建,日志按 [时间] [模块] [级别] 消息 格式输出(IPMSGPRO / MSGMNG / FILE_XFER / BRIDGE 标签区分来源)
    • 日志目录:%LOCALAPPDATA%\.ipmsgpro\ipmsg_gui_debug.log(默认端口;自定义端口为 .ipmsgpro_<端口>)

打赏 (Donate)

如果这个项目对你有帮助,欢迎请作者喝杯咖啡 ☕

打赏

License

本项目采用 MIT 许可证,仅供个人非商业用途免费使用。

  • 本仓库为 Emsoro/IPMsgPro 的二次开发版本,包含多项修复与功能增强,详见更新日志
  • 个人使用:遵循 MIT 许可证,可自由使用、修改、分发。
  • 商业使用:如需用于商业用途,须事先获得作者授权。

如需商业授权,请联系:support@emsoro.cn

MIT License © 2026 masonwu21(个人)

About

倍信 (Beixin/IPMsg Pro) - 局域网即时通讯 (LAN messenger), 兼容飞秋/IPMsg v3.0 协议 | A LAN messenger compatible with FeiQ/IPMsg v3.0, built with C++17 + React + WebView2

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages