一个基于C# WPF开发的局域网点对点聊天和文件传输应用程序。
- P2P聊天: 支持局域网内设备间直接文本聊天
- 文件传输: 支持大文件的可靠传输,带进度显示
- 设备发现: 自动发现局域网内的其他在线设备
- 现代UI: 简洁美观的WPF用户界面
- 多连接: 支持同时与多个设备通信
- Windows 10/11
- .NET 6.0 或更高版本
- 局域网连接
- 打开应用程序
- 输入您的用户名
- 点击"启动服务"按钮
- 自动发现: 应用程序会自动发现局域网内的其他设备,显示在左侧设备列表中
- 手动连接: 点击"连接设备"按钮,输入目标设备的IP地址和端口
- 在设备列表中选择一个在线设备
- 在底部输入框中输入消息
- 按Enter键或点击"发送"按钮发送消息
- 选择目标设备
- 点击"发送文件"按钮
- 选择要发送的文件
- 文件将自动传输,并显示进度
应用程序使用以下端口:
- 8000+: P2P通信端口(自动分配)
- 8001: 设备发现广播端口
- 8002: 设备发现监听端口
- 8003: 文件传输端口
接收的文件默认保存在:
%USERPROFILE%\Documents\P2P聊天接收文件\
- 打开
P2PChatApp.sln - 按F5运行或Ctrl+Shift+B编译
# 编译
dotnet build
# 运行
dotnet run --project P2PChatAppP2PChatApp/
├── Models/ # 数据模型
│ ├── DeviceInfo.cs # 设备信息模型
│ ├── MessageModels.cs # 消息模型
│ └── EventArgs.cs # 事件参数
├── Services/ # 服务层
│ ├── NetworkHelper.cs # 网络辅助工具
│ ├── P2PNetworkService.cs # P2P网络服务
│ ├── DeviceDiscoveryService.cs # 设备发现服务
│ └── FileTransferService.cs # 文件传输服务
├── MainWindow.xaml # 主窗口界面
├── MainWindow.xaml.cs # 主窗口逻辑
├── ConnectDialog.xaml # 连接对话框界面
├── ConnectDialog.xaml.cs # 连接对话框逻辑
└── App.xaml # 应用程序配置
- TCP通信: 使用TCP协议确保消息和文件传输的可靠性
- UDP广播: 使用UDP广播进行设备发现
- 异步编程: 全面使用async/await模式
- 事件驱动: 基于事件的架构设计
- 线程安全: 使用ConcurrentDictionary等线程安全集合
- 确保防火墙允许应用程序通信
- 所有设备需要在同一个局域网内
- 首次运行时可能需要管理员权限来配置防火墙规则
- 检查防火墙设置
- 确认设备在同一网段
- 检查网络连接
- 检查磁盘空间
- 确认文件权限
- 检查网络稳定性
本项目仅供学习和个人使用。