📄 mobilelistener.java
字号:
import java.math.BigInteger;
import com.wondertek.esmp.esms.empp.EMPPDeliver;
import com.wondertek.esmp.esms.empp.EMPPDeliverReport;
import com.wondertek.esmp.esms.empp.EMPPObject;
import com.wondertek.esmp.esms.empp.EMPPRecvListener;
import com.wondertek.esmp.esms.empp.EMPPSubmitSM;
import com.wondertek.esmp.esms.empp.EmppApi;
public class MobileListener implements EMPPRecvListener
{
private EmppApi emppObj = null;
private static LogManager logMan = new LogManager( MobileListener.class.getName() );
public MobileListener( EmppApi emppObject )
{
this.emppObj = emppObject;
}
/**
* 收到上海【移动】服务器下发的消息(手机上行MO、状态报告Report)
*/
public void onMessage(EMPPObject message)
{
if( message instanceof EMPPDeliver )
{
EMPPDeliver deliver = (EMPPDeliver)message;
if( deliver.getRegister()==EMPPSubmitSM.EMPP_STATUSREPORT_TRUE )
{
//收到状态报告
EMPPDeliverReport report=deliver.getDeliverReport();
byte[] msgId=fiterBinaryZero(report.getMsgId());
String temp = "msgId=" + new BigInteger(msgId) + ","
+ "status=" + report.getStat() + ","
+ "mobile=" + report.getDstAddr() ;
logMan.printLogInfo( "收到移动状态报告:" + temp );
}
else
{
//收到手机回复
String temp = "srcTermId=" + deliver.getSrcTermId() + ","
+ "dstAddr=" + deliver.getDstAddr() + ","
+ "msgContent=" + deliver.getMsgContent().getMessage() ;
logMan.printLogInfo( "收到移动MO:" + temp );
}
return;
}
}
/**
* 收到上海【移动】的关闭连接消息
*/
public void OnClosed(Object message )
{
logMan.printLogInfo( "Mobile closed。" );
MobileListener listener = new MobileListener( emppObj );
for(int i = 1;!emppObj.isConnected();i++)
{
try
{
logMan.printLogInfo("close后,移动通道重连次数:"+i);
Thread.sleep( 30*1000 );
emppObj.reConnect(listener);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
/**
* 收到上海【移动】的异常消息
*/
public void OnError( Exception message )
{
logMan.printLogInfo( "Mobile error:" + message.toString() );
MobileListener listener = new MobileListener( emppObj );
for(int i = 1;!emppObj.isConnected();i++)
{
try
{
logMan.printLogInfo("error后,移动通道重连次数:"+i);
Thread.sleep( 30*1000 );
emppObj.reConnect(listener);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
/**
* 过滤二进制的0
* @param bytes
* @return
*/
private static byte[] fiterBinaryZero(byte[] bytes)
{
byte[] returnBytes = new byte[8];
for (int i = 0; i < 8; i++)
{
returnBytes[i] = bytes[i];
}
return returnBytes;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -