2011-01-11 62 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