Click here to Skip to main content
15,741,947 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I am interested in building a own sms server,
I have few doubts
1)What is required to build a sms server?,
2)What external hardware and software do we need? I am not worried about the cost
3)Do we need any external service?
4)using with windows(preferred) or open source products
I searched over the net, not able to find proper solution.

so some one can help me, clear description can really help<b></b>

1 solution

An SMS engine is a windows service meant to interact directly with 2 groups of phones that's ideally specific to sending SMS's.
Meaning they dont need to be 'talk' enabled.
You can settle for a standard phone that's talk and sms enabled.
As long as you have access to mount a usb connection directly to it and execute your own set of commands (This is key).
The windows service polls your database every second ( Configurable )
for a table called tblSMS_Outgoing.
A record usually consist of :
"Create Date" ( When the entry was created for queueing the sms),
"SendTime" (When the actual sms was submitted by the device),
"Successful (bool - Was the message submitted successfully - some events can set a flag to get confirmation from the recipient to respond if it was successful - this is 100% guaranteed. - costs more thou)"
"Details(Binary Data)" - you need to convert the binary data to hex or other ways depending on the phones requirements.
* Details can exceed 160 char length (1 sms limit) depending on your requirement. this rule should be enforced on the app layer as required.
no rule - exposes your service to abuse.
"Priority" - This should be around 3 integers or so
1 - common request (Normal working routine sms)
2 - Urgent SMS
3 - VIP ...
The priority gets polled in the select statement when calculating the next available sms to submit.
When you deal with tracking units for instance where you need to send 1000 sms's every 5 seconds or less - priorities helps alot ...
tblSMS_Incoming :
When the Windows Service finished 1 cycle of sending "poll" it does the opposite by means of checking the modems if there's any incoming sms's
Retrieve the details from the phone, save it into this table then delete it from the device.
If you dont remove the sms's your device will choke on memory cap.
tblSMS_incoming structure:
CreateDT - The date/time the sms was received in your engine.
SenderAddress - From who the sms came.
Data (Binary Data of sms)
Processed (bool) - Has any internal / external application accessed the sms - This is key - When another application polls this table to process sms on business logic - You need to flag it when the application is done with it - Otherwise you'll have duplicate business execution.
Once it's processed - your windows service should move the sms from
Incoming to "tblSMS_Incoming_Archive" to avoid excess index on your incoming table.
Same goes for your outgoing "tblSMS_outgoing_Archive"
Depending on your business volume on sms's
you should have a process in place to archive/purge the database entirely.
It's not common to have sms engines send 2-5 million sms's per day.
Hope this helps,
Share this answer
Mycroft Holmes 26-Nov-10 22:50pm    
Don't know why the OP didn't up vote this - an excellent answer.
Kiran P N 10-Feb-11 21:51pm    
"You can settle for a standard phone that's talk and sms enabled.
As long as you have access to mount a usb connection directly to it and execute your own set of commands (This is key)."
I have gone through AT commands.
If some one with an c# example will be appreciable

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900