Features
  • Full support for SMPP 3.4 and SMPP 5.0.
  • Namespace separation between the two protocol versions.
  • Exceptions for data range errors, size issues and mis-use.
  • Fast and efficient ByteBuffer support classes for reading and writing of raw PDU octet information.
  • No dependencies on any non-standard libraries.
  • Similar design in C++ and Java.
SMPP Compliance
PDU 3.4 5.0
BindTransmitteryesyes
BindTransmitterRespyesyes
BindReceiveryesyes
BindReceiverRespyesyes
BindTransceiveryesyes
BindTransceiverRespyesyes
Outbindyesyes
Unbindyesyes
UnbindRespyesyes
EnquireLinkyesyes
EnquireLinkRespyesyes
AlertNotificationyesyes
GenericNackyesyes
SubmitSmyesyes
SubmitSmRespyesyes
DataSmyesyes
DataSmRespyesyes
SubmitMultiSmyesyes
SubmitMultiSmRespyesyes
DeliverSmyesyes
DeliverSmRespyesyes
CancelSmyesyes
CancelSmRespyesyes
QuerySmyesyes
QuerySmRespyesyes
ReplaceSmyesyes
ReplaceSmRespyesyes
BroadcastSm yes
BroadcastSmResp yes
QueryBroadcastSm yes
QueryBroadcastSmResp yes
CancelBroadcastSm yes
CancelBroadcastSmResp yes
Support
Support Feature Free Version Commercial
Full SMPP 3.4 implementationYesYes
Full SMPP 5.0 implementationYesYes
Bug reporting and fixesYesYes
Submission of patchesYesYes
Email support for installation Yes
Email support for integration Yes
Email support for development Yes
Commercially licensed package (not GPLv3) Yes

 

Code Examples

C++

#include <stdlib.h>
#include <iostream>
#include <suitesmpp/smpp34/support.hpp>

using namespace suitesmpp::smpp34;

int main()
{
    pdu::BindTransceiver* bindreq = new pdu::BindTransceiver;
    bindreq->setCommandStatus( constants::PduCommandStatus::ROK );
    bindreq->setSequenceNumber( 1 );
    bindreq->setSystemId( "SYSTEMID" );
    bindreq->setPassword( "password" );
    bindreq->setSystemType( "VMS" );
    bindreq->setInterfaceVersion( 0x34 );
    bindreq->setAddrTon( 0 );
    bindreq->setAddrNpi( 0 );
    bindreq->setAddressRange("");
    bindreq->setCommandLength( bindreq->size() );

    suitesmpp::ByteBuffer buffer( bindreq->size() );

    bindreq->generate( buffer );

    suitesmpp::PDU* pdu = support::parse( buffer );

    pdu->generatehr( std::cout );

    return EXIT_SUCCESS;
}

Java

import com.smksoftware.suitesmpp.common.*;
import com.smksoftware.suitesmpp.exceptions.*;
import com.smksoftware.suitesmpp.smpp50.constants.*;
import com.smksoftware.suitesmpp.smpp50.pdu.*;

import java.io.*;

public class Main
{
    public static void main( String[] args )
    throws
        RangeException, BufferInsufficientException,
        UnknownValueException, IOException
    {
        BindTransceiver bindreq = new BindTransceiver();

        bindreq.setCommandStatus( PduCommandStatus.ROK.getValue() );
        bindreq.setSequenceNumber( 1 );
        bindreq.setSystemId( "SYSTEMID" );
        bindreq.setPassword( "password" );
        bindreq.setSystemType( "VMS" );
        bindreq.setInterfaceVersion( 0x34 );
        bindreq.setAddrTon( 0 );
        bindreq.setAddrNpi( 0 );
        bindreq.setCommandLength( bindreq.size() );

        ByteBuffer buffer = new ByteBuffer( (int)bindreq.size() );

        bindreq.generate( buffer );

        PDU pdu = Parser.parse( buffer );

        PrintWriter myOut = new PrintWriter( System.out, true );
        pdu.generatehr( myOut );
    }
}
Download GPLv3 Releases

Documentation

Document Date Version File
Development Guide      
  15 Mar 2011 1.0.2 suitesmpp-devguide-1.0.2.pdf
  18 Jan 2011 1.0.1 suitesmpp-devguide-1.0.1.pdf
Release Notes      
  15 Mar 2011 1.0.2 suitesmpp-releasenotes-1.0.2.pdf
  18 Jan 2011 1.0.1 suitesmpp-releasenotes-1.0.1.pdf
  10 Jan 2011 1.0.0 suitesmpp-releasenotes-1.0.0.pdf

 

Source Code and Binaries

Language Date Version File
C++      
  15 Mar 2011 1.0.2 suitesmpp-1.0.2-gplv3.tar.gz
  18 Jan 2011 1.0.1 suitesmpp-1.0.1-gplv3.tar.gz
  10 Jan 2011 1.0.0 suitesmpp-1.0.0-gplv3.tar.gz
Java      
  15 Mar 2011 1.0.2 suitesmpp-1.0.2-gplv3.jar
  18 Jan 2011 1.0.1 suitesmpp-1.0.1-gplv3.jar
  10 Jan 2011 1.0.0 suitesmpp-1.0.0-gplv3.jar