资源简介
与移动短信网关连接并发送短信源码,可以借鉴一下,经过测试可以连通短信网关并发送短信
代码片段和文件信息
package cn.netjava.cmpp.compent;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import cn.netjava.cmpp.msg.MsgCommand;
import cn.netjava.cmpp.msg.MsgDeliver;
import cn.netjava.cmpp.msg.MsgDeliverResp;
import cn.netjava.cmpp.msg.MsgHead;
import cn.netjava.cmpp.msg.MsgLogin;
import cn.netjava.cmpp.msg.MsgLoginResp;
import cn.netjava.cmpp.msg.MsgSubmit;
import cn.netjava.cmpp.msg.MsgSubmitResp;
import cn.netjava.cmpp.util.MsgTools;
import cn.netjava.cmpp.util.SysteLog;
import cn.netjava.cmpp.util.Utils;
/**
*在接收处理消息时避免线程jing zhing
* 接收线程:使用双队列缓冲又不要死锁
* cmpp协议连结对象:
* 在独立的的线程上接收消息块的数据并调用打包工具类解析
* @project:蓝杰中国移动Cmpp短信网关项目开发 Jun 17 2009
* @author: 蓝杰www.netjava.cn
*/
public class CMPPConntor extends Thread {
private java.net.Socket sc;//网络连结对象
private int sendCount;//一秒内己发送的计数器
//从连结上得到的输入输出流
private java.io.DataInputStream dins;
private java.io.DataOutputStream dous;
//存放己回过应答的Submit消息
private List submitsResult;
private List deliversResult;
//接收到,等处理回复的Deliver队列
private List delivers=new ArrayList();
//己发送,等待应答的Submit队列
private Map submitList1=new HashMap();
private boolean isRunning=true;//运行标志
/**
* 创建一个cmpp连结对象
* @param sc:tcp/ip连结
* @param submits:保存接收到的Submit消息对象
* @throws Exception
*/
public CMPPConntor(java.net.Socket scList submitsResultList deliversResult)throws Exception{
try{
this.submitsResult=submitsResult;
this.deliversResult=deliversResult;
this.sc=sc;
sc.setReceiveBufferSize(2048);//设定Socket缓冲区大小
// sc.setSoTimeout(1000);//超时为1秒 //如果超时到了会返回什么呢??
dins=new java.io.DataInputStream(sc.getInputStream());
dous=new java.io.DataOutputStream(sc.getOutputStream());
}catch(Exception ef){
ef.printStackTrace();
}
}
/**
* 本连结对象上一秒己发送消息的个数
* @return
*/
public int getSendCount(){
return sendCount;
}
/**
* 在本连结上发送己打包后的消息的字节
* @param data:要发送消息的字节
*/
public boolean sendMsg(byte[] data) {
try{
Utils.debugData(“SP端发出的原始数据>>>:“ data);
sendCount++;
//可以将多条消息打到一个包中
dous.write(data);
dous.flush();
return true;
}catch(Exception ef){
ef.printStackTrace();
}
return false;
}
/**
* 本连结由SP端调用以向ISMG发送登陆请求
* @param spid :sp企业ID
* @param pwd: SP密码
* @return :登陆请求的应答结果
* @throws Exception
*/
public int login(String spidString pwd)throws Exception{
//构造登陆消息对象
MsgLogin ml=new MsgLogin();
ml.setTotal_Length(12+6+16+1+4);
ml.setCommand_Id(MsgCommand.CMPP_CONNECT);
ml.setSequence_Id(Utils.getSeq());
ml.setSource_Addr(spid);
byte[] md5=Utils.getLoginMd5(spid pwd);
ml.setAuthenticatorSource(md5);
ml.setVersion((byte)14);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 232 2009-06-18 13:49 MobileSP\.classpath
文件 384 2009-06-18 13:49 MobileSP\.project
文件 1293 2011-10-21 09:54 MobileSP\bin\cn\netjava\cmpp\compent\CMPPConntor$1.class
文件 6664 2011-10-21 09:54 MobileSP\bin\cn\netjava\cmpp\compent\CMPPConntor.class
文件 3700 2011-10-21 09:54 MobileSP\bin\cn\netjava\cmpp\compent\SPServer.class
文件 536 2011-10-21 09:54 MobileSP\bin\cn\netjava\cmpp\msg\MsgCommand.class
文件 4972 2011-10-21 09:54 MobileSP\bin\cn\netjava\cmpp\msg\MsgDeliver.class
文件 1251 2011-10-21 09:54 MobileSP\bin\cn\netjava\cmpp\msg\MsgDeliverResp.class
文件 1427 2011-10-21 09:54 MobileSP\bin\cn\netjava\cmpp\msg\MsgHead.class
文件 1867 2011-10-21 09:54 MobileSP\bin\cn\netjava\cmpp\msg\MsgLogin.class
文件 1447 2011-10-21 09:54 MobileSP\bin\cn\netjava\cmpp\msg\MsgLoginResp.class
文件 6289 2011-10-21 09:54 MobileSP\bin\cn\netjava\cmpp\msg\MsgSubmit.class
文件 1250 2011-10-21 09:54 MobileSP\bin\cn\netjava\cmpp\msg\MsgSubmitResp.class
文件 7874 2011-10-21 09:54 MobileSP\bin\cn\netjava\cmpp\util\MsgTools.class
文件 1056 2011-10-21 09:54 MobileSP\bin\cn\netjava\cmpp\util\SysteLog.class
文件 3613 2011-10-21 09:54 MobileSP\bin\cn\netjava\cmpp\util\Utils.class
文件 2352 2011-10-21 09:54 MobileSP\bin\main\MainSP.class
文件 7151 2011-10-19 11:16 MobileSP\src\cn\netjava\cmpp\compent\CMPPConntor.java
文件 2959 2009-06-21 19:33 MobileSP\src\cn\netjava\cmpp\compent\SPServer.java
文件 914 2009-06-18 10:20 MobileSP\src\cn\netjava\cmpp\msg\MsgCommand.java
文件 4263 2009-06-21 20:03 MobileSP\src\cn\netjava\cmpp\msg\MsgDeliver.java
文件 797 2009-06-21 20:03 MobileSP\src\cn\netjava\cmpp\msg\MsgDeliverResp.java
文件 1022 2009-06-21 19:57 MobileSP\src\cn\netjava\cmpp\msg\MsgHead.java
文件 1339 2009-06-21 20:03 MobileSP\src\cn\netjava\cmpp\msg\MsgLogin.java
文件 1024 2009-06-21 20:03 MobileSP\src\cn\netjava\cmpp\msg\MsgLoginResp.java
文件 5766 2009-06-21 20:03 MobileSP\src\cn\netjava\cmpp\msg\MsgSubmit.java
文件 784 2009-06-21 20:03 MobileSP\src\cn\netjava\cmpp\msg\MsgSubmitResp.java
文件 10321 2009-06-21 19:32 MobileSP\src\cn\netjava\cmpp\util\MsgTools.java
文件 628 2009-06-18 11:48 MobileSP\src\cn\netjava\cmpp\util\SysteLog.java
文件 3117 2009-06-21 19:30 MobileSP\src\cn\netjava\cmpp\util\Utils.java
............此处省略22个文件信息
- 上一篇:通讯录管理系统(c 链表)
- 下一篇:MODBUS--ASCii实现的主要代码
评论
共有 条评论