2011-01-11 94 views
7

我正嘗試在java中發送多部分短消息。不能通過SMPP發送多部分短信在java中

public static void main(String[] args) throws Exception { 
    SMPPSession session = new SMPPSession(); 
    session.connectAndBind("0.0.0.0", 00000, new BindParameter(
       BindType.BIND_TX, "User", "Pass", "SMPP", TypeOfNumber.UNKNOWN, 
       NumberingPlanIndicator.UNKNOWN, null)); 
    Random random = new Random(); 

    final int totalSegments = 3; 
    OptionalParameter sarMsgRefNum = OptionalParameters.newSarMsgRefNum((short) random.nextInt()); 
    OptionalParameter sarTotalSegments = OptionalParameters.newSarTotalSegments(totalSegments); 

    for (int i = 0; i < totalSegments; i++) { 
     final int seqNum = i + 1; 
     String message = "Message part " + seqNum + " of " + totalSegments + " "; 
     OptionalParameter sarSegmentSeqnum = OptionalParameters 
       .newSarSegmentSeqnum(seqNum); 
     String messageId = session.submitShortMessage("CMT", TypeOfNumber.INTERNATIONAL, 
       NumberingPlanIndicator.UNKNOWN, "919999999999", TypeOfNumber.INTERNATIONAL, 
       NumberingPlanIndicator.UNKNOWN, "919999999999", new ESMClass(), 
       (byte) 0, (byte) 1, timeFormatter.format(new Date()), null, 
       new RegisteredDelivery(SMSCDeliveryReceipt.DEFAULT), (byte) 0, 
       new GeneralDataCoding(false, false, MessageClass.CLASS1, 
         Alphabet.ALPHA_8_BIT), (byte) 0, message.getBytes(),sarSegmentSeqnum, sarTotalSegments, sarMsgRefNum); 
     System.out.println("Message submitted, message_id is " + messageId); 
    } 
    session.unbindAndClose(); 
} 

但是,這段代碼似乎不起作用。我收到的消息是分成不同的消息,而不是連接在手機上。

任何指針我在做什麼錯在這裏。

+0

我建議你用[Wireshark](http://www.wireshark.org/)獲得發送的網絡跟蹤。它有一個很棒的SMPP協議處理程序,它將顯示數據包的所有標誌和選項。如果您在發佈詳細信息時仍遇到問題,我可能會提供幫助。 – alexrs 2011-05-31 19:10:45

回答

1

RAKS,

記住,不是在世界在世界上所有的網絡,也沒有所有手機都用於發送/接收所述多部分SMS消息正確配置。

正如您(正確)僞裝您的實際SMSC連接器,我不知道您連接到哪個載體/聚合器。因此,我不能評論這是否是您的具體情況中的問題。

但正如Alexrs所說,包括TCP Dump輸出,我們至少可以評論來自您的應用的正確輸出。

+0

即使在我所知道的支持多部分消息(同時發送和接收它們)的運營商和電話上,當使用與上述類似的代碼發送時,仍然存在多部分消息作爲幾條單獨消息接收的問題。 – ADTC 2013-11-07 07:24:50