首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正在使用的org.smslib端口异常

正在使用的org.smslib端口异常
EN

Stack Overflow用户
提问于 2012-09-24 17:22:43
回答 3查看 1.8K关注 0票数 0

我正在尝试创建网络应用程序来发送短信通过gsm调制解调器在JSP首先我把目标手机号码和短信文本在网址和获取request.getparameter和第一条消息发送没有问题,但当再次发送一条消息通过参考同一页我得到这个异常:

代码语言:javascript
复制
org.smslib.GatewayException: Comm library exception: java.lang.RuntimeException: gnu.io.PortInUseException: org.smslib
    at org.smslib.modem.SerialModemDriver.connectPort(SerialModemDriver.java:102)
    at org.smslib.modem.AModemDriver.connect(AModemDriver.java:114)
    at org.smslib.modem.ModemGateway.startGateway(ModemGateway.java:189)
    at org.smslib.Service$1Starter.run(Service.java:276)

我试图停止网关和服务,但我的代码没有希望:

代码语言:javascript
复制
public boolean sendMessage(String strMobileNo,String strSMSText)
    {
        try
        {   
            OutboundMessage outboundMessage=new OutboundMessage();
            SMS message=new SMS();
            SerialModemGateway gateway = new SerialModemGateway("modem.com1", "COM12", 9600, "Huawie", "EF200");
            gateway.setInbound(true);
            gateway.setOutbound(true);
            gateway.setSimPin("0000");
            gateway.setSmscNumber("+9647701144010");
            Service.getInstance().setOutboundMessageNotification(message);
            Service.getInstance().addGateway(gateway);
            Service.getInstance().startService();
            outboundMessage.setText(strSMSText);
            outboundMessage.setRecipient(strMobileNo);
            outboundMessage.setEncoding(Message.MessageEncodings.ENCUCS2);
            //outboundMessage.setDeliveryDelay(5000);
            Service.getInstance().sendMessage(outboundMessage);
            System.out.println(outboundMessage);
            gateway.stopGateway();
            Service.getInstance().stopService();
            Thread.sleep(10000);
            return true;
        }
        catch (Exception e)
        {
            e.printStackTrace();
            return false;
    }
    }
EN

回答 3

Stack Overflow用户

发布于 2012-09-24 17:36:26

代码中的问题是每次发出请求时都会创建一个新的SerialModemGateway,这是不应该做的。

尽量让SerialModemGateway gateway = new SerialModemGateway("modem.com1", "COM12", 9600, "Huawie", "EF200");语句只在应用程序运行时调用一次,而不是每次请求都调用。

票数 1
EN

Stack Overflow用户

发布于 2013-05-07 13:49:09

在你最后运行的代码中试用这个Service.getInstance().stopService(),你也可以在再次运行它之前终止你的程序

票数 1
EN

Stack Overflow用户

发布于 2015-06-20 14:15:55

我用Service.getInstance().removeGateway(gateway);解决了这个问题

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12562141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档