Efficient, scalable, rock-solid, and flexible Java implementation of the Short Messaging Peer to Peer Protocol (SMPP).
- Real-world used library by Twitter across nearly every SMSC vendor and mobile operator around the world. We've seen almost every variance in the SMPP protocol and this library handles it flawlessly.
- Rigorous unit testing
- Support for SMPP protocol:
- Version 3.3
- Version 3.4
- Most of version 5.0
- Uses non-blocking (NIO) sockets (via underlying Netty dependency, one thread can support 1 or more SMPP sessions)
- Can support thousands of binds/connections using minimal resources and threads
- Supports both client and server modes of the SMPP protocol (yes you can write your own SMPP server using this library as well as be a client to one)
- Supports synchronous request mode (send request and block until response received)
- Supports asynchronous request mode (send request, get a future response, and then decide when you'd like to wait/get a response)
- Advanced support for SMPP "windowing":
- Configurable window size per session
- Waiting for a window slot to open up
- Get a list of unacknowledged/in-flight PDUs if session disconnects
- SSL/TLS support for clients and servers
- Configurable support for expiry of unacknowledged PDUs
- Configurable counter metrics per client-session, server-session, or server.
- Support for sniffing/logging/discarding of PDUs before normal processing
The library has been tested and certified with hundreds of mobile operators and suppliers around the world. It's effective at being flexible with SMPP specifications that aren't truly compliant.
This library was originally developed by Cloudhopper, Inc. in 2008. Cloudhopper was acquired by Twitter in April 2010. The main author of this library, Joe Lauer, left Twitter in April 2013. While folks at Twitter still contribute and maintain this library, Joe is now with Mfizz, Inc. Mfizz actively sponsors this project in conjunction with Twitter. If you have any commercial questions/ideas pertaining to this library, feel free to reach out to Mfizz.
Library versions >= 5.0.0 are now published to the Maven Central Repository. Just add the following dependency to your project maven pom.xml:
<dependency> <groupId>com.cloudhopper</groupId> <artifactId>ch-smpp</artifactId> <version>[5.0.0,)</version> </dependency>
There are numerous examples of how to use various parts of this library:
To run some of the samples, there is a Makefile to simplify the syntax required by Maven:
make client make server make performance-client make simulator make rebind make parser make dlr make ssl-client make ssl-server
On Windows, the examples can run with
nmake instead of
The easiest way to get started is to try out our
ssl-client examples. Open up two shells. In the first shell, run:
In the second shell, run:
You'll see the client bind to the server and a few different type of requests exchanged back and forth.
A more complete persistent client demo:
A tutorial in Russian:
Please let us know if you have other tutorials worth mentioning!
Copyright (C) 2009-2014 Twitter, Inc.
This work is licensed under the Apache License, Version 2.0. See LICENSE for details.