SMPP SMSC simulator which uses cloudhopper SMPP library.
Switch branches/tags
Nothing to show
Clone or download
MavoCz Merge pull request #1 from krasa/b2
simplified configuration
Latest commit f23754c Apr 15, 2015
Type Name Latest commit message Commit time
Failed to load latest commit information.
src cleanup Apr 15, 2015
License.txt Readme update, added Apache license. Aug 3, 2014 Readme updates Jan 8, 2015
build.bat Initial commit. Aug 3, 2014
dist-assembly.xml Readme updates Jan 8, 2015
pom.xml Test improvement, both tests now pass, library upgrades. Jan 8, 2015

SMSC SMPP simulator

Simple SMSC SMPP simulator written in Java, basic features:

  • Listens on specified ports for SMPP messages and sends back OK responses.
  • Supports listening on multiple ports.
  • Thanks to Cloudhopper SMPP library detailed realtime statistics of SMPP traffic is available through JMX.

Delivery Receipt features:

  • For each submit (MT) request it receives, it sends a delivery receipt after fixed/random delay (configurable).
  • Outgoing delivery receipt messages are sent to connected set of RX and TRX connections with the same application/system ID as had the submit message that triggered the delivery receipt.
  • RoundRobin is used to rotate between available matching connections.

Deliver features, segmented messages:

  • Supports sending of deliver (MO) messages to connected clients.
  • Deliver messages may be segmented SMPP messages, supports segmentation set via optional parameter or via UDH00 or UDH08.
  • MO messages sent by simulator to connected clients are controlled with JMX commands - start, stop, send message stream and so on.

Simulator was used as a testing tools to test proper handling of delivery receipts and segmented deliver messages.

How to run:

Following command starts SMPP servers on ports 34567, 34568 and 34569 and sets log level to INFO:

java -Xms32m -Xmx1024m -jar smscsim.jar -ll INFO -p 34567 34568 34569

Only server ports and logging level can be defined when starting the server. Other parameters can be changed by changing Spring xml context. See src\main\resources\context.xml. Project needs to be recompiled after such config change (room for improvement :-).

Obviously Java (at least 1.7) is needed to run the simulator and it needs to be in the path.

How to use JMX features:

Download monitoring tool VisualVM and install additional MBeans browser plugin.

How to compile:

Maven 3.x is needed to build the project and create distribution package.

mvn clean install assembly:assembly

Unit test is provided to test basic delivery receipt functionality. See class


Uses following fantastic libraries:


Copyright (C) 2014 Matous Voldrich.

This work is licensed under the Apache License, Version 2.0. See LICENSE for details.