cmpp 提交短息 不成功??

doney_dongxiang 2009-12-31 04:03:35

我写了一个cmpp 例子 ,登录能够成功,但是无法提交短信信息,哪位仁兄可以帮忙??



public class cmppdemo {
private static Logger log = LogManager.getLogger(cmppdemo.class);

private static int seq = 0;
private static int timestamp = (int) (System.currentTimeMillis() / 1000);

private static Socket socket = null;

/**
* @param args
*/
public static void main(String[] args) {

try {
socket = new Socket("127.0.0.1", 7890);
socket.setSoTimeout(120000);
DataOutputStream out = new DataOutputStream(socket
.getOutputStream());

// 发送消息头
out.writeInt(12 + 6 + 16 + 1 + 4);
out.writeInt(1);
out.writeInt(getSeq());

String icp_id = "901234";
String icp_auth = "123456";

//发送消息体
//Source_Addr
out.writeBytes(icp_id);

SimpleDateFormat sdf = new SimpleDateFormat("MMddHHmmss");
String date = sdf.format(Calendar.getInstance().getTime());
timestamp = Integer.parseInt(date);

byte[] b_icpID = icp_id.getBytes("GB2312");
byte[] b_icpPWD = icp_auth.getBytes("GB2312");

byte beforeMD5[] = new byte[b_icpPWD.length + 25];
System.arraycopy(b_icpID, 0, beforeMD5, 0, 6);
System.arraycopy(b_icpPWD, 0, beforeMD5, 15, b_icpPWD.length);
System.arraycopy(date.getBytes(), 0, beforeMD5,
15 + b_icpPWD.length, date.length());

// 3. ����AuthenticatorSource
MD5 md5 = new MD5();
byte[] md5ed = md5.getMD5ofStr(beforeMD5, beforeMD5.length);
out.write(md5ed);

//
int version = 0x30;
out.writeByte((byte) version);
// 5. ����ʱ���
out.writeInt(timestamp);

DataInputStream in = new DataInputStream(socket.getInputStream());

int pk_len = in.readInt();
int pk_cmd = in.readInt();
int pk_seq = in.readInt();
int status = in.readInt();

int CMPPE_LOGIN_RESP = 0x80000001;

System.out.println(" CMPPE_LOGIN_RESP = " + CMPPE_LOGIN_RESP);

// 读取 登陆消息体
System.out.println(pk_len);
System.out.println(pk_cmd);
System.out.println(pk_seq);
System.out.println(status);
System.out.println(in.readInt());
System.out.println(in.readInt());
System.out.println(in.readInt());

System.out.println("here");
//////////////////////////////////////////////////////////////////////////////////////////////
// 发送短信

out.flush();

out.writeInt(210);
out.writeInt(0x00000004);
out.writeInt(getSeq());

out.writeLong(66); // Msg_Id
out.writeByte(1); //Pk_total
out.writeByte(1); //Pk_numbers
out.writeByte(0); // Registered_Delivery
out.writeByte(1); // Msg_level
byte serviceId = 0;
out.write(serviceId); //Service_Id
out.writeByte(0); //Fee_UserType
out.write(serviceId); //Fee_terminal_Id
out.writeByte(0); //Fee_terminal_type
out.writeByte(0); //TP_pId
out.writeByte(0); //TP_udhi
byte msg_Fmt = 15;
out.writeByte(msg_Fmt); //Msg_Fmt
out.writeBytes("901234"); //Msg_src
out.writeBytes("01"); //FeeType
out.writeBytes("000000"); //FeeCode
out.writeBytes("55555"); // valId_Time
out.writeBytes("0000"); // atTime
out.writeBytes("901234"); //Src_Id
out.writeByte(1); //DestUsr_tl
out.writeBytes("13806666666"); //Dest_terminal_Id
out.writeByte(0); //Dest_terminal_type
out.writeByte(15); //Msg_Length
out.writeBytes("aaa aaaaaaaaaaa"); //Msg_Content
out.writeBytes(""); // LinkID

out.flush();

if (socket.isClosed()) {
socket = new Socket("127.0.0.1", 7890);
socket.setSoTimeout(120000);
}

/* 读取 提交回馈信息 */
System.out.println(Integer.toHexString(in.readInt())); //Msg_Id
System.out.println(in.readInt()); //Result
System.out.println(in.readInt()); //Result
System.out.println(in.readInt()); //Result
System.out.println(in.readInt()); //Result
System.out.println(in.readInt()); //Result

////////////////////////////////////////////////////////////////////////////////////////////

// 推出连接
out.writeInt(2);
out.writeInt(getSeq());

} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

public static int getSeq() {
seq++;
if (seq == 0x7fffffff)
seq = 1;
return seq;
}

}



...全文
77 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengyoujie 2010-01-26
  • 打赏
  • 举报
回复
帮楼主顶了
Trinx 2010-01-10
  • 打赏
  • 举报
回复
这帖子时间都这么长了,怎么没人回复呀!顶上去再说。
前 言 4 1 范围 5 2 缩略语 5 3 网络结构 6 4 CMPP功能概述 7 5 协议栈 8 6 通信方式 9 6.1 长连接 9 6.2 短连接 11 6.3 本协议中涉及的端口号 12 6.4 交互过程中的应答方式 12 7 消息定义 12 7.1 基本数据类型 12 7.2 消息结构 13 7.3 消息头格式(Message Header) 13 7.4 信息资源站实体(SP)与互联网短信网关(ISMG)间的消息定义 13 7.4.1 SP请求连接到ISMG(CMPP_CONNECT)操作 13 7.4.2 SP或ISMG请求拆除连接(CMPP_TERMINATE)操作 14 7.4.3 SP向ISMG提交短信(CMPP_SUBMIT)操作 15 7.4.4 SP向ISMG查询发送短信状态(CMPP_QUERY)操作 17 7.4.5 ISMG向SP送交短信(CMPP_DELIVER)操作 18 7.4.6 SP向ISMG发起删除短信(CMPP_CANCEL)操作 21 7.4.7 链路检测(CMPP_ACTIVE_TEST)操作 21 7.5 互联网短信网关(ISMG)之间的消息定义 22 7.5.1 源ISMG请求连接到目的ISMG(CMPP_CONNECT)操作 22 7.5.2 源ISMG请求拆除到目的ISMG的连接(CMPP_TERMINATE)操作 22 7.5.3 链路检测(CMPP_ACTIVE_TEST)操作 22 7.5.4 源ISMG向目的ISMG转发短信(CMPP_FWD)操作 22 7.6 互联网短信网关(ISMG)与汇接网关(GNS)之间的消息定义 27 7.6.1 ISMG请求连接到GNS或GNS请求连接到ISMG(CMPP_CONNECT)操作 27 7.6.2 ISMG请求拆除到GNS的连接或GNS请求拆除到ISMG的连接(CMPP_TERMINATE)操作 27 7.6.3 ISMG向汇接网关查询MT路由(CMPP_MT_ROUTE)操作 27 7.6.4 ISMG向汇接网关查询MO路由(CMPP_MO_ROUTE)操作 28 7.6.5 ISMG向汇接网关获取MT路由(CMPP_GET_MT_ROUTE)操作 29 7.6.6 ISMG向汇接网关获取MO路由(CMPP_GET_MO_ROUTE)操作 30 7.6.7 ISMG向汇接网关更新MT路由(CMPP_MT_ROUTE_UPDATE)操作 31 7.6.8 ISMG向汇接网关更新MO路由(CMPP_MO_ROUTE_UPDATE)操作 33 7.6.9 汇接网关向ISMG更新MT路由(CMPP_PUSH_MT_ROUTE_UPDATE)操作 34 7.6.10 汇接网关向ISMG更新MO路由(CMPP_PUSH_MO_ROUTE_UPDATE)操作 35 7.7 系统定义 36 7.7.1 Command_Id定义 36 附录1 MO状态报告的产生 38 修订历史 40
课程介绍 仓库管理系统主要功能有采购入库,采购退货,销售出库,销售退货,仓库盘点,库存报表,Excel导入导出,按钮级权限控制及系统日志等功能,系统采用SpringBoot ,mybatis,easyui,ajax,mssql数据库等技术开发。提供所有源代码下载,系统功能完善,可直接运行。开发环境项目开发语言:SpringBoot ,mybatis,easyui,ajax,mssql数据库项目运行环境:jdk1.8及以上版本,tomcat8.0及以上版本,sql server2005及以上版本项目开发工具: 本项目开发工具是Intellij Idea课程目标掌握SpringBoot等技术,熟悉仓库管理系统主要功能,采购入库,采购退货,销售出库,销售退货,仓库盘点,系统报表,权限控制及日志等50多门JAVA系列全套课程,包括大一新生到大四毕业的所有JAVA系列技术专业课程,项目实战,商业项目等;基础课程:JAVA初级工程师: 1、计算机基础 2、HTML语言基础 3、C语言从入门到精通+贪吃蛇游戏 4、贪吃蛇游戏 5、SQL SERVER数据库基础 6、JAVA从入门到精通+推箱子游戏+QQ即时通讯软件 7、推箱子游戏; 8、仿QQ即时通讯软件;JAVA中级工程师: 9、SQLSERVER数据库高级 10、SQLSERVER从入门到精通(基础+高级) 11、JavaScript从入门到精通, 12、JSP从入门到精通+点餐系统, 13、JSP从入门到精通+在线视频学习教育平台, 14、JSP从入门到精通+大型电商平台; 15、XML从入门到精通, 16、数据结构(JAVA版),JAVA高级工程师: 17、Oracle数据库从入门到精通, 18、ajax+jquery从入门到精通, 19、EasyUI从入门到精通,SSH框架: 20、Struts2从入门到精通课程, 21、Hibernate从入门到精通课程, 22、Spring从入门到精通课程; 23、Echarts从入门到精通, 24、Excel基于POI的导入导出工作流框架: 25、Activiti流程框架从入门到精通 26、JBPM流程框架从入门到精通SSM框架: 27、MyBatis从入门到精通 28、Spring MVC从入门到精通 29、Spring Boot入门到精通 30、Spring Cloud入门到精通面试题: 31、职业生涯规划及面试题集锦商业项目: 32、微信公众号在线支付系统 33、微信生活缴费在线支付系统 34、支付宝生活缴费在线支付系统 35、在线考试系统 36、人脸识别智能考试系统(人工智能AI) 37、仓库管理及质量追溯系统 38、房屋出租管理系统APP(身份证识别) 39、手机订餐管理系统, 40、CRM客户关系管理系统 41、大型房地产CRM销售管理系统 42、CMPP2,CMPP3移动网关系统 43、仓库管理系统(SpringBoot) 44、影院在线售票系统(仿猫眼电影)人工智能: 45、人脸识别在线考试系统 46、人脸识别系统项目实战 47、车牌识别停车场管理系统 48、身份证识别系统项目实战 49、营业执照识别系统项目实战 50、名片识别管理系统
.Net/C# 实现 中国移动 CMPP v3.0 ISMG SP 收发短信的 SP 客户端 (第2版)(CMPP SP Client) 增加了 CMPP Client 类本程序严格按 《中国移动通信企业标准》之《中国移动通信互联网短信网关接口协议(China Mobile Point to Point)》(版本号: 3.0.0) 即: CMPP v3.0.0 http://www.spzone.net/protocol/CMPPV3.0.rar 文档,实现了下面消息的定义及其相关协议级交互: 8.4 业务提供商 (SP) 与互联网短信网关 (ISMG) 间的消息定义 8 8.4.1 SP 请求连接到 ISMG(CMPP_CONNECT) 操作 8 8.4.1.1 CMPP_CONNECT 消息定义 (SP -> ISMG) 8 8.4.1.2 CMPP_CONNECT_RESP消息定义 (ISMG -> SP) 9 8.4.2 SP 或 ISMG 请求拆除连接 (CMPP_TERMINATE)操作 9 8.4.2.1 CMPP_TERMINATE 消息定义 (SP -> ISMG 或 ISMG -> SP) 9 8.4.2.2 CMPP_TERMINATE_RESP 消息定义 (SP -> ISMG 或 ISMG -> SP) 10 8.4.3 SP 向 ISMG提交短信 (CMPP_SUBMIT) 操作 10 8.4.3.1 CMPP_SUBMIT 消息定义 (SP -> ISMG) 10 8.4.3.2 CMPP_SUBMIT_RESP 消息定义 (ISMG -> SP) 11 8.4.5 ISMG 向 SP 送交短信 (CMPP_DELIVER) 操作 13 8.4.5.1 CMPP_DELIVER 消息定义 (ISMG -> SP) 13 8.4.5.2 CMPP_DELIVER_RESP 消息定义 (SP -> ISMG) 16 8.4.7 链路检测 (CMPP_ACTIVE_TEST) 操作 17 8.4.7.1 CMPP_ACTIVE_TEST定义 (SP -> ISMG 或 ISMG <- SP) 17 8.4.7.2 CMPP_ACTIVE_TEST_RESP定义 (SP -> ISMG 或 ISMG <- SP) 17 可采用《中国移动通信 CMPP v3.0 短消息网关模拟器 v1.10》进行测试: 下载于: 《北京风起水流软件工作室》 http://www.zealware.com/download/cmpp3smg.rar本程序以熟悉理解 CMPP 3.0 协议为主要目的,只将 "消息定义" 对象化,其相关协议级交互并未作更深层次的 OO! 也暂无任何错误处理程序! 消息定义的所有字段名称及其数据类型均与上述之 CMPP v3.0.0 文档完全一致! 其间参阅过 shanhe@CSDN or yexiong@cnBlogs 大作(在此鸣谢): http://blog.csdn.net/shanhe/archive/2004/07/19/45383.aspx http://cnblogs.com/yexiong/articles/115330.aspx 但其中有些消息定义字节错位,因此不能正常交互?!且对象化层次较高,不利于理解协议本身! 遂自己动手,丰衣足食,实现部分主要协议(SP 收发短信):

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧