📄 smscconnection.java~1~
字号:
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 + -