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

📄 smscconnection.java~1~

📁 本人为友邦公司做的模拟网关源代码
💻 JAVA~1~
📖 第 1 页 / 共 2 页
字号:
package smsc;import java.io.*;import java.net.*;/** * Title: * Description: * Copyright:    Copyright (c) 2002 * Company: * @author wangpei * @version 1.0 */public class SMSCConnection extends Thread{   private String myID;   private String strBindType;   private String mystate;   private Socket mySocket;   private String PeerHost;   private InputStream myinputstream;   private OutputStream myoutputstream;   public  DataInputStream dataInStream;   public String getStatus() { return mystate; }   public String getMyID()   { return myID;    }   public SMSCConnection(Socket socket)   {      mySocket = socket;      mystate = Constants.NOTLOGIN;      PeerHost = mySocket.getInetAddress().getHostAddress();      try      {         mySocket.setSoTimeout(Constants.MBCPRCVSOCK_TIMEOUT);         myinputstream = mySocket.getInputStream() ;         myoutputstream = mySocket.getOutputStream() ;         dataInStream = new DataInputStream(myinputstream);      }      catch (Exception e)      {          SMSCFrame.RecvArea.append("SMSC connection create stream expcetion .\n");      }   }   public void run()   {      int i;      while(true)      {         byte[] buf = recv();         if( Constants.DISPLAY_BINARY)         {            for(i=0; i<buf.length ; i++ )            {               if(i%12  == 0 && i>0)   SMSCFrame.RecvArea.append("\n");               SMSCFrame.RecvArea.append("[" + buf[i] + "] ");            }            SMSCFrame.RecvArea.append("\n");         }         if(buf.length != 1)   handle(buf);         else         {            switch(buf[0])            {               case Constants.ERROR_INTERRUPT:                    break;               case Constants.ERROR_SOCKET:                    disconnect();                    (SMSCConnectionManager.instance()).delConnection(myID);                    return ;               default :                    break;            }         }      }   }   private void handle(byte[] b)   {      boolean bResp;      String  strHostAddr = null;      SmscShortMsg smpp=new SmscShortMsg();      smpp.parsePackage(b);      displayRecvMsg(smpp);      switch(smpp.headCmdID)      {         case  SmscConstants.SMPP_BIND_RECEIVER :               //if(Constants.SMSC_DEBUG)               //   SMSCFrame.RecvArea.append("SMSC receive SMPP_BIND_RECEIVER from " + PeerHost + "\n");               myID = mySocket.getInetAddress().getHostAddress() + Constants.Receiver;               if(mystate.equals(Constants.NOTLOGIN) &&                  !SMSCConnectionManager.instance().isConncected(myID))               {                  bResp = SMSCConnectionManager.instance().addHost(PeerHost, PeerHost);                  if(bResp == false)                  {                     smpp.headCmdID = SmscConstants.SMPP_BIND_RECEIVER_RESP ;                     smpp.headCmdStatus = SmscConstants.ESME_RSYSERR;                     bResp = send(smpp);                     break;                  }                  smpp.headCmdID = SmscConstants.SMPP_BIND_RECEIVER_RESP ;                  smpp.headCmdStatus = 0;                  bResp = send(smpp);                  if(bResp)                  {                     strBindType = Constants.Receiver;                     mystate = Constants.WORKING ;                     SMSCConnectionManager.instance().setConncection(myID, this);                     SMSCFrame.RecvArea.append(myID + " connect SMSC succeed ......\n\n");                  }               }               else               {                  SMSCFrame.RecvArea.append(PeerHost + " already BIND SMSC by SMPP_BIND_RECEIVER .\n") ;                  smpp.headCmdID =SmscConstants.SMPP_GENERIC_NAK;                  smpp.headCmdStatus =0;               }               break;         case  SmscConstants.SMPP_BIND_TRANSMITTER  :               //if(Constants.SMSC_DEBUG)               //   SMSCFrame.RecvArea.append("SMSC receive SMPP_BIND_TRANSMITTER from " + PeerHost + "\n") ;               myID = mySocket.getInetAddress().getHostAddress() + " " + Constants.Transmitter;               if(mystate.equals(Constants.NOTLOGIN) &&                  !SMSCConnectionManager.instance().isConncected(myID))               {                  smpp.headCmdID = SmscConstants.SMPP_BIND_TRANSMITTER_RESP;                  smpp.headCmdStatus =0;                  bResp = send(smpp);                  if(bResp)                  {                     strBindType = Constants.Transmitter;                     mystate = Constants.WORKING ;                     SMSCConnectionManager.instance().setConncection(myID, this);                     SMSCFrame.RecvArea.append(myID + " connect SMSC succeed ......\n\n");                  }               }               else               {                  SMSCFrame.RecvArea.append(PeerHost + " already BIND SMSC by SMPP_BIND_TRANSMITTER .\n") ;                  smpp.headCmdID = SmscConstants.SMPP_GENERIC_NAK  ;                  smpp.headCmdStatus = 0;                  send(smpp);               }               break;         case  SmscConstants.SMPP_UNBIND :               SMSCFrame.RecvArea.append("SMSC receive SMPP_UNBIND from " + myID + "\n\n") ;               smpp.headCmdID = SmscConstants.SMPP_UNBIND_RESP  ;               smpp.headCmdStatus =0;               send(smpp);               disconnect();               SMSCConnectionManager.instance().delConnection(myID) ;               break;        case  SmscConstants.SMPP_SUBMIT_SM :              //SMSCFrame.RecvArea.append("SMSC receive SMPP_SUBMIT_SM from " + PeerHost + "\n\n");              bResp = handleSubmit(smpp);              break;        case  SmscConstants.SMPP_DELIVER_SM_RESP :              if(smpp.headSeqcNo == Constants.nStartNumber)                 SMSCFrame.RecvArea.append("First receive time : " + Constants.formatDateTime()  + " .\n");              SMSCFrame.RecvArea.append("SMSC receive SMPP_DELIVER_RESP from " +                                        PeerHost + ", Command status : [" + smpp.headCmdStatus + "], " +                                        "Seq : [" + smpp.headSeqcNo + "] .\n\n");              if(smpp.headSeqcNo == Constants.nEndNumber && smpp.headSeqcNo > 0)                 SMSCFrame.RecvArea.append("Last receive time : " + Constants.formatDateTime()  + " .\n");              break;        case  SmscConstants.SMPP_ENQUIRE_LINK :              if(Constants.DISPLAY_ACTIVE)                 SMSCFrame.RecvArea.append("SMSC receive SMPP_ENQUIRE_LINK message from " +                                           myID + "\n\n");              smpp.headCmdStatus = 0;              smpp.headCmdID = SmscConstants.SMPP_ENQUIRE_LINK_RESP ;              send(smpp);              break;        case  SmscConstants.SMPP_GENERIC_NAK :              SMSCFrame.RecvArea.append("SMSC receive SMPP_GENERIC_NAK from " + myID + "\n\n") ;              break;        default:              SMSCFrame.RecvArea.append("SMSC receive Unknown command message " + smpp.headCmdID +                                        " from " + myID + " .\n\n");              smpp.headCmdID = SmscConstants.SMPP_GENERIC_NAK;              smpp.headCmdStatus =0;              send(smpp);              break;      }   }   private boolean handleSubmit(SmscShortMsg sm)   {      boolean bResp;      byte[]  btContent;      String strText, strMsgID, strContent;      sm.headCmdID = SmscConstants.SMPP_SUBMIT_SM_RESP;      strMsgID = Integer.toHexString(sm.headSeqcNo);      sm.ackMsgID = strMsgID;      sm.headCmdStatus = 0;SMSCFrame.SendArea.append("send SMPP_SUBMIT_SM_RESP :"+sm.headSeqcNo+"\n");      bResp = send(sm);      if(bResp)      {         strText = sm.msgSourceAddress;         sm.msgSourceAddress = sm.msgDestAddress;         sm.msgDestAddress = strText;         strContent = sm.msgShortMsgText;         String time = sm.msgScheduleDeliveryTime;         if(strContent.length() > 20)            strContent = strContent.substring(0,20) ;         strContent = writeString(strContent);         if(strMsgID.length() >10)            strMsgID = strMsgID.substring(0,10);         strMsgID = writeString(strMsgID);         if(time.length() > 10)            time = time.substring(0,10);         time = writeString(time);         sm.msgShortMsgText  = strMsgID + "000000" + time + time + "DELIVRD" + "000" + strContent;         //Log.debug("  strmsg===="+strmsg+"length==="+strmsg.length() ) ;         //sm.msgShortMsgText = strContent;         sm.msgEsmClass = (byte)(sm.msgEsmClass | 0x04);         sm.msgSmLength = (byte)sm.msgShortMsgText.length( );         sm.msgDataCoding = 0;         sm.headCmdID = SmscConstants.SMPP_DELIVER_SM;         sm.headCmdStatus = 0;         sm.headSeqcNo = Constants.getSequence();         String strDestAddress = PeerHost + Constants.Receiver;         bResp = SMSCConnectionManager.instance().send(sm, strDestAddress);//SMSCFrame.SendArea.append("send SMPP_SUBMIT report: "+sm.headSeqcNo+"\n");         /*         if(bResp)         {            SMSCFrame.SendArea.append("Send report to " + myID + " succeed .\n");         }         */      }      //saveMsg(smpp);      return true;   }   private String writeString(String msg_id)   {      String str="0";      for (int i=1; i<10-msg_id.length(); i++)         str = str+'0';      str = str + msg_id;

⌨️ 快捷键说明

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