# quic_p2p **Repository Path**: nagiyoru/quic_p2p ## Basic Information - **Project Name**: quic_p2p - **Description**: quic协议下的p2p节点 - **Primary Language**: Rust - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-23 - **Last Updated**: 2026-01-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # QUIC P2P Network Application 一个基于QUIC协议的P2P网络应用程序,支持文本消息、文件传输和AI代理功能。 ## 功能特性 - 基于QUIC协议的安全P2P网络通信 - TUI(文本用户界面)用于交互式操作 - 节点发现和网络拓扑管理 - 文本消息和文件传输功能 - AI代理支持(可选) - 多节点连接管理和消息中继 ## 技术栈 - Rust语言开发 - QUIC协议实现:`quinn` crate - TUI界面:`ratatui` 和 `crossterm` - 异步运行时:`tokio` - 序列化:`serde` 和 `bincode` - 命令行参数解析:`clap` ## 项目结构 ``` src/ ├── main.rs # 程序入口点 ├── p2p/ # P2P核心功能模块 │ ├── app.rs # 命令行参数定义 │ ├── node/ # P2P节点实现 │ ├── view/ # TUI界面组件 │ ├── controller/ # 应用控制器 │ ├── model/ # 数据模型 │ └── gpt/ # AI代理功能 ├── dangerous/ # 不安全连接示例 └── no_client_auth/ # 无客户端认证示例 ``` ## 安装和运行 ### 编译项目 ```bash cargo build --release 运行节点 基本用法: bash ./target/release/p2p-bode -c -s -l [--remote-addr ] [--ai-agent] [--without-ui] 参数说明: -c, --cert-addr: 证书文件路径 -s, --server-name: 服务名称 -l, --local-addr: 本地监听地址(例如:127.0.0.1:5000) --remote-addr: 远程节点地址(用于连接到其他节点) --ai-agent: 启用AI代理功能 --without-ui: 不启动TUI界面 ``` ## 示例 启动第一个节点: ```bash RUST_LOG=info cargo run --bin p2p-node -- -c "./" -l 0.0.0.0:8888 -s node1 --ai-agent ``` 启动第二个节点并连接到第一个节点: ```bash RUST_LOG=info cargo run --bin p2p-node -- -c "./" -l 192.168.178.223:8889 --remote-addr 192.168.178.223:8888 -s node2 ``` ## 功能详解 ### P2P网络 该应用程序实现了完整的P2P网络功能,包括: - 节点自动发现 - 网络拓扑管理 - 消息中继传输 - 连接状态维护 ### 消息类型 支持多种消息类型: 1. 文本消息:普通文本通信 2. 文件传输:支持大文件分块传输 3. 网络控制消息:节点发现、连接管理等 ### TUI界面 应用程序提供了一个基于终端的用户界面,包括: - 消息显示区域 - 日志显示区域 - 节点列表显示 - 输入区域 ### AI代理 可选的AI代理功能允许节点具备智能回复能力。 ## 安全性 该应用程序支持多种安全配置: 基于TLS的QUIC连接加密 客户端认证 预共享密钥(PSK)支持 ## 许可证 请查看项目中的LICENSE文件了解详细信息。