我正在尝试使用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);
}
}
}
}
答案 0 :(得分:1)
也解决了这个问题。骗子杀了我。我不知道你为什么要为此编写代码,但我所做的只是将收件箱和发件箱保存到数据库(当入站通知首先到达时)并且我从GSM的收件箱中删除了该消息。我不再收到大量的通知了。它有效,但它并没有真正解决问题。只是一种解决方法。
我觉得它与端口有关。也许它需要潮红或其他东西。不确定,我还不是一个程序员那么好。
希望解决方法有所帮助!干杯!
答案 1 :(得分:1)
一旦我也面临同样的问题,而我的要求是保留所有传入消息的记录。因此,我在数据库中创建表,并将所有传入的消息插入数据库中,并提供完整的详细信息,例如发件人编号,邮件内容以及日期和时间。在数据库中,我使用日期,时间和消息内容的组合制作了独特的记录。
现在,如果我收到重复的消息,那么确定日期,时间和消息内容将是相同的。之后,当这些值将插入数据库时,重复值将不会插入数据库中。因此,我们将拥有独特的数据。
但这可能不适合您,因为事实上您并没有多次收到消息,您只会收到一条消息,稍后会多次显示通知。因为如果您将多次收到消息,那么日期和时间必须始终不同。但就我而言,这些都是一样的。因此,首先您应该尝试从收件箱中删除所有邮件,然后您可能需要刷新接收端口。