C++ SMS SDK for Visual Studio

This example application was written in C++ using Visual Studio 2008 for to illustrate how you can send and receive SMS messages. The example uses the ozApi.dll file, that allows you to connect to Ozeki NG SMS Gateway over the network. The source code of the ozApi.dll is also included.

Download: c++-sms-sdk-with-source.zip (6MB)

Introduction

The C++ SMS SDK included in the downloadable example, opens a TCP/IP socket over the network to the SMSC and uses this socket to send and receive messages (Figure 1). It sends the SMS message after logging into the SMSC using a username and password. To use this example, you should setup an Ozeki NG SMS gateway instance on one of your servers in the network. The SMS gateway can operate a GSM modem or GSM phone attached to it with a data cable or it can connect to SMS service providers over the Internet. In the SMS gateway, you should create a standard user account and use that user account in this SMS C++ example.

This architecture can be used to access SMPP SMSC using C++. Of course not only C++ SMPP SMS connection is possible. You can setup C++ UCP SMS, C++ CIMD2 SMS and C++ modem AT command SMS solution with it.

c++ sms api connect to smsc using smpp connection
Figure 1 - C++ SMS API to connect to SMSC

C++ example code

The following example gives you a quick insight on how to use this C++ SMS API.

#include "../ozApi/ozApi.h"
#include <iostream>
#include <string>
#include <Windows.h>
using namespace std;

// dll description
HINSTANCE hDLL = NULL;

// This function unload ozApi.dll
void UnLoadOzekiApi()
{
        FreeLibrary((HMODULE)hDLL);
}

// This function load ozApi.dll
ozApi* LoadOzekiApi()
{
        HINSTANCE hDLL = NULL;
        SmsConnection conn;

        // Load ozApi.dll
        hDLL = LoadLibrary("ozApi.dll");

        if (hDLL != NULL)
        {
                conn = (SmsConnection)GetProcAddress((HMODULE)hDLL, "CreateSmsConnection");
            if (conn != NULL) return conn();
                UnLoadOzekiApi();
        }

        return NULL;
}


int main(int argc, char** argv)
{
        // Load ozApi dll and connect to it.
        ozApi* myConn = LoadOzekiApi();
        if (myConn == NULL)
        {
                // Error while connect to dll.
                cout << "Unable to load ozApi.dll" << endl;
                system("pause");
                return 0;
        }
        else
        {
                // Dll is loaded.
                cout << "Loaded" << endl;
        }

        // Connect to Ozeki NG SMS Gateway
        // on localhost (127.0.0.1) at port 9500.
        myConn->open("127.0.0.1", 9500);

        // Login with default username and password
        // (admin / abc123)
        if(myConn->login("admin", "abc123"))
        {
                // Send a test message to 0011111
                myConn->sendMessage("0011111", "Test Message.");
        }
        else
        {
                // If username/password is bad
                cout << "Bad usename or password" << endl;
        }


        // Closing connection.
        cout << "Closing connection..." << endl;
        myConn->close();

        // Unload ozApi.dll
        UnLoadOzekiApi();
        cout << "Done" << endl;

    return 0;
}

More information