接上,这贴一下自定义的发送代理
CMPPProxy.java
public class CMPPProxy extends SMProxy {
//保存下发短信的队列
private static BlockingQueue<CMPPDeliverMessage> deliveMsgs = new LinkedBlockingQueue<CMPPDeliverMessage>(15);
/*
* 返回一个实例
* @return CMPPProx 返回一个实例
*/
public static CMPPProxy getInstance() {
if (instance == null) {
instance = new CMPPProxy();
}
return instance;
}
/*
* 获取保存下发短信的队列
* @return BlockingQueue<CMPPDeliverMessage>
*/
public BlockingQueue<CMPPDeliverMessage> getDeliveMsgs() {
return deliveMsgs;
}
protected CMPPProxy() {
super(arg);
}
public void OnTerminate() {
System.out.println("Connection have been breaked! ");
}
/*
* 收到下发短信触发的事件 如果需要返回回执的话就返回一个 CMPPMessage到网关中
* @return CMPPMessage
*/
@Override
public CMPPMessage onDeliver(CMPPDeliverMessage msg) {
byte msgId[] = msg.getMsgId();
if (msg.getRegisteredDeliver() == 1) { //是否要回执
if (String.valueOf(msg.getStat()).equalsIgnoreCase("DELIVRD")) {
System.out.println(String.valueOf(String.valueOf((new StringBuffer("\t\treceived DELIVRD message msgid=[")).append(msg.getMsgId()).append("]"))));
// long submitMsgId = TypeConvert.byte2long(msg.getStatusMsgId());
try {
CMPPDeliverRepMessage cmppdeliverrepmessage = new CMPPDeliverRepMessage(msgId, 0);
return cmppdeliverrepmessage;
} catch (Exception ex) {
CMPPDeliverRepMessage cmppdeliverrepmessage1 = new CMPPDeliverRepMessage(msgId, 9);
return cmppdeliverrepmessage1;
}
} else {
return new CMPPDeliverRepMessage(msgId, 9);
}
} else {
System.out.println("Get a Deliver..");
try {
deliveMsgs.put(msg); //把收到的非回执短信保存到队列中待处理
} catch (InterruptedException ex) {
Logger.getLogger(CMPPProxy.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println("Total [" + deliveMsgs.size() + "]DeliverMessages");
System.out.println(String.valueOf(String.valueOf((new StringBuffer("\t\treceived non DELIVRD message msgid=[")).append(msg.getMsgId()).append("]"))));
return new CMPPDeliverRepMessage(msgId, 9);
}
}
/*
* 封装过的发送函数
* @param CMPPSubmitMessage 短信
* @return boolean 是否发送成功
*/
public boolean send(CMPPSubmitMessage msg) {
if (msg == null) {
return false;
}
CMPPSubmitRepMessage reportMsg = null;
try {
reportMsg = (CMPPSubmitRepMessage) super.send(msg);
if (reportMsg == null) {
return false;
}
} catch (IOException ex) {
ex.printStackTrace();
return false;
}
return true;
}
/*
*发送短信,带响应内容
* @param CMPPSubmitMessage
* @return CMPPSubmiReptMessage 响应内容
*/
public CMPPSubmitRepMessage sendWithRep(CMPPSubmitMessage msg) {
CMPPSubmitRepMessage reportMsg = null;
try {
reportMsg = (CMPPSubmitRepMessage) super.send(msg);
} catch (IOException ex) {
ex.printStackTrace();
}
return reportMsg;
}
private static Args arg = Env.getConfig().getArgs("CMPPConnect");
public static final String service_Id = Env.getConfig().get("CMPPSubmitMessage/service_Id", "WebSM");
public static final String msg_Src = Env.getConfig().get("CMPPSubmitMessage/msg_Src", "WebSMS");
public static final String connectCode = Env.getConfig().get("CMPPSubmitMessage/src_Terminal_Id", "");
private static CMPPProxy instance;
}
分享到:
相关推荐
【中国电信CMPP2.0原代码+程序】是一个与电信通信协议相关的资源包,其中包含了实现CMPP2.0协议的源代码以及相关的程序和文档。CMPP(China Mobile Peer to Peer)是中国移动制定的一种基于TCP/IP的通信协议,主要...
在IT行业中,理解和掌握CMPP2.0协议对于开发与移动网络相关的应用和服务至关重要。 CMPP2.0协议的特点: 1. **高并发**:设计上支持大规模并发连接,能处理大量的短信请求,确保在高峰期也能稳定运行。 2. **高效性...
CMPP2.0协议是中国移动通信集团制定的一种短消息传输协议,主要用于SP(Service Provider)与SCP(Service Control Point)之间的数据交换,支持大规模、高效、稳定地发送和接收短信。在Java环境中实现CMPP2.0协议,...
2. **CMPP2.0接口开发**: - 开发CMPP2.0短信接口涉及的主要步骤包括:连接建立、认证、心跳维持、消息发送和接收、断线重连等。 - C#环境下,可以使用System.Net.Sockets命名空间中的TcpClient和NetworkStream类...
Java代码实现CMPP 2.0协议是一种在移动通信领域常见的技术,主要用于短信服务。CMPP(China Mobile Packet Protocol)是中国移动制定的一种基于TCP/IP的通信协议,用于连接SP(Service Provider)与SCP(Service ...
CMPP2.0短信网关发送短信代码是Java开发者用于与中国移动通信集团的短信服务进行交互的一种技术实现。CMPP(China Mobile Short Message Peer-to-Peer)2.0协议是移动运营商提供的一种通信协议,主要用于短信业务的...
CMPP2.0协议技术是中国移动通信领域中的一个重要标准,主要用于短信服务提供商(SP)与移动短信中心(SMSC)之间的数据传输。该协议详细定义了业务应用与短信中心之间的接口,确保了短信发送、接收的高效、稳定与...
CMPP2.0短信网关接口开发文档 CMPP2.0短信网关接口开发文档是中国移动通信集团公司发布的一份关于短信网关开发协议的文档。该文档详细介绍了CMPP2.0协议的技术细节和实现方法,为开发者提供了详细的开发指南和技术...
本人亲测可用采用华为包开发的JAVA移动短信CMPP2.0/CMPP3.0程序,希望能够帮到你
中国移动通信CMPP2.0模拟网关是一种基于CMPP(China Mobile Packet Protocol)2.0协议的模拟系统,主要用于测试和验证与短信服务相关的应用程序或系统。CMPP是中国移动为SP(Service Provider)提供的一种高效、可靠...
1.遵照CMPP2.0协议实现,模拟了短信网关,支持CONNECT,SUBMIT,DELIVER,QUERY,CANCEL,TERMINATE消息。 2.支持多个客户端登录,支持单连接和双连接类型,支持标准CMPP和亚信API. 3.服务端自动生成Msgid,支持状态报告. ...
中国移动的CMPP2.0(China Mobile Packet Protocol version 2.0)协议是通信行业中用于短信服务的重要标准,尤其在企业级应用中广泛使用。这个协议定义了SP(Service Provider,服务提供商)与SCP(Service Control ...
这个模拟短信网关实现是一个用于测试和开发短信应用的工具,它能够帮助开发者在不依赖真实网络环境的情况下,对CMPP2.0协议进行模拟交互和功能验证。 **CMPP2.0协议概述:** CMPP2.0协议是基于TCP/IP的通信协议,...
CMPP 2.0网关模拟器则是开发和测试CMPP应用的重要工具,它可以帮助开发者在没有实际网关环境的情况下进行功能验证和性能测试。 CMPP 2.0协议的核心知识点包括以下几个方面: 1. **协议结构**:CMPP协议基于TCP/IP...
2. 消息类型:CMPP2.0定义了多种消息类型,如提交短信(CMPP_SUBMIT)、查询短信状态(CMPP_QUERY)、接收短信(CMPP_DELIVER)等。每个消息类型都有对应的报文格式,开发者需要理解和实现这些格式。 3. 报文结构:...
中国移动短信CMPP 2.0协议API是一种专用于短信服务的通信协议,广泛应用于移动通信领域,特别是企业级应用,如验证码发送、信息推送等。该协议基于TCP/IP,为服务提供商提供了高效、稳定且安全的短信发送和接收功能...
中国移动短信网关模拟器是为开发者和测试人员提供的一种工具,它能够模拟中国移动的CMPP2.0协议,用于测试和验证短信应用的正确性和效率。CMPP2.0(China Mobile Short Message Peer-to-Peer Protocol version 2.0)...
1.遵照CMPP2.0协议实现,模拟了短信网关,支持CONNECT,SUBMIT,DELIVER,QUERY,CANCEL,TERMINATE消息。 2.支持多个客户端登录,支持单连接和双连接类型,支持标准CMPP和亚信API. 3.服务端自动生成Msgid,支持状态报告. ...
2. CMPP 2.0关键特性: - 增强的连接管理:支持断线重连和心跳机制,确保连接稳定性。 - 多通道并发:允许多个并发连接,提高消息处理速度。 - 支持长短信:通过分段技术,能够发送超过160个字符的短信。 - 提供...