Skip to content

Repository files navigation

IP Phone - 局域网语音通话与即时通信系统 一个基于Java Swing开发的局域网语音通话与即时通信系统,支持实时语音通话、音频消息和文本聊天功能。

📋 功能特性 🎯 核心功能 实时语音通话:局域网内点对点高质量语音通信 音频消息:录制并发送音频消息文件 文本聊天:实时文本消息传输,支持独立聊天窗口 多模式通信:拨号通话和音频消息双模式切换

🛠 技术特性 音频处理:支持8kHz/16bit音频格式,自动设备检测 网络通信:TCP/UDP混合通信,智能连接管理 用户界面:现代化Swing界面,支持高DPI显示 系统集成:完整的MVC架构,模块化设计

📊 系统特点 ✅ 跨平台支持(Windows/macOS/Linux) ✅ 中文界面优化,美观易用 ✅ 实时状态监控和音频检测 ✅ 网络诊断和故障恢复 ✅ 资源占用优化,运行稳定

🚀 快速开始 环境要求 Java: JDK 8 或更高版本 操作系统: Windows 10+, macOS 10.15+, Linux (Ubuntu 18.04+) 网络: 局域网环境,支持TCP/UDP通信 音频设备: 麦克风和扬声器/耳机

防火墙配置 确保以下端口在防火墙中开放:

8081: TCP通话信令 8182: TCP音频消息 9091: UDP实时音频 8283: TCP聊天功能

📖 使用指南 首次运行 启动程序,查看主界面显示的本地IP地址 点击"启动服务器"按钮 另一台电脑重复上述步骤

语音通话 主界面输入对方IP地址 选择"拨号通话"模式 点击"连接"按钮 对方接听后开始通话

发送音频消息 选择"音频消息"模式 点击"开始录音"录制语音 点击"停止录音"结束录制 点击"发送消息"发送给指定IP

文本聊天 输入对方IP地址 点击"在线聊天"按钮 对方接受邀请后开始聊天 系统诊断 点击"诊断"按钮查看:

本地IP地址和网络状态 服务器运行状态 音频设备检测结果 端口连接测试

🏗 系统架构 代码结构 src/ ├── controller/ # 控制器层 │ ├── AudioController.java # 音频控制 │ ├── CallController.java # 通话控制 │ ├── ChatController.java # 聊天控制 │ └── ServerController.java # 服务器控制 ├── model/ # 模型层 │ ├── AudioModel.java # 音频数据模型 │ ├── CallModel.java # 通话状态模型 │ └── NetworkModel.java # 网络连接模型 ├── view/ # 视图层 │ ├── MainView.java # 主界面 │ ├── DialingView.java # 拨号界面 │ ├── CallView.java # 通话界面 │ ├── ChatView.java # 聊天界面 │ └── BackgroundPanel.java # 背景面板基类 └── util/ # 工具类 ├── FontUtils.java # 字体工具 └── IPPhone.java # 应用程序入口

通信协议 端口 协议 用途 描述 8081 TCP 通话信令 建立/结束通话,状态同步 8182 TCP 音频消息 音频文件传输 9091 UDP 实时音频 语音数据流传输 8283 TCP 聊天功能 文本消息传输

📊 性能指标 系统要求 最低配置: 2GB RAM, 双核CPU, 100MB磁盘空间

推荐配置: 4GB RAM, 四核CPU, 200MB磁盘空间

网络要求 带宽: 最低64Kbps,推荐128Kbps以上

延迟: 建议<100ms

丢包率: 建议<5%

音频质量 采样率: 8kHz

位深度: 16bit

声道: 单声道

延迟: 100-300ms

✨ 提示: 建议在同一局域网环境下使用本系统以获得最佳体验。如果在不同子网或通过路由器使用,可能需要配置端口转发。

About

Advanced IP phone system based on TCP/UDP. XJTUSE CN project

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages