`
codsoul
  • 浏览: 212519 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

通过SMPP连接SMSC发送短信(转)

 
阅读更多
(转) 最近公司的一个业务,因为每日有百万条以上的短信,出现了严重的短信延迟问题。与运营商沟通之后,允许我们直接连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来解决中文问题,我没有时间去尝试运行环境字符集设定对中文的影响了。




分享到:
评论
2 楼 Partys 2015-10-21  
1243689751@qq.com 求源码 有偿
1 楼 biran1980 2012-08-27  
求实现代码,9768089@163.com,谢谢

相关推荐

    使用SMPP发送短信

    使用SMPP发送短信是一项在企业级应用中常见的功能,它允许开发者使用SMPP(Short Message Peer-to-Peer)协议,与短信中心(SMSC)进行通信,实现短信的发送、接收、报告等功能。在实际应用中,开发者通常会面临实时...

    smpp.zip_SMPP 短信_SMPP协议_smpp_短信协议 smpp_短信平台

    2. **短信提交**:使用“submit_sm”命令,包含短信内容、目标地址、编码格式等信息,将短信发送到SMSC。 3. **状态报告**:通过“submit_sm_resp”、“deliver_sm”等命令获取短信发送的状态报告,如成功、失败、...

    smppapi3.4_SMPPjava_SMPP短信_smpp3.4测试程序_

    本文将深入探讨如何使用SMPP协议和Java编程语言来实现在IT环境中发送短信的功能。SMPP(Short Message Peer-to-Peer)是一种广泛应用于移动通信中的应用层协议,它允许服务提供商与短消息服务中心(SMSC)进行交互,...

    基于smpp协议的Java点对点短信发送源码包.7z

    例如,bind命令用于建立客户端与SMSC之间的连接,而submit_sm命令则用于发送短信。在源码包中,我们可能找到以下关键组件: 1. **连接管理器**:这部分代码负责建立和维护与SMSC的TCP连接。它可能包含连接的建立、...

    利用SMPP协议与SMSC通信源程序

    一旦建立连接,客户端可以发送SubmitSM请求来发送短信,或者接收DeliverSM响应来接收短信。此外,还支持绑定、解绑、查询状态等多种操作,确保了服务的灵活性和可靠性。 4. **源程序结构**:提到的源程序包含三个包...

    基于smpp协议的Java点对点短信发送源码包

    - **发送短信**:通过已建立的连接,调用`submit`方法发送`SubmitSM`对象。 - **处理响应**:接收SMSC的响应,确认短信是否成功发送。 - **断开连接**:发送完毕后,释放资源,解除与SMSC的绑定。 4. **源码包...

    smpp协议 pdf文档 短信协议

    SMPP协议允许应用服务器通过长连接方式与SMSC保持通信,避免了频繁建立和关闭连接的开销,提高了处理大量短信时的效率。同时,SMPP协议支持批量提交和异步响应,对于处理大规模并发请求具有显著优势。 SMPP协议的...

    短信发送协议SMPP3

    SMPP连接过程 1. **绑定(Bind)**: 客户端首先需要通过`bind_transmitter`或`bind_receiver`命令与SMSC建立连接,表明其身份和角色。 2. **数据交换**: 经过绑定后,ESME可以使用`submit_sm`发送短信,或者接收...

    基于smpp协议的Java点对点短信发送源码包.rar

    开发者通过阅读和学习这些源码,可以了解到如何使用Java实现SMPP连接,以及如何设计和优化短信发送流程。同时,也可以根据需求对其进行修改和扩展,以适应特定业务场景。对于想要深入了解电信短信服务或者希望自建...

    短信发送协议(CMPP,SMPP,SGIP,SMGP).zip

    短信发送协议是通信行业中用于移动网络短信服务的重要标准,这些协议包括CMPP(China Mobile Packet Protocol)、SMPP(Short Message Peer-to-Peer)、SGIP(Short Message Gateway Internet Protocol)以及SMGP...

    SMPP_protocol.zip_SMPP 短信_smpp_smpp g_短信smpp

    2. **短信提交(Submitting SMS)**: 经过绑定成功后,客户端可以使用`submit_sm`命令发送短信。该命令包含短信的源地址、目标地址、短信内容等信息。 3. **短信接收(Receiving SMS)**: SMSC接收到短信后,会通过...

    SMPP协议(SP短信开发)

    **SMPP协议(SP短信开发)** ...总之,SMPP协议是SP短信开发中的核心部分,它定义了如何与SMSC进行有效通信,实现短信的发送、接收和状态报告等功能。理解和掌握SMPP协议对于构建可靠的短信服务系统至关重要。

    Java实现的点对点短消息发送协议(smpp)开发包源码.rar

    `SubmitSM`用于发送短信,`DeliverSM`用于接收短信。源码中可能会有对应的类来封装这两个操作,包括设置消息属性(如源地址、目标地址、短信内容等)和处理响应。 6. **错误处理与重试机制**:由于网络环境的不稳定...

    cmpp smpp cngp smgp sgip短信协议

    SMGP协议定义了短信中心(SMSC)与业务平台之间的通信规范,使得企业可以方便地接入电信网络发送短信。 SGIP(Short Message Internet Push)是中国联通的短信互联网推送协议,适用于大规模、高速率的短信发送需求...

    smpp.rar_SMPP jar_SMPP java_smpp_smpp send ja_smpp3.4 java

    3. **短信提交**:使用`submit_sm`命令,包含短信的内容、目标手机号码、服务类型等信息,向SMSC发送短信请求。 4. **接收短信**:当ESME处于Receiver或Transceiver模式时,可以接收`deliver_sm`命令,这是SMSC发送...

    小灵通短信协议smpp标准文档

    ### 小灵通短信协议SMPP标准文档知识点详解 #### 一、SMPP协议简介 SMPP(Short Message Peer-to-Peer Protocol)是一种用于在移动网络运营商之间交换短消息的应用层协议。它允许第三方实体(如ESME, External ...

    Java实现的点对点短消息发送协议(smpp)开发包源码.7z

    2. **客户端API**:提供了一组接口和类,使开发者能够方便地与SMPP服务器进行交互,如建立连接、发送短信、接收短信、处理响应等。 3. **示例应用**:可能包含一些简单的示例程序,演示如何使用该库来实现基本的...

    基于smpp协议的Java点对点短信发送源码包.zip

    在本源码包中,开发者可以找到如何在Java中实现SMPP连接、会话管理、数据编码解码以及消息发送和接收的详细代码。 1. **SMPP连接与会话管理** 在Java中,通常使用开源库如jsmpp(Java SMPP library)来实现SMPP...

    点对点短消息发送协议(smpp)开发包源码

    3. **绑定操作**:在使用SMPP发送短信前,客户端必须先进行bind操作,选择作为transmitter(只发送)、receiver(只接收)或tranciver(发送和接收)。bind过程需要提供系统ID、密码和其他身份验证信息。 4. **短信...

    SMPP代码和模拟网关代码

    1. **短信验证码发送**:应用通过SMPP协议向SMSC发送短信验证码,用于用户身份验证。 2. **企业短信推送**:企业使用SMPP接口批量发送营销短信或通知。 3. **实时监控系统**:利用心跳机制实时监控网络连接状态,...

Global site tag (gtag.js) - Google Analytics