首页 文章

如何从SMSC发送deliver_sm请求

提问于
浏览
7

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

1 回答

  • 16

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

    Setup

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

    • 您正在创建SMPP客户端 . 客户端通常会启动连接 . 客户端也称为ESME(外部短消息实体) .

    • 您的客户端将连接到SMSC . SMSC是服务器,它们通常等待连接 .

    • ESME可以通过"submit_sm"或"data_sm" PDU发送消息 .

    Setup-2:您正在创建SMSC

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

    Initiating connection

    通常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
    

    Sending messages

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

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

    • 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);
    

相关问题