Getting Started

This guide will help you get started with the SMPP Gateway libraries.

Installation

Requirements

  • Java 21+ (required for virtual threads)

  • Maven 3.8+ or Gradle 8+

Maven Dependencies

<!-- For server functionality -->
<dependency>
    <groupId>io.smppgateway</groupId>
    <artifactId>smpp-server</artifactId>
    <version>1.0.2</version>
</dependency>

<!-- For client functionality -->
<dependency>
    <groupId>io.smppgateway</groupId>
    <artifactId>smpp-client</artifactId>
    <version>1.0.2</version>
</dependency>

<!-- Core only (PDUs, codecs, types) -->
<dependency>
    <groupId>io.smppgateway</groupId>
    <artifactId>smpp-core</artifactId>
    <version>1.0.2</version>
</dependency>

Gradle Dependencies

// For server functionality
implementation 'io.smppgateway:smpp-server:1.0.2'

// For client functionality
implementation 'io.smppgateway:smpp-client:1.0.2'

// Core only (PDUs, codecs, types)
implementation 'io.smppgateway:smpp-core:1.0.2'

Module Structure

Module Description

smpp-core

PDUs, codecs, types, state machine (zero dependencies)

smpp-netty

Netty 4.1.x transport layer

smpp-server

Server implementation with virtual threads

smpp-client

Client with connection management

smpp-metrics

Optional Micrometer integration

smpp-server and smpp-client transitively include smpp-core and smpp-netty, so you typically only need to depend on the one you need.

Quick Example

Create an SMPP Server

SmppServer server = SmppServer.builder()
    .port(2775)
    .systemId("mysmsc")
    .maxConnections(100)
    .handler(new MyHandler())
    .build();

server.start();

Create an SMPP Client

SmppClient client = SmppClient.builder()
    .host("localhost")
    .port(2775)
    .systemId("testuser")
    .password("password")
    .bindType(SmppBindType.TRANSCEIVER)
    .build();

SmppClientSession session = client.connect();

Next Steps