2011-07-18 29 views
7

我正在創建一個應用程序,其中我的機器將像SMSC一樣工作。從那裏我只需要發送deliver_sm。服務器將發送綁定請求。我需要將我的機器與服務器綁定。我的應用程序將像smpp客戶端一樣工作。我有logica smpp.jar。但我很困惑如何只發送deliver_sm。請給我一些想法和代碼。 可以anybdy請告訴我如何發送出站請求,這也會對我很有幫助。感謝 koushik。如何從SMSC發送deliver_sm請求

回答

16

您的問題無法以現在呈現的方式回答。我在下面解釋了兩種可能的設置,然後解釋了您正在尋求的解我的答案是根據SMPP 3.4 spec

設置

設置-1:您正在創建一個SMPP客戶

  1. 您正在創建一個SMPP客戶端。客戶通常啓動連接。客戶也被稱爲ESME(外部短消息實體)。
  2. 您的客戶將連接到SMSC。 SMSC是服務器,他們通常會等待連接。
  3. ESME可以通過「submit_sm」或「data_sm」PDU發送消息。

設置-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 

發送消息

我已經在設置部分中討論此的一個片段。重複在這裏,

  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, "121200"));//TON, NPI, source number 
pdu.setDestAddr(new Address(1, 1, "12120004321"));//TON, NPI, destination number 
pdu.setShortMessage("Hello world"); 
session.deliver(pdu); 
+0

感謝這一個片段是答我正在尋找。 – user778900