# network-share **Repository Path**: mandy-project/network-share ## Basic Information - **Project Name**: network-share - **Description**: 内网穿透工具,支付调试,非局域网调试等 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-27 - **Last Updated**: 2025-12-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Network Share - 内网穿透工具 一个基于 Netty 的轻量级内网穿透工具,支持多用户、多端口动态转发。 ## 快速开始 ### 1. 打包项目 ```bash ./mvnw clean package -DskipTests ``` 生成的 JAR 包: - `network-share-server/target/network-share-server.jar` - `network-share-client/target/network-share-client.jar` ### 2. 启动 Server(部署到阿里云) ```bash java -jar network-share-server.jar ``` 默认端口: - **控制端口**:9999(Client 连接) - **HTTP 端口**:8888(外部访问) ### 3. 启动 Client(本地运行) ```bash java -jar network-share-client.jar \ --network-share.client.server-host=你的阿里云IP \ --network-share.client.client-id=zhangsan \ --network-share.client.local-host=192.168.31.3 ``` ## 使用示例 ### 场景:暴露本地 3000 和 4000 端口服务 假设: - Server 部署在:`123.45.67.89` - Client ID:`zhangsan` - 本地有两个服务:3000 端口(前端)、4000 端口(后端) **访问方式**: ```bash # 访问本地 3000 端口 curl http://123.45.67.89:8888/zhangsan/3000/index.html # 访问本地 4000 端口 curl http://123.45.67.89:8888/zhangsan/4000/api/users ``` **URL 格式**: ``` http://:8888//<本地端口>/<路径> ``` ## 多用户支持 多个用户可以同时连接到同一个 Server: ```bash # 用户 1:张三 java -jar network-share-client.jar \ --network-share.client.server-host=123.45.67.89 \ --network-share.client.local-host=192.168.31.3 \ # 本地服务地址(默认 localhost) --network-share.client.client-id=zhangsan # 用户 2:李四 java -jar network-share-client.jar \ --network-share.client.server-host=123.45.67.89 \ --network-share.client.local-host=192.168.31.3 \ # 本地服务地址(默认 localhost) --network-share.client.client-id=lisi ``` 访问不同用户的服务: ```bash # 访问张三的 3000 端口 curl http://123.45.67.89:8888/zhangsan/3000/ # 访问李四的 3000 端口 curl http://123.45.67.89:8888/lisi/3000/ ``` ## 高级配置(可选) ### Client 端 ```bash java -jar network-share-client.jar \ --network-share.client.server-host=123.45.67.89 \ # Server 地址(必填) --network-share.client.server-port=9999 \ # Server 端口(默认 9999) --network-share.client.client-id=zhangsan \ # Client ID(默认自动生成) --network-share.client.local-host=192.168.31.3 \ # 本地服务地址(默认 localhost) --network-share.client.heartbeat-interval=10000 \ # 心跳间隔(默认 10 秒) --network-share.client.reconnect-interval=5000 \ # 重连间隔(默认 5 秒) --network-share.client.max-reconnect-times=0 # 最大重连次数(默认无限) ``` ### Server 端 ```bash java -jar network-share-server.jar \ --network-share.server.control-port=9999 \ # 控制端口(默认 9999) --network-share.server.http-port=8888 \ # HTTP 端口(默认 8888) --network-share.server.heartbeat-timeout=30000 \ # 心跳超时(默认 30 秒) --network-share.server.max-clients=100 # 最大客户端数(默认 100) ``` ## 特性 - ✅ **零配置多端口**:无需预先配置端口列表,支持动态访问任意本地端口 - ✅ **多用户支持**:多个用户可以同时使用同一个 Server - ✅ **自动重连**:Client 断线后自动重连 - ✅ **心跳保活**:自动检测连接状态 - ✅ **轻量级**:基于 Netty,性能优异 ## 技术栈 - Java 18+ - Spring Boot 3.5 - Netty 4.1 - Maven ## 常见问题 ### 1. Client 启动后无法连接? 检查: - Server 是否正常启动 - Server 的 9999 端口是否开放 - `server-host` 配置是否正确 ### 2. 访问 8888 端口提示连接被拒绝? 检查: - Server 的 8888 端口是否开放(云服务器需要在安全组放行) - Client 是否已成功连接并注册 ### 3. 如何查看当前连接的 Client? 查看 Server 日志,会显示所有已注册的 Client ID。 ### 4. 本地服务只能通过 IP 访问,localhost 不可用? 使用 `--network-share.client.local-host` 参数指定你的本地 IP 地址: ```bash java -jar network-share-client.jar \ --network-share.client.server-host=123.45.67.89 \ --network-share.client.client-id=zhangsan \ --network-share.client.local-host=192.168.31.3 ``` ## License MIT