# smpp_client_java **Repository Path**: vonjia/smpp_client_java ## Basic Information - **Project Name**: smpp_client_java - **Description**: java版smpp压测调试客户端 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-27 - **Last Updated**: 2026-02-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SMPP Client 基于jSMPP库实现的SMPP 3.4协议客户端,用于连接SMPP协议网关,进行短信发送和并发测试。 ## 功能特性 - 支持SMPP 3.4版本协议 - 支持短信发送 - 支持并发短信发送测试 - 支持配置文件和命令行参数两种配置方式 - 支持接收短信和送达报告 - 支持日志记录 - 提供Web界面和命令行两种操作方式 ## 技术栈 - Java 8 - Maven - Spring Boot 2.7.0 - jSMPP 2.3.7 - Thymeleaf - SLF4J + Logback ## 快速开始 ### 1. 配置 #### 配置文件方式 编辑 `src/main/resources/smpp.yaml` 文件: ```properties # SMPP Gateway Connection Parameters host=localhost port=2775 systemId=smppclient systemPassword=password systemType= # SMS Parameters serviceType= sourceAddr=SMPP_CLIENT sourceAddrTon=UNKNOWN sourceAddrNpi=UNKNOWN destAddrTon=INTERNATIONAL destAddrNpi=ISDN ``` #### 命令行参数方式 直接在命令行中指定参数,优先级高于配置文件。 ### 2. 构建 ```bash mvn clean package -DskipTests ``` 构建成功后,会在 `target` 目录下生成可执行的JAR文件 `smpp-client-1.0-SNAPSHOT.jar`。 ### 3. 使用 该项目支持两种使用方式:命令行方式和Web界面方式。 #### 3.1 命令行方式 ##### 发送单条短信 ```bash java -jar smpp-client-1.0-SNAPSHOT.jar send ``` 示例: ```bash java -jar smpp-client-1.0-SNAPSHOT.jar localhost 2775 smppclient password send +1234567890 "Hello, SMPP!" ``` ##### 并发发送短信 ```bash java -jar smpp-client-1.0-SNAPSHOT.jar concurrent ``` 示例: ```bash java -jar smpp-client-1.0-SNAPSHOT.jar localhost 2775 smppclient password concurrent 10 5 +1234567890 "Hello, Concurrent SMPP!" ``` #### 3.2 Web界面方式 ##### 启动Web应用 ```bash java -jar smpp-client-1.0-SNAPSHOT.jar ``` 启动成功后,通过浏览器访问: ``` http://localhost:8080 ``` ##### Web界面功能 1. **首页** - 配置SMPP网关连接参数 - 连接/断开SMPP网关 - 查看连接状态 - 配置参数包括: - 主机地址和端口 - 系统ID和密码 - 系统类型和服务类型 - 源地址和目的地址参数 - 绑定类型(TX/RX/TRX) 2. **发送短信页面** - 发送单条短信 - 配置短信参数 - 查看发送结果和消息ID 3. **并发测试页面** - 配置并发测试参数: - 线程数 - 每线程发送消息数 - 消息间延迟 - 运行并发测试 - 查看测试结果和统计信息 ##### Web界面使用步骤 1. 在首页配置SMPP网关参数 2. 点击"连接"按钮连接到SMPP网关 3. 连接成功后,可以: - 点击"发送短信"进入短信发送页面 - 点击"并发测试"进入并发测试页面 4. 使用完毕后,在首页点击"断开"按钮断开连接 ## 代码结构 ``` src/ ├── main/ │ ├── java/ │ │ └── com/ │ │ └── smpp/ │ │ └── client/ │ │ ├── controller/ # Web控制器 │ │ │ └── SmppController.java │ │ ├── model/ # 数据模型 │ │ │ ├── ConcurrentTestRequest.java │ │ │ ├── SmppConfig.java │ │ │ ├── SmsSendRequest.java │ │ │ └── TestResult.java │ │ ├── service/ # 业务逻辑 │ │ │ └── SmppService.java │ │ ├── Application.java # Spring Boot主类 │ │ ├── ConfigManager.java # 配置管理类 │ │ └── SMPPClient.java # SMPP协议核心实现 │ └── resources/ │ ├── templates/ # Thymeleaf模板 │ │ ├── concurrent-test.html │ │ ├── index.html │ │ └── send-sms.html │ ├── logback.xml # 日志配置 │ └── smpp.properties # SMPP配置 └── test/ # 测试代码 ``` ## 核心功能 ### 1. 连接管理 - 支持连接到SMPP网关 - 支持会话状态监听 - 支持断开连接 ### 2. 短信发送 - 支持单条短信发送 - 支持并发短信发送 - 支持配置短信参数(源地址、目的地址、消息类型等) ### 3. 消息接收 - 支持接收短信 - 支持接收送达报告 - 支持接收告警通知 ### 4. 并发测试 - 支持多线程并发发送短信 - 支持配置线程数和每线程发送消息数 - 支持配置消息间延迟 - 提供测试结果统计(成功数、失败数、吞吐量等) ## 配置管理 ### 配置文件 配置文件 `smpp.properties` 包含以下参数: | 参数名 | 描述 | 默认值 | |--------|------|--------| | host | SMPP网关主机地址 | localhost | | port | SMPP网关端口 | 2775 | | systemId | 系统ID | smppclient | | systemPassword | 系统密码 | password | | systemType | 系统类型 | 空 | | serviceType | 服务类型 | 空 | | sourceAddr | 源地址 | SMPP_CLIENT | | sourceAddrTon | 源地址类型 | UNKNOWN | | sourceAddrNpi | 源地址编号计划 | UNKNOWN | | destAddrTon | 目的地址类型 | INTERNATIONAL | | destAddrNpi | 目的地址编号计划 | ISDN | ### 命令行参数 命令行参数格式: ``` java -jar smpp-client-1.0-SNAPSHOT.jar [command] [params] ``` 可用命令: | 命令 | 参数 | 描述 | |------|------|------| | send | | 发送单条短信 | | concurrent | | 并发发送短信 | ## 日志 日志会同时输出到控制台和文件 `smpp-client.log`,日志级别可以在 `logback.xml` 中配置。 日志包含以下信息: - 连接状态变化 - 短信发送结果 - 接收的短信和送达报告 - 并发测试结果 - 错误信息 ## 测试 ### 单元测试 项目包含基本的单元测试框架,可通过以下命令运行: ```bash mvn test ``` ### 并发测试 可以通过Web界面或命令行方式进行并发测试,测试结果包含以下统计信息: - 测试开始时间和结束时间 - 测试持续时间 - 总消息数 - 成功消息数 - 失败消息数 - 吞吐量(消息/秒) ## 注意事项 1. 确保SMPP网关已启动并配置正确 2. 确保网络连接畅通 3. 配置正确的系统ID和密码 4. 根据实际情况调整短信参数 5. 并发测试时注意控制线程数,避免对网关造成过大压力 6. 建议先进行单条短信测试,确认配置正确后再进行并发测试 ## 扩展 可以根据需要扩展以下功能: - 支持更多SMPP操作(如查询、替换等) - 支持更复杂的并发测试场景 - 支持监控和统计功能 - 支持持久化存储 - 支持集群部署 ## 许可证 MIT