SMSlib接收重复的消息

时间:2014-12-21 06:52:12

标签: java smslib

我正在尝试使用D-Link USB调制解调器在计算机上接收短信。我找到了问题的解决方案link 但现在我面临的问题是我收到同样的消息3次,就像这样

New Inbound message detected from Gateway: 923145663675 Hello
New Inbound message detected from Gateway: 923145663675 Hello
New Inbound message detected from Gateway: 923145663675 Hello

如果程序长时间保持打开状态,则上面给出的这些行将一次又一次地打印在屏幕上 我在google上搜索了很多,有些建议我发现删除了未使用的通知,我已经这样做但仍然收到重复的消息。 代码如下:

public void doIt() throws Exception{                
   InboundNotification inboundNotification = new InboundNotification();

   try{

     SerialModemGateway gateway = new SerialModemGateway("modem.com4", "COM7", 921600, "", "");

     gateway.setProtocol(Protocols.PDU); 
     gateway.setInbound(true); 
     gateway.setSimPin("0000"); 
     Service.getInstance().setInboundMessageNotification(inboundNotification);
     Service.getInstance().addGateway(gateway);
     Service.getInstance().startService();

     System.out.println("Now Sleeping - Hit <enter> to stop service.");
     System.in.read();
     System.in.read();
  }catch (Exception e){
      e.printStackTrace();
  }finally{
      Service.getInstance().stopService();
  }
}

public class InboundNotification implements IInboundMessageNotification{
      public void process(AGateway gateway, MessageTypes msgType, InboundMessage msg){

        if (msgType == MessageTypes.INBOUND) {                     
              System.out.println("New Inbound message detected from Gateway: " + msg.getOriginator() + " " + msg.getText());

                try {
                    gateway.deleteMessage(msg);
                } catch (GatewayException ex) {
                    Logger.getLogger(ReadMessages.class.getName()).log(Level.SEVERE, null, ex); 
                }

        }
    }
}

2 个答案:

答案 0 :(得分:1)

也解决了这个问题。骗子杀了我。我不知道你为什么要为此编写代码,但我所做的只是将收件箱和发件箱保存到数据库(当入站通知首先到达时)并且我从GSM的收件箱中删除了该消息。我不再收到大量的通知了。它有效,但它并没有真正解决问题。只是一种解决方法。

我觉得它与端口有关。也许它需要潮红或其他东西。不确定,我还不是一个程序员那么好。

希望解决方法有所帮助!干杯!

答案 1 :(得分:1)

一旦我也面临同样的问题,而我的要求是保留所有传入消息的记录。因此,我在数据库中创建表,并将所有传入的消息插入数据库中,并提供完整的详细信息,例如发件人编号,邮件内容以及日期和时间。在数据库中,我使用日期,时间和消息内容的组合制作了独特的记录。

现在,如果我收到重复的消息,那么确定日期,时间和消息内容将是相同的。之后,当这些值将插入数据库时​​,重复值将不会插入数据库中。因此,我们将拥有独特的数据。

但这可能不适合您,因为事实上您并没有多次收到消息,您只会收到一条消息,稍后会多次显示通知。因为如果您将多次收到消息,那么日期和时间必须始终不同。但就我而言,这些都是一样的。因此,首先您应该尝试从收件箱中删除所有邮件,然后您可能需要刷新接收端口。