package com.ll.smsbeans;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Serializable;
import java.net.InetAddress;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.Vector;
import java.util.logging.Logger;
import com.ll.smsbeans.cmpp3.CmppActiveTestBuilder;
import com.ll.smsbeans.cmpp3.CmppActiveTestRespBuilder;
import com.ll.smsbeans.cmpp3.CmppConnectBuilder;
import com.ll.smsbeans.cmpp3.CmppConnectResp;
import com.ll.smsbeans.cmpp3.CmppPacket;
import com.ll.smsbeans.cmpp3.CmppPacketCommon;
import com.ll.smsbeans.cmpp3.CmppTerminateBuilder;
import com.ll.smsbeans.cmpp3.CmppTerminateRespBuilder;
import com.ll.smsbeans.log.LogCommon;
/**
* ConnectionBean 是smsbeans中主要的bean.
* <p>
* ConnectionBean 主要是和服务器建立认证连接,所有其它的bean都是通过它和服务器通信的。
* <p>
* ConnectionBean提供一些“标准”的于服务器通信的接口,例如send方法,同时在内部自动处理一些服务
* 器端的消息的回服例如ActiveTest等,并且,在运行过程中处理数据包的发送失败,保持链路联结。
* <p>
* 所有其它的beans通过ConnectionBean发送数据,和通过监听由ConnectionBean发布的received消息接收过滤数据
* <p>
* @see MessengerBean
* @see IQBean
* @see RosterBean
*
*
* @author listlike <a href="mailto:listlike@hotmail.com">
* <i><listlike@hotmail.com></i></a>
* @version $Revision: 1.0 $
*/
public class ConnectionBean implements Serializable, PacketListenerRegistrar
{
/**
*
* Timer为定时器类
* 为ConnectBean提供定时服务,通过定时调用 主要用于回复包的时间记数,以及保持链路测试包的定时发送。
* 有两个定时器:
* 1 秒定时器
* 用于回复包的时间记数,每秒激活一次ConnectionBean.onTimer.
* 2 保持链路测试包定时器
* 用于保持链路测试包的记时,根据常数ACTIVETIME的值激活ConnectBeantion.onActiveConnect。
*
* @see com.ll.smsbeans.ConnectionBean#onTimer()
* @see ConnectionBean#onActiveConnect()
* @see ConnectionBean#ACTIVETIME
*<p>
* @author listlike <a href="mailto:listlike@hotmail.com">
* <i><listlike@hotmail.com></i></a>
*
*/
public class Timer extends Thread
{
// 保持链路测试包的记时
private long activeSec = 0;
//定时器是否有效
private boolean enableTimer = true;
//保持链路测试的定时器是否有效
private boolean enableActiveTimer = true;
private boolean timerRun = true;
/**
* 保持链路测试的定时器复位
*/
public void resetActiveTime()
{
activeSec = System.currentTimeMillis();
}
/**
* @see java.lang.Runnable#run()
*/
public void run()
{
while (timerRun)
{
try
{
sleep(1000);
if (enableTimer)
ConnectionBean.this.onTimer();
if (System.currentTimeMillis() - activeSec
>= ACTIVETIME * 1000)
{
resetActiveTime();
if (enableActiveTimer)
ConnectionBean.this.onActiveConnect();
}
} catch (InterruptedException e)
{
return;
} catch (Exception e)
{
return;
}
}
}
/**
* 定时器状态
* @return 定时器状态
*/
public boolean isEnableActiveTimer()
{
return enableActiveTimer;
}
/**
* 保持链路测试的定时器状态
* @return 保持链路测试的定时器状态
*/
public boolean isEnableTimer()
{
return enableTimer;
}
/**
* 设置保持链路测试的定时器状态
* @param enable 设置保持链路测试的定时器状态
*/
public void setEnableActiveTimer(boolean enable)
{
enableActiveTimer = enable;
}
/**
* 设置定时器状态
* @param enable 设置定时器状态
*/
public void setEnableTimer(boolean enable)
{
enableTimer = enable;
}
/* (非 Javadoc)
* @see java.lang.Thread#interrupt()
*/
public void interrupt()
{
timerRun = false;
super.interrupt();
}
/* (非 Javadoc)
* @see java.lang.Thread#start()
*/
public synchronized void start()
{
reset();
super.start();
}
private void reset()
{
enableTimer = true;
enableActiveTimer = true;
timerRun = true;
resetActiveTime();
}
}
/**
*PacketStreamMonitor 通过响应数据报发送和接收事件,维护ConnectionBean的连接。
*
*
* @author listlike <a href="mailto:listlike@hotmail.com">
* <i><listlike@hotmail.com></i></a>
*
*/
public class PacketStreamMonitor implements PacketListener
{
/**
* 主要工作:
* 1、 将接收到的回复包从发送队列移出。
* 2、 判断是否登陆成功。
* 3、 自动处理中断包和中断回复包。
* 4、 处理链路测试包。
* @see com.ll.smsbeans.PacketListener#receivedPacket(com.ll.smsbeans.PacketEvent)
*/
public void receivedPacket(PacketEvent pe)
{
_log.info(pe.getPacket().toString());
if (((CmppPacket) pe.getPacket()).isResponse())
{
SendPacketState sps = sendPacketList.get(pe.getPacket());
if (sps != null)
{
sps.setState(SendPacketState.STATE_RESPONSED);
sps.setRespPacket(pe.getPacket());
}
//sendPacketList.remove( pe.getPacket());
}
if (status.getValue() == ConnectionEvent.EState.CONNECTING)
{
Packet p = pe.getPacket();
if (p != null)
{
if (p instanceof CmppPacket)
{
CmppPacket cp = (CmppPacket) p;
if (cp.getCommandId()
== CmppPacketCommon.ID_CMPP_CONNECT_RESP)
// 0x80000001
{
sendPacketList.remove(cp);
CmppConnectResp ccr = (CmppConnectResp) cp;
if (ccr.getStatus() == 0)
{
setConnectionState(
ConnectionEvent.STATE_CONNECTED,
ConnectionEvent.REASON_CLIENT_INITIATED);
mTimer = new Timer();
mTimer.start();
} else
{
disconnected(
ConnectionEvent.REASON_SERVER_INITIATED);
}
}
}
}
return;
}
if (status.getValue() == ConnectionEvent.EState.CONNECTED)
{
Packet p = pe.getPacket();
if (p != null)
{
if (p instanceof CmppPacket)
{
CmppPacket cp = (CmppPacket) p;
switch (cp.getCommandId())
{
case CmppPacketCommon.ID_CMPP_TERMINATE_RESP :
//0x80000002
sendPacketList.remove(pe.getPacket());
disconnected(
ConnectionEvent.REASON_CLIENT_INITIATED);
break;
case CmppPacketCommon.ID_CMPP_TERMINATE :
//0x00000002
CmppTerminateRespBuilder ctrb =
new CmppTerminateRespBuilder();
ctrb.setSequenceId(cp.getSequenceId());
send(ctrb.builder());
break;
case CmppPacketCommon.ID_CMPP_ACTIVE_TEST :
//0x00000008
CmppActiveTestRespBuilder catrb =
new CmppActiveTestRespBuilder();
catrb.setSequenceId(cp.getSequenceId());
send(catrb.builder());
mTimer.resetActiveTime();
break;
case CmppPacketCommon.ID_CMPP_ACTIVE_TEST_RESP :
//0x80000008
sendPacketList.remove(cp);
break;
default :
break;
}
}
}
}
_log.log(
LogCommon.DEBUG_LEVEL,
"sendPacketList=" + sendPacketList.size());
}
/**
* 主要工作:处理服务器端发送来的中断包。
*
* @see com.ll.smsbeans.PacketListener#sentPacket(com.ll.smsbeans.PacketEvent)
*/
public void sentPacket(PacketEvent pe)
{
_log.info(pe.getPacket().toString());
if (status.getValue() == ConnectionEvent.EState.CONNECTED)
{
Packet p = pe.getPacket();
if (p != null)
{
if (p instanceof CmppPacket)
{
CmppPacket cp = (CmppPacket) p;
if (cp.getCommandId()
== CmppPacketCommon.ID_CMPP_TERMINATE_RESP)
//0x80000002
disconnected(
ConnectionEvent.REASON_SERVER_INITIATED);
}
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
JAVA短信网关平台.7z
共487个文件
html:215个
class:175个
java:73个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 187 浏览量
2022-07-06
11:08:49
上传
评论
收藏 193KB 7Z 举报
温馨提示
JAVA短信网关平台.7z
资源推荐
资源详情
资源评论
收起资源包目录
JAVA短信网关平台.7z (487个子文件)
log.cfg 2KB
log.cfg 2KB
ConnectionBean.class 12KB
ConnectionBean.class 12KB
ConnectBeanTest.class 8KB
ConnectBeanTest.class 8KB
CmppSubmit.class 6KB
CmppSubmitBuilder.class 6KB
CmppSubmitBuilder.class 6KB
CmppSubmit.class 6KB
SyncMessageBean.class 5KB
SyncMessageBean.class 5KB
MessageBeanTest.class 5KB
ConnectionBean$PacketStreamMonitor.class 5KB
MessageBeanTest.class 5KB
ConnectionBean$PacketStreamMonitor.class 4KB
MessageBeanTest$MessageBeanThread.class 4KB
MessageBeanTest$MessageBeanThread.class 4KB
OutputStreamHandler.class 4KB
CmppDeliver.class 4KB
OutputStreamHandler.class 4KB
CmppDeliver.class 3KB
LogCommon.class 3KB
CmppQueryResp.class 3KB
LogCommon.class 3KB
CmppPacketCommon.class 3KB
CmppPacketCommon.class 3KB
CmppDeliverBuilder.class 3KB
CmppDeliverBuilder.class 3KB
MD5.class 3KB
CmppQueryRespBuilder.class 3KB
CmppQueryRespBuilder.class 3KB
InputStreamHandler.class 3KB
InputStreamHandler.class 3KB
CmppQueryResp.class 3KB
MD5.class 3KB
CmppConnect.class 3KB
MessageBean.class 3KB
OutputStreamHandler$LockingQueue.class 3KB
MessageBean.class 3KB
CmppConnect.class 3KB
OutputStreamHandler$LockingQueue.class 2KB
SendPacketState.class 2KB
ConnectionAdapter.class 2KB
SendPacketState.class 2KB
PacketRebroadcaster.class 2KB
ConnectionAdapter.class 2KB
CmppPacket.class 2KB
CmppQuery.class 2KB
CmppPacket.class 2KB
DeliverBean.class 2KB
DeliverBean.class 2KB
PacketRebroadcaster.class 2KB
CmppQuery.class 2KB
cmppConnectTest.class 2KB
cmppConnectTest.class 2KB
CmppPacketParser.class 2KB
CmppPacketParser.class 2KB
MessageBeanTest$DeliverPacketListener.class 2KB
ConnectionBean$Timer.class 2KB
MessageBeanTest$MyConnectionAdapter.class 2KB
MessageBeanTest$DeliverPacketListener.class 2KB
ConnectionBean$Timer.class 2KB
MessageBeanTest$MyConnectionAdapter.class 2KB
SendPackStateList.class 2KB
CmppConnectResp.class 2KB
SendPackStateList.class 2KB
CmppDeliverResp.class 2KB
CmppSubmitResp.class 2KB
ConnectionEvent.class 2KB
CmppHander.class 2KB
ConnectionEvent.class 2KB
CmppConnectResp.class 2KB
CmppCancelResp.class 2KB
MessageBean$MessageListener.class 2KB
CmppDeliverResp.class 2KB
CmppSubmitResp.class 2KB
CmppConnectBuilder.class 2KB
CmppConnectBuilder.class 2KB
CmppQueryBuilder.class 2KB
CmppQueryBuilder.class 2KB
CmppCancel.class 2KB
DeliverBean$DeliverListener.class 2KB
MessageBean$MessageListener.class 2KB
CmppHander.class 2KB
DeliverBean$DeliverListener.class 2KB
CmppActiveTestResp.class 1KB
CmppCancelResp.class 1KB
ConsoleLogFormatter.class 1KB
ConsoleLogFormatter.class 1KB
CmppCancel.class 1KB
CmppConnectRespBuilder.class 1KB
CmppConnectRespBuilder.class 1KB
CmppDeliverHander.class 1KB
CmppDeliverHander.class 1KB
CmppActiveTestResp.class 1KB
CmppActiveTest.class 1KB
CmppTerminate.class 1KB
CmppTerminateResp.class 1KB
CmppQueryRespHander.class 1KB
共 487 条
- 1
- 2
- 3
- 4
- 5
资源评论
- zzff132022-10-05资源值得借鉴的内容很多,那就浅学一下吧,值得下载!
BryanDing
- 粉丝: 299
- 资源: 5583
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功