Skip to content

This project presents a comprehensive peer-to-peer (P2P) chat and file transfer application developed using C# and WPF framework. The application enables real-time communication and file sharing between devices within a local area network (LAN), featuring automatic device discovery, secure data transmission, and an intuitive user interface.

Notifications You must be signed in to change notification settings

moshi2005/P2PChatAPP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

P2P聊天和文件传输工具

一个基于C# WPF开发的局域网点对点聊天和文件传输应用程序。

功能特性

  • P2P聊天: 支持局域网内设备间直接文本聊天
  • 文件传输: 支持大文件的可靠传输,带进度显示
  • 设备发现: 自动发现局域网内的其他在线设备
  • 现代UI: 简洁美观的WPF用户界面
  • 多连接: 支持同时与多个设备通信

系统要求

  • Windows 10/11
  • .NET 6.0 或更高版本
  • 局域网连接

使用方法

1. 启动应用程序

  1. 打开应用程序
  2. 输入您的用户名
  3. 点击"启动服务"按钮

2. 连接设备

  • 自动发现: 应用程序会自动发现局域网内的其他设备,显示在左侧设备列表中
  • 手动连接: 点击"连接设备"按钮,输入目标设备的IP地址和端口

3. 聊天功能

  1. 在设备列表中选择一个在线设备
  2. 在底部输入框中输入消息
  3. 按Enter键或点击"发送"按钮发送消息

4. 文件传输

  1. 选择目标设备
  2. 点击"发送文件"按钮
  3. 选择要发送的文件
  4. 文件将自动传输,并显示进度

网络端口

应用程序使用以下端口:

  • 8000+: P2P通信端口(自动分配)
  • 8001: 设备发现广播端口
  • 8002: 设备发现监听端口
  • 8003: 文件传输端口

文件接收

接收的文件默认保存在: %USERPROFILE%\Documents\P2P聊天接收文件\

编译和运行

使用Visual Studio

  1. 打开 P2PChatApp.sln
  2. 按F5运行或Ctrl+Shift+B编译

使用命令行

# 编译
dotnet build

# 运行
dotnet run --project P2PChatApp

项目结构

P2PChatApp/
├── 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等线程安全集合

注意事项

  1. 确保防火墙允许应用程序通信
  2. 所有设备需要在同一个局域网内
  3. 首次运行时可能需要管理员权限来配置防火墙规则

故障排除

无法发现其他设备

  • 检查防火墙设置
  • 确认设备在同一网段
  • 检查网络连接

文件传输失败

  • 检查磁盘空间
  • 确认文件权限
  • 检查网络稳定性

许可证

本项目仅供学习和个人使用。

About

This project presents a comprehensive peer-to-peer (P2P) chat and file transfer application developed using C# and WPF framework. The application enables real-time communication and file sharing between devices within a local area network (LAN), featuring automatic device discovery, secure data transmission, and an intuitive user interface.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages