非彤小可保健品:多线程短信猫

来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 20:53:42
多线程同步+短信猫开发遇到问题[问题点数:100分,结帖人:IceWee]

IceWee
(凸^-^凸)
等 级:
结帖率:100.00%
楼主发表于:2009-07-01 15:45:59
我们的系统需要接收和发送短信功能,用了GSM Modem,就是插手机卡那个猫,买猫的时候附带了java二
次开发包,这类开发包的使用大同小异就不贴了。
实现方式:
在web服务器(Tomcat)启动时候在某个Servlet中初始化GSMModem这个对象(开发包中的java类,用于接发
短信的类),并将这个对象set到一个叫ReceiveSms的线程类中,启动这个线程接收短信,无限轮询下去。
再将这个GSMModem对象放到ServletContext中,以供其他web请求使用,每当有需要发送短信的web请求时
都会从ServletContext中获取这个对象来发送短信。因为短信猫是接发短信只能处理一件事,所以在接收
短信的线程中用到了synchronized(modem),modem就是这个GSMModem对象,发短信的时候也用到了同步。
起初,一切运行正常,后台轮询可以接收短信,前台web可以发送短信,并不冲突,而且同步有效,轮询
周期为1分钟,如果发送短信用了2分钟,那么接收短信的线程就要等待一会。可是运行了几天客户反映短
信发不出去了,我测试了一下确实。再测试接收,结果也接收不到了。我重新启动了Tomcat,发现刚刚测
试时候发给短信猫的短信现在全都接收成功了,前台用短信猫发送也可以发送成功!
疑惑:
我的实现方式貌似有效,同步也有效,但这个GSMModem对象是不是假死了?导致读取短信读不到,当重新
启动Tomcat后又重新创建了这个对象,一切恢复正常。那么为什么会这样呢?会出现在哪个环节呢?请大
家帮分析分析!
用过短信猫开发的朋友更要多给点意见,是不是我的实现方式有问题啊!希望大家踊跃回复!

xue08161981
(平安就是福)
等 级:
#1楼 得分:0回复于:2009-07-01 17:34:42
关注当中,支持楼主!
对我有用[0]
丢个板砖[0]
引用
举报
管理
TOP
精华推荐:100分两个小问题 来抢啊

rumlee
(rum-lee)
等 级:
#2楼 得分:60回复于:2009-07-01 21:10:44
具体原因很难一下子说的清楚,因为短信猫同一时间是只允许一个线程操作的,在这里这样同步比较麻烦,而且也不好,例如系统正在接收短信,而有个用户想操作发送短信,有可能要等待很长时间,对用户来说,就不是很友好。
我们以前用的解决方式是,发送短信的时候并不是直接立即调用短信猫发送短信,而是往数据库里面插入一条记录,设置一个标志是未发送的。有一个线程一直轮循,这个线程每个轮循里面都各执行一次发送短信和接收短信。这样写就不需要复杂的同步,而对于用户操作来说反馈也比较快。唯独的一个缺点是用户发送的时候并不是立即就知道是发送成功了还是失败了,必须要去查寻数据库的这个表的标志才能够知道。
对我有用[1]
丢个板砖[0]
引用
举报
管理
TOP
精华推荐:寻旧时的经典流行歌曲,找回以前的感觉。

shan__le
(写累了,不想动了~~)
等 级:
#3楼 得分:30回复于:2009-07-01 23:20:46
不知道你用的哪个短信猫,我也在写这个短信猫的发送问题,我的思路是将数据存储到数据库中,设置一个发送标记,每次系统自动读取数据库的非发送状态数据,如果有就执行短信猫的发送方法。
我的难题是困在开始了,如何去写自动读取程序?就是每1秒自动执行读取程序,用于读取数据库中的记录用于发送。
希望能够交流一下,我的QQ459542356
现在我系统用的是企信通,就是电信的短信发送程序,挺好用的,但是受控于电信,非常不舒服,我移动的也用过,也是效果不错但是受控,短信猫好处在这里,但是每次发送的时候好像非常慢,这个不知道你是怎么解决的?
对我有用[0]
丢个板砖[0]
引用
举报
管理
TOP
精华推荐:【征集】面试第一问,你对加班的看法

kokobox
(苏坡·爱得米音)
等 级:
#4楼 得分:0回复于:2009-07-01 23:46:15
你是不是收发的频率过高了
你先一点一点测试,看看多少短信的时候会出现丢失或假延迟现象,每次收发短信的返回值都是什么。
并发测试一下。
对我有用[0]
丢个板砖[0]
引用
举报
管理
TOP
精华推荐:祝女同胞们节日快乐,更加年轻漂亮,更有魅力。

gehaijie
(gehaijie)
等 级:
#5楼 得分:0回复于:2009-07-02 09:31:36
Intel? C++ Compiler --
Intel? Fortran Compiler--
Intel? Compiler Suite--
Intel Parallel Studio Products--
Intel? Math Kernel Library--
ICT Compiler Edition---
Intel? Cluster Toolkit--
Intel? Integrated Performance Primitives--
等 北京连邦软件 葛先生 13366018801
对我有用[1]
丢个板砖[0]
引用
举报
管理
TOP
精华推荐:JAVA程序员面试32问!(答者有分!)

yys79
(Tiger Tank)
等 级:
#6楼 得分:10回复于:2009-07-03 10:08:59
2,3楼的办法其实是对的,就是一般使用sp的短信平台也是这么搞。不用数据库也可以用mq之类的东西。从你的现象上来看,即使发不出去的时候,程序也应该把at命令写入了猫,应该是缺少个flush之类的操作。重起后,再次连接可能猫自己要flush一下,造成了后来都成功的现象。说不定可能就是某些时候等待时间过长引起的。
对我有用[0]
丢个板砖[0]
引用
举报
管理
TOP

ligoou
(升级中。。)
等 级:
#7楼 得分:0回复于:2009-07-03 10:16:24
学习
对我有用[0]
丢个板砖[0]
引用
举报
管理
TOP

wind_rosebush
(无痕)
等 级:
#8楼 得分:0回复于:2009-07-03 10:36:33
为什么用同步呢?
对我有用[0]
丢个板砖[0]
引用
举报
管理
TOP

a550155355
(a550155355)
等 级:
#9楼 得分:0回复于:2009-07-03 13:55:18
真是学习了,存数据库,不错
对我有用[0]
丢个板砖[0]
引用
举报
管理
TOP

IceWee
(凸^-^凸)
等 级:
#10楼 得分:0回复于:2009-07-09 20:47:30
very good! 用了2楼兄弟的方式,屡试不爽!而且我也打听了一些开发过短信猫的人,都是用此方法,不用同步,代码简单好维护!十分感谢!
对我有用[0]
丢个板砖[0]
引用
举报
管理
TOP

zhtzz
(zhtzz)
等 级:
#11楼 得分:0回复于:2009-07-20 20:54:30
我需要看看 哈哈
对我有用[0]
丢个板砖[0]
引用
举报
管理
TOP

mytaohu
(mytaohu)
等 级:
#12楼 得分:0回复于:2009-08-19 12:01:34
我的程序原来是异步读取的,我们技术总监非让他妈改成同步的,现在又让开发接收短信功能,现在短信猫一读短信就死,火死我乐!!
对我有用[0]
丢个板砖[0]
引用
举报
管理
TOP

genuine_6205
等 级:
#13楼 得分:0回复于:2009-08-20 16:59:32
呵呵,看大家开发短信猫都蛮有心得啊!
对我有用[0]
丢个板砖[0]
引用
举报
管理
TOP

lanweiqiang
等 级:
#14楼 得分:0回复于:2009-09-02 11:48:05
我也正在准备做短信开发,用的是中兴的猫,现在已经能用PDU方式发送短信了,在测试过程钟发现AT+CMGS比较慢,而且我们的系统存在多个用户同时发送短信,并且有可能在发送的同时接收到短信。这就需要考虑同步的问题了。
我自己的想法是:建立发送队列和接收队列和一个发送接收处理线程,该线程死循环,先查询发送队列,有数据就发送,发送成功后从发送队列中删除,知道发送队列为空,然后该线程再去查询猫,是否有新到的短信,如果有,保存到接收队列,并删除猫中的已读短信(防止超出容量)。
有经验的朋友帮忙看一下,我的思路也没有问题?谢谢 lanweiqiang@sina.com
对我有用[0]
丢个板砖[0]
引用
举报
管理
TOP

allentranks
等 级:
#15楼 得分:0回复于:2009-10-09 01:37:30
有没有好的便宜的短信猫推荐下?个人发烧用~价格最好能够在500以内
对我有用[0]
丢个板砖[0]
引用
举报
管理
TOP

mconnm
(mconnm)
等 级:
#20楼 得分:0回复于:2010-05-31 09:52:57
供应gsm/gprs/cdma 短信猫、彩信猫
短信接口(数据库接口、http接口、tcp接口、udp接口、ocx接口)
用短信猫建立起来的短信收发平台更加稳定、可靠,无需互联网支持, 就可以让你的系统轻松实现短信报警、短信通知、短信控制、短信查询、短信传输数据等实用功能。
联系人: 陈先生
网 址: http://www.mconnm.com
qq:374219104
另外我们还提供以下产品
来电显示盒开发包
led开发包(数据库接口,http接口,tcp接口,udp接口,ocx接口,gprs接口)
dtu
对我有用[0]
丢个板砖[1]
引用
举报
管理
TOP

nimenshiwangbadan
(nimenshiwangbadan)
等 级:
#22楼 得分:0回复于:2011-05-03 08:20:10
我对短信猫真的是很不理解啊 有哪位仁兄帮助小弟一把 本人QQ990558093 跪谢!
对我有用[0]
丢个板砖[0]
引用
举报
管理
TOP

kiane
(kiane)
等 级:
#23楼 得分:0回复于:2011-05-25 12:10:20
..同样在弄短信猫,貌似同步上有点问题。。
对我有用[0]