# sro-bot **Repository Path**: hanjiuri/sro-bot ## Basic Information - **Project Name**: sro-bot - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-31 - **Last Updated**: 2025-09-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RSBot Java异步网络代理 基于Java NIO的高性能异步网络代理,专为游戏封包拦截和处理而设计。本项目是RSBot C#版本的Java重写,采用现代异步网络架构。 ## 特性 - **异步网络架构**: 基于Java NIO的非阻塞I/O,支持高并发连接 - **封包拦截与修改**: 灵活的钩子系统,支持封包拦截、修改和阻止 - **安全协议支持**: 内置加密解密和封包边界识别 - **事件驱动**: 完整的网络事件系统 - **线程安全**: 使用并发安全的数据结构和处理机制 - **易于扩展**: 模块化设计,便于添加新功能 ## 项目结构 ``` java-async-network/ ├── src/main/java/com/rsbot/ │ ├── network/ │ │ ├── NetBase.java # 异步网络基础类 │ │ ├── Client.java # 异步客户端监听 │ │ ├── Server.java # 异步服务器连接 │ │ ├── Proxy.java # 代理管理类 │ │ ├── packet/ │ │ │ ├── Packet.java # 封包数据类 │ │ │ ├── IPacketHook.java # 封包钩子接口 │ │ │ ├── IPacketHandler.java # 封包处理器接口 │ │ │ ├── PacketDestination.java# 封包目标枚举 │ │ │ └── PacketManager.java # 封包管理器 │ │ ├── protocol/ │ │ │ └── SecurityProtocol.java # 安全协议处理 │ │ └── event/ │ │ └── NetworkEventListener.java # 网络事件监听器 │ └── example/ │ ├── ProxyExample.java # 使用示例 │ └── hooks/ │ └── LoginPacketHook.java # 登录封包钩子示例 ├── pom.xml # Maven构建文件 └── README.md # 项目文档 ``` ## 快速开始 ### 环境要求 - Java 8 或更高版本 - Maven 3.6 或更高版本 ### 编译和运行 1. **克隆项目** ```bash cd RSBot-master/java-async-network ``` 2. **编译项目** ```bash mvn clean compile ``` 3. **运行示例** ```bash mvn exec:java -Dexec.mainClass="com.rsbot.example.ProxyExample" ``` 4. **打包可执行JAR** ```bash mvn clean package java -jar target/java-async-network-1.0.0.jar ``` ### 基本使用 ```java // 创建代理实例 Proxy proxy = new Proxy(); // 配置游戏服务器 proxy.setGameServer("127.0.0.1", 15779); proxy.setProxyPort(15880); // 注册封包钩子 proxy.getPacketManager().registerHook(new IPacketHook() { @Override public int getOpcode() { return 0x2001; // 目标操作码 } @Override public PacketDestination getDestination() { return PacketDestination.SERVER; } @Override public Packet replacePacket(Packet packet) { System.out.println("拦截到封包: " + packet.toString()); return packet; // 返回修改后的封包或null阻止发送 } }); // 启动代理 proxy.start(); ``` ## 核心组件 ### 1. NetBase - 网络基础类 提供异步网络通信的基础功能: - 封包队列管理 - 异步数据处理 - 连接状态管理 - 事件回调机制 ### 2. Client - 客户端监听器 负责监听游戏客户端连接: - NIO异步Socket监听 - 多客户端连接支持 - 自动连接管理 ### 3. Server - 服务器连接器 负责连接到游戏服务器: - 异步连接建立 - 自动重连机制 - 连接状态监控 ### 4. Proxy - 代理管理器 协调客户端和服务器连接: - 封包转发 - 钩子系统集成 - 统计信息收集 ### 5. PacketManager - 封包管理器 处理封包钩子和事件分发: - 钩子注册和管理 - 封包处理流水线 - 统计和监控 ## 封包钩子系统 ### 钩子类型 1. **特定操作码钩子**: 处理特定操作码的封包 2. **全局钩子**: 处理所有封包(操作码设为-1) 3. **方向性钩子**: 区分客户端到服务器或服务器到客户端 ### 钩子示例 ```java // 登录封包拦截 IPacketHook loginHook = new IPacketHook() { @Override public int getOpcode() { return 0x2001; } @Override public PacketDestination getDestination() { return PacketDestination.SERVER; } @Override public Packet replacePacket(Packet packet) { // 处理登录封包 System.out.println("用户尝试登录"); return packet; } }; // 注册钩子 packetManager.registerHook(loginHook); ``` ## 配置说明 ### 默认配置 - **代理端口**: 15880 - **游戏服务器**: 127.0.0.1:15779 (cSro-R默认) - **缓冲区大小**: 8192字节 - **连接超时**: 30秒 ### 客户端配置 将游戏客户端的服务器地址修改为: ``` 服务器IP: 127.0.0.1 端口: 15880 ``` ## 性能特性 - **零拷贝**: 使用DirectByteBuffer减少内存拷贝 - **事件驱动**: 基于Selector的事件循环 - **线程池**: 合理的线程池配置 - **内存管理**: 自动缓冲区管理和回收 ## 安全特性 - **封包加密**: 支持XOR等加密算法 - **边界检测**: 防止封包边界错误 - **异常处理**: 完善的错误处理机制 - **资源管理**: 自动资源清理 ## 扩展开发 ### 添加新的封包钩子 1. 实现`IPacketHook`接口 2. 重写`getOpcode()`、`getDestination()`和`replacePacket()`方法 3. 通过`PacketManager.registerHook()`注册 ### 添加网络事件监听 1. 实现`NetworkEventListener`接口 2. 重写需要的事件方法 3. 通过`addNetworkEventListener()`注册 ## 故障排除 ### 常见问题 1. **端口被占用** - 检查端口15880是否被其他程序占用 - 使用`netstat -an | grep 15880`检查 2. **连接超时** - 确认游戏服务器正在运行 - 检查防火墙设置 - 验证服务器地址和端口 3. **封包解析错误** - 检查封包格式是否正确 - 验证加密/解密逻辑 - 查看详细错误日志 ### 调试模式 启用详细日志输出: ```bash java -Dlogback.configurationFile=logback-debug.xml -jar target/java-async-network-1.0.0.jar ``` ## 许可证 本项目基于RSBot开源项目,遵循相同的开源许可证。 ## 贡献 欢迎提交Issue和Pull Request来改进项目。 ## 更新日志 ### v1.0.0 - 初始版本发布 - 完整的异步网络架构 - 封包拦截和处理系统 - 示例代码和文档