SMK Software

By: Smk Software  11-11-2011


  • 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
BindTransmitter yes yes
BindTransmitterResp yes yes
BindReceiver yes yes
BindReceiverResp yes yes
BindTransceiver yes yes
BindTransceiverResp yes yes
Outbind yes yes
Unbind yes yes
UnbindResp yes yes
EnquireLink yes yes
EnquireLinkResp yes yes
AlertNotification yes yes
GenericNack yes yes
SubmitSm yes yes
SubmitSmResp yes yes
DataSm yes yes
DataSmResp yes yes
SubmitMultiSm yes yes
SubmitMultiSmResp yes yes
DeliverSm yes yes
DeliverSmResp yes yes
CancelSm yes yes
CancelSmResp yes yes
QuerySm yes yes
QuerySmResp yes yes
ReplaceSm yes yes
ReplaceSmResp yes yes
BroadcastSm   yes
BroadcastSmResp   yes
QueryBroadcastSm   yes
QueryBroadcastSmResp   yes
CancelBroadcastSm   yes
CancelBroadcastSmResp   yes


Support Feature Free Version Commercial
Full SMPP 3.4 implementation Yes Yes
Full SMPP 5.0 implementation Yes Yes
Bug reporting and fixes Yes Yes
Submission of patches Yes Yes
Commercially licensed package (not GPLv3)   Yes

Code Examples


#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->setCommandLength( bindreq->size() );

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

  bindreq->generate( buffer );

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

  pdu->generatehr( std::cout );

  return EXIT_SUCCESS;


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


public class Main
  public static void main( String[] args )
    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


Source Code and Binaries

Contact Smk Software

Email - none provided

Print this page