(转) 最近公司的一个业务,因为每日有百万条以上的短信,出现了严重的短信延迟问题。与运营商沟通之后,允许我们直接连SMSC下行业务短信,不用再通过SMG了。

所以需要通过SMPP来发送。以前做过湖南移动梦网项目,也通过SMPP连过SMSC,依稀记得有现成的SMPP实现API可用,于是google了一把,果然发现开源项目:Java SMPP API@sourceforge.net

把API Download下来一看,呵呵,实现了SMPP协议,还提供了example程序,好用得很。

于是把各项配置弄好,直接在Example上修改了一下,发送了一条短信到自己的手机,英文短信OK!

再试一下中文,问题来了:不论我把中文如何转码,手机收到的都是乱码,晕死!咨询局方技术人员,也说不出一个子丑寅卯,只是告诉我,SMSC是中兴的,中文字符需按照Unicode编码,消息的DCS(Data Coding Schema)设为8即可。

无数次尝试之后,终于发现,把整个Java Project的Text Encoding设为UTF8,然后直接将中文字符串以UTF16格式获取Byte[],即通过语句
byte[] msgBytes = "中文字符串".getBytes("UTF16");
获得byte[]直接丢给SMPP API实现的Submit包即可显示中文,但是还有一个小小的问题,手机显示的字符串前总有一个非常规的字符,这个字符在Samsung手机上显示为一个方框,LG手机上显示为一个空格,Moto手机上显示为一个反黑的空格,非常烦人。比较了一下获取的byte[]的长度,发现确实比文字长度长了两个字节,于是试着把该byte[]的前两个byte去掉再试,果然一切OK了。

运行环境是Redhat Linux AS 3,字符集设置为GB18030。因为找到了上述的workaround来解决中文问题,我没有时间去尝试运行环境字符集设定对中文的影响了。

通过SMPP连接SMSC发送短信(转)相关推荐

  1. CMPP发送短信代码对照表

    MI::zzzz SMSC返回状态报告的状态值为EXPIRED MJ:zzzz SMSC返回状态报告的状态值为DELETED MK:zzzz SMSC返回状态报告的状态值为UNDELIV ML:zzz ...

  2. java 短信猫发送短信的方法

    http://zghbwjl.blog.163.com/blog/static/12033667220129175158806/ http://www.smscom.cn/sms_javasoft/ ...

  3. 使用NowSMS Gateway来接收发送短信和彩信

    硬件准备: GPRS Modem,不同的运营商波段可能不一样,比如Cingular是850/1900 MHz,而China Mobile是900/1800 MHz,购买时要注意.把SIM card插入 ...

  4. C# 通过串口发送短信

    手机短信群发作为企业日常通知,公告,天气预报等信息的一个发布平台,在于成本低,操作方便等诸多特点,成为企业通讯之首选.本文介绍短信的编码方式,AT指令以及用C#实现串口通讯的方法. 前言目前,发送短信 ...

  5. 移动发送短信的状态报告

    移动发送短信的状态报告  ISMG向SP送交状态报告中的STAT字段含义:发送短信的应答结果.SP根据该字段确定CMPP_SUBMIT消息的处理状态. 错误对照  CB:0001 非神州行预付费用户  ...

  6. TP5 封装多业务的发送短信功能(包括国际短信)

    1.准备工作 1.1.准备依赖包 这个网站提供的都是PHP包,挺有用的 https://packagist.org/ 另外还可以在GitHub上面下载 https://github.com/ 1.短信 ...

  7. 4che3 scu发送超时设置_Redis实现订阅发布与批量发送短信

    1 什么是redis订阅 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息.直接点,你可以理解为我关注了你,你发布了信息,文章等,我就可以立 ...

  8. 使用python移动飞信模块发送短信

    作者:miaoo 1.应用场景 由于自己做的一个系统需要用到发送短信到自己手机的功能,于是搜索了一下,发现了一个通过移动飞信通道发送短信开源库:PyFetion PyFetion 模拟实现了飞信的通信 ...

  9. CentOS6.2下使用Nokia E72i成功发送短信

    Linux下的飞信机器人好像不那么好用,监控服务器的报警无法及时通过短信的方式发送,于是就在想是否有其他方式可以替代.其实之前也考虑过这个问题,因为飞信是通过互联网去发短信的,但有时候公司的互联网会中 ...

最新文章

  1. 前端总线,外频及单位GT/s,MHz区别
  2. 雷霄骅开源视音频项目汇总
  3. Web API 安全问题
  4. Tableau研学小课堂(part5)--参数
  5. 轨道运营管理专业自荐书_轨道运营管理专业主要是学习什么_毕业后薪资待遇怎么样...
  6. [WildPackets.OmniPeek].OmniPeek.4.0.1
  7. redis 判断存在性_一口气说出四种幂等性解决方案,面试官露出了姨母笑~
  8. android 动态 添加删除 控件 图片
  9. python打印数组
  10. 迅雷5官方最新版免费下载
  11. CC++初学者编程教程(6) 配置WindowsXP虚拟机与VC6.0
  12. 非常简单的四子棋【java编写】
  13. CES 2017 DAY1:自动驾驶延续昨日热潮,其他产品更强调实用
  14. php获取肖前时间,马克思主义哲学原理(上下册)
  15. 编译原理实验一:词法分析程序设计与实现
  16. 【CAN总线在汽车行业中的基础应用】
  17. window7 蓝屏的脸不好看,开启AHCI拒绝蓝屏
  18. 扫盲啦!!!回囙囜囝回囟因囡団囤囥囦囧囨囩囱囫回囮国困囱囲図囵囶囷囸囹
  19. 不死鸟一飞的学习网址
  20. 华为低价策略将拿下C网招标30%最大份额

热门文章

  1. java -jar xx.jar 时报错:Exception in thread main java.lang.UnsupportedClassVersionError:
  2. 产品经理自检清单分享
  3. 高并发下的分布式缓存浅析
  4. 分享 8 个有趣且实用的 API
  5. 一张照片快速生成1寸照片,小白可用
  6. c++ 实现类注册机制的方法
  7. 网络硬盘录像机NVR的接入、解码、转发能力解析
  8. SpringMVC源代码学习外传(二)如何在重定向时传递参数FlashMap
  9. [前端css-3] 实现图片卷帘效果,以及动画
  10. Error Code: 1046. No database selectedSelect the default DB to be used by double-clicking its name i