如何从SMSC发送deliver_sm请求

use*_*900 6 smpp

我正在创建一个应用程序,我的机器将像一个SMSC.从那里我只需要发送deliver_sm.服务器将发送绑定请求.我需要将我的机器与服务器绑定.我的应用程序将像smpp客户端一样工作.我有logica smpp.jar.但我很困惑如何只发送deliver_sm.请给我一些想法和代码.可以anybdy请告诉我如何发送出站请求,这对我也很有帮助.谢谢koushik.

Wah*_*dik 16

您的问题无法按现在呈现的方式回答.我在下面解释了两种可能的设置,然后是您正在寻找的解决方案 我的答案基于SMPP 3.4规范.

建立

Setup-1:您正在创建SMPP客户端

  1. 您正在创建SMPP客户端.客户端通常会启动连接.客户端也称为ESME(外部短消息实体).
  2. 您的客户将连接到SMSC.SMSC是服务器,它们通常等待连接.
  3. ESME可以通过"submit_sm"或"data_sm"PDU发送消息.

Setup-2:您正在创建SMSC

  1. SMSC可以通过"deliver_sm"或"data_sm"PDU发送消息.

启动连接

通常ESME会向SMSC发送绑定请求.绑定请求可以通过"bind_transmitter","bind_receiver"或"bind_transceiver"PDU之一发送.

SMSC可以急切地邀请ESME通过"outbind"PDU发送绑定请求.在这种情况下,SMSC必须知道ESME的IP /端口.它很少使用.

这里有一个发送outbind请求的片段

//you will need these classes
import org.smpp.Session;
import org.smpp.pdu.Outbind;

Session session = .... ;//Assuming you created a session instance
Outbind outbind = new Outbind(...);//assuming you created a outbind instance

session.outbind(outbind);//send outbind
Run Code Online (Sandbox Code Playgroud)

发送消息

我已经在设置部分讨论了这个问题.在这里重复,

  1. ESME可以通过"submit_sm"或"data_sm"PDU发送消息.data_sm不经常使用.
  2. SMSC可以通过"deliver_sm"或"data_sm"PDU发送消息.data_sm不经常使用.

我不确定为什么只发送"deliver_sm"是如此重要.作为编码器,您可以控制要发送的PDU类型.

这是一个发送deliver_sm请求的片段

//you will need these classes
import org.smpp.Session;
import org.smpp.pdu.DeliverSM;

DeliverSM pdu = new DeliverSM();
pdu.setSequenceNumber(1);//set unique numbers
pdu.setSourceAddr(new Address(1, 1, "12120001234"));//TON, NPI, source number
pdu.setDestAddr(new Address(1, 1, "12120004321"));//TON, NPI, destination number
pdu.setShortMessage("Hello world");
session.deliver(pdu);
Run Code Online (Sandbox Code Playgroud)