⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmppmtreceivethread.java

📁 对于cmpp3.0 开发有一定的帮助,请大家下载下来进行研究.
💻 JAVA
字号:
package com.zhanghao.cmpp;

/**
 * <p>Title: CMPPMTReceiveThread 双端口连接方式-MT的收线程</p>
 * <p>Description: 湖南移动短信网关通讯程序</p>
 * <p>接收CMPP_SUBMIT_RESP, CMPP_ACTIVE_TEST_RESP,CMPP_QUERY_RESP等包</p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: sunun tech ltd.</p>
 * @author zhanghao
 * @version 1.0
 */

import java.io.*;
import java.net.*;
import com.zhanghao.common.util.*;

public class CMPPMTReceiveThread extends Thread{

  /** 该线程运行标志 true 在运行,false停止 **/
  public static boolean isAvail = false;

  private static DataInputStream  inputStream;

  private static DataOutputStream outputStream;

  /**  初始化构造器
   *   使用CMPPMTSocketProcess唯一的实例的输入流和输出流**/
  public CMPPMTReceiveThread() {
    inputStream  = CMPPMTSocketProcess.getInstance().inputStream;
    outputStream = CMPPMTSocketProcess.getInstance().outputStream;
    isAvail = true;
  }

  public void run(){

    Debug.outInfo("[CMPPMaster]"+PublicFunction.getFormatTime()+" MT连接("+CMPParameter.MTServerPort+")->接收线程启动 ...");

    while(CMPPMTSocketProcess.getInstance().isAvail && isAvail){
      try{
        byte[] recByte    = PublicFunction.recv(inputStream);
        CMPP   deliverMsg = new CMPP();
        deliverMsg.parsePack(recByte);

        switch(deliverMsg.Command_Id){
          case CMPP.CMPP_DELIVER:
            //将Deliver消息保存在接收缓冲中,由CMPPMOSocketProcess的CMPPMODataSaveThread
            //线程将MO数据保存在数据库中
            synchronized(CMPPDBAccess.getInstance().vctMOData){
              CMPPDBAccess.getInstance().vctMOData.addElement(deliverMsg);
            }

            CMPP   deliverRespMsg = new CMPP(CMPP.CMPP_DELIVER_RESP);
            deliverRespMsg.Msg_Id = deliverMsg.Msg_Id;
            deliverRespMsg.Result = 0;
            PublicFunction.send(outputStream, deliverRespMsg.pack());
            break;

          case CMPP.CMPP_ACTIVE_TEST_RESP:
            //链路测试回应包
            break;

          case CMPP.CMPP_SUBMIT_RESP:

            if(deliverMsg.Result == 0){
              //发送成功的,只打印消息,不做日志
              System.out.println("[CMPPMaster]"+PublicFunction.getFormatTime()+" <MT Resp>"+" MsgId="+deliverMsg.Msg_Id+" SequenceID="+deliverMsg.Sequence_Id+" 发送成功");
            }
            else{
              Debug.outInfo("[CMPPMaster]"+PublicFunction.getFormatTime()+" <MT Resp>"+" MsgId="+deliverMsg.Msg_Id+" SequenceID="+deliverMsg.Sequence_Id+" 发送失败,status="+deliverMsg.Result);
            }

            //处理成功下发的响应信息
            //CMPPDBAccess.getInstance().dealProccessMsg(deliverMsg);

            //2005-08-29修改,提高回应消息的保存速度
            synchronized(CMPPDBAccess.getInstance().vctRespMsg){
              CMPPDBAccess.getInstance().vctRespMsg.addElement(deliverMsg);
            }
            break;
        }
      }
      catch(Exception ex){
        destory(ex);
      }

    }

    //退出线程后
  }



  /** 销毁线程 **/
  public void destory(Exception ex){
    Debug.outInfo("[CMPP]MT连接(收)线程异常停止,异常原因:" + ex.getMessage());
    CMPPMTSocketProcess.getInstance().disclose();
    this.isAvail = false;
  }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -