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

📄 smppframe.java

📁 smpp java实现
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
package projectsmpp;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import com.borland.jbcl.layout.*;
import java.net.*;
import java.io.*;
import java.util.*;
import javax.swing.border.*;

//import java.io.UnsupportedEncodingException;

/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */

public class SmppFrame
    extends JFrame
    implements SmppCommands, Runnable {
  JPanel contentPane;
  XYLayout xYLayout1 = new XYLayout();
  JLabel jLabelSourceAddress = new JLabel();
  JLabel jLabelDestinateAddress = new JLabel();
  JTextField sourceAddress = new JTextField();
  JTextField destinationAddress = new JTextField();
  JLabel jLabel3 = new JLabel();
  JButton jButtonConnect = new JButton();
  JButton jButtonSend = new JButton();
  JButton jButtonDisconnect = new JButton();

  //此变量用于标记sequence_no字段
  static int j_no = 0;
  //此变量用于记录deliver_sm的消息序列号
  static int messageid = 0;

  //建立连接的socket
  private Sock sock = null;
  //vector_sm用来存放发送的短信
  private static  Hashtable vector_sm=new Hashtable();
  //以下是封装的命令
  private Bind bind = null;
  private Submit submit = null;
  //private SmObject smobject = null;

  //建立一个线程来监听
  private Thread thread = null;
  private Dbsm dbsm = null;
//  private Vector vector = null;

  JButton jButtonok = new JButton();
  JScrollPane jScrollPane1 = new JScrollPane();
  JTextArea smscontext = new JTextArea();
  JButton jButtonadduser = new JButton();
  JButton jButtondeluser = new JButton();
  JButton jButtonenquireuser = new JButton();
  JButton jButtonmoduser = new JButton();
  JButton jButtonenquiresm = new JButton();
  JButton jButtoncancelsm = new JButton();
  JButton jButtonconnect2 = new JButton();
  JButton jButtonCancel = new JButton();
  JButton jButtonReset = new JButton();
  JScrollPane jScrollPane2 = new JScrollPane();
  JLabel jLabel1 = new JLabel();
  static JTextArea context = new JTextArea();

  //Construct the frame
  public SmppFrame() {
    enableEvents(AWTEvent.WINDOW_EVENT_MASK);
    try {
      jbInit();
    }
    catch (Exception e) {
      e.printStackTrace();
    }
  }

  //Component initialization
  private void jbInit() throws Exception {
    contentPane = (JPanel)this.getContentPane();
    //jButtonadduser.setEnabled(false);
    //jButtonadduser.setVisible(false);
    //jButtonadduser.setSelected(false);
    jButtonadduser.setText("增加用户");
    jButtonadduser.addActionListener(new SmppFrame_jButtonadduser_actionAdapter(this));
    jLabelSourceAddress.setText("请输入您的手机号码");
    contentPane.setLayout(xYLayout1);
    this.setResizable(false);    this.setSize(new Dimension(400, 500));
    this.setTitle("smpp ");
    jLabelDestinateAddress.setText("请输入对方的手机号码");
    jLabel3.setText("短信内容");
    sourceAddress.setText("");
    destinationAddress.setText("");
    jButtonConnect.setActionCommand("连接");
    jButtonConnect.setText("连接(transi)");
    jButtonConnect.addActionListener(new SmppFrame_jButtonConnect_actionAdapter(this));
    jButtonSend.setToolTipText("");
    jButtonSend.setSelected(false);
    jButtonSend.setText("发送短信");
    jButtonSend.addActionListener(new SmppFrame_jButtonSend_actionAdapter(this));
    //jButtonDisconnect.setEnabled(false);
    //jButtonDisconnect.setVisible(false);
    jButtonDisconnect.setFocusPainted(true);
    jButtonDisconnect.setText("断开连接");
    jButtonDisconnect.addActionListener(new
        SmppFrame_jButtonDisconnect_actionAdapter(this));
    //jButtonok.setEnabled(false);
    //jButtonok.setVisible(false);
    //jButtonok.setActionCommand("jButton1");
    jButtonok.setText("确认连接");
    jButtonok.addActionListener(new SmppFrame_jButtonok_actionAdapter(this));
    smscontext.setText("");
    //jButtondeluser.setEnabled(false);
    //jButtondeluser.setVisible(false);
    jButtondeluser.setText("删除用户");
    jButtondeluser.addActionListener(new SmppFrame_jButtondeluser_actionAdapter(this));
    //jButtonenquireuser.setEnabled(false);
    //jButtonenquireuser.setVisible(false);
    jButtonenquireuser.setText("查询用户");
    jButtonenquireuser.addActionListener(new
        SmppFrame_jButtonenquireuser_actionAdapter(this));
    //jButtonmoduser.setEnabled(false);
    //jButtonmoduser.setVisible(false);
    jButtonmoduser.setText("修改用户");
    jButtonmoduser.addActionListener(new SmppFrame_jButtonmoduser_actionAdapter(this));
    //jButtonenquiresm.setEnabled(false);
    //jButtonenquiresm.setVisible(false);
    jButtonenquiresm.setText("查询短信");
    jButtonenquiresm.addActionListener(new
                                       SmppFrame_jButtonenquiresm_actionAdapter(this));
    //jButtoncancelsm.setEnabled(false);
    //jButtoncancelsm.setVisible(false);
    jButtoncancelsm.setText("删除短信");
    jButtoncancelsm.addActionListener(new
                                      SmppFrame_jButtoncancelsm_actionAdapter(this));
    jButtonconnect2.setText("连接(recei)");
    jButtonconnect2.addActionListener(new
                                      SmppFrame_jButtonconnect2_actionAdapter(this));
    jButtonCancel.setToolTipText("");
    jButtonCancel.setSelected(false);
    jButtonCancel.setText("关闭");
    jButtonCancel.addActionListener(new SmppFrame_jButtonCancel_actionAdapter(this));
    jButtonReset.setEnabled(false);
    jButtonReset.setVisible(false);
    jButtonReset.setText("重置");
    jButtonReset.addActionListener(new SmppFrame_jButtonReset_actionAdapter(this));
    contentPane.setBorder(BorderFactory.createLineBorder(SystemColor.
        controlText, 1));

    jLabel1.setToolTipText("");
    jLabel1.setText("状态栏");
    context.setBackground(Color.black);
    context.setForeground(Color.white);
    context.setMaximumSize(new Dimension(30, 2147483647));
    context.setMinimumSize(new Dimension(0, 18));
    context.setEditable(false);
    context.setSelectedTextColor(Color.white);
    context.setSelectionColor(Color.red);
    context.setColumns(0);
    context.setRows(0);
    contentPane.add(sourceAddress, new XYConstraints(213, 10, 130, -1));
    contentPane.add(jLabelSourceAddress, new XYConstraints(36, 11, 113, -1));
    contentPane.add(jLabelDestinateAddress, new XYConstraints(36, 42, 113, -1));
    contentPane.add(jLabel3, new XYConstraints(36, 60, -1, -1));
    contentPane.add(destinationAddress, new XYConstraints(213, 43, 130, -1));
    contentPane.add(jScrollPane1, new XYConstraints(34, 78, 316, 46));
    jScrollPane1.getViewport().add(smscontext, null);
    contentPane.add(jScrollPane2,   new XYConstraints(34, 265, 321, 207));
    jScrollPane2.getViewport().add(context, null);
    contentPane.add(jButtonConnect, new XYConstraints(34, 128, 103, -1));
    contentPane.add(jButtonconnect2, new XYConstraints(35, 157, 103, -1));
    contentPane.add(jButtonDisconnect, new XYConstraints(36, 187, 103, -1));
    contentPane.add(jButtondeluser,    new XYConstraints(169, 157, -1, -1));
    contentPane.add(jButtonadduser,     new XYConstraints(169, 128, -1, 25));
    contentPane.add(jButtonmoduser,  new XYConstraints(169, 187, -1, -1));
    contentPane.add(jButtonReset, new XYConstraints(159, 267, 75, -1));
    contentPane.add(jButtonenquiresm,        new XYConstraints(271, 157, 79, 25));
    contentPane.add(jButtoncancelsm,         new XYConstraints(271, 187, 79, 25));
    contentPane.add(jButtonenquireuser,  new XYConstraints(168, 216, -1, -1));
    contentPane.add(jButtonok,    new XYConstraints(34, 216, 103, -1));
    contentPane.add(jButtonCancel,        new XYConstraints(271, 216, 79, 25));
    contentPane.add(jLabel1, new XYConstraints(35, 247, 51, -1));
    contentPane.add(jButtonSend, new XYConstraints(271, 128, 79, -1));

    //sock = new Sock(); //建立连接

  }

  //Overridden so we can exit when window is closed
  protected void processWindowEvent(WindowEvent e) {
    super.processWindowEvent(e);
    if (e.getID() == WindowEvent.WINDOW_CLOSING) {
      sock.close();

      System.exit(0);
    }
  }

//----------------------------------------------------------------------
//在状栏中显示信息的公共函数
//----------------------------------------------------------------------
  public static void showMessage(String s) {
    context.append(s);
  }

//--------------------------------------------------------------------
//监听短消息中心
//--------------------------------------------------------------------
  public void run() {
    while (true) {
      //---------------------------------------------------------------
      //发送短消息
      //---------------------------------------------------------------

      //---------------------------------------------------------------
      //接收短消息中心发来的消息
      //---------------------------------------------------------------
      try {
        SmppDecoder smppDecoder = new SmppDecoder(read(16));
        SmppHeader smppHeader = smppDecoder.smppHeader();
        if (smppHeader.command_length > 16) {
          smppDecoder = new SmppDecoder(read(smppHeader.command_length - 16));
        }
        else {
          smppDecoder = null;
        }
        switch (smppHeader.command_id) {
          case 0X80000002: //ESME_BNDTRN_RESP
            Bind bind = smppDecoder.bindResponse();
            context.append("\n" + "客户端已连接上了短信中心");
            j_no++;
            break;
          case 0X80000001: //ESME_BNDRCV_RESP
            Bind bind1 = smppDecoder.bindResponse();
            context.append("\n" + "客户端已连接上了短信中心");
            j_no++;
            break;
          case 0X00000005: //SMSC_DELIVER_SM
            DeliverSm deliverSm = smppDecoder.deliverSm();
            //将编码转化成中文编码-------------------------------------------
            byte[] abyte = deliverSm.short_message_text;
            String messagesave=new String(abyte);
            String message = new String(abyte, "GBK");
            DataUpdate.getInstance().smRecievedAdd(deliverSm.source_address,
                deliverSm.destination_address, messagesave); //将收到的信息存入数据库
            //---------------------------------------------------------
            context.append("\n" + "收到短信中心消息:" + message + "\n");
            //发送delive_sm_resp响应消息
            int length = String.valueOf(messageid).length();
            SmppHeader newsmppHeader = new SmppHeader(17 + length,
                SMSC_DELIVER_SM_RESP, 0, smppHeader.sequence_no);
            DeliverSmResp deliverSmResp = new DeliverSmResp(String.valueOf(
                messageid));
            try {
              SmppEncoder smppEncoder1 = new SmppEncoder();
              smppEncoder1.smppHeader(newsmppHeader);
              SmppEncoder smppEncoder2 = new SmppEncoder();
              smppEncoder2.deliverSmResp(deliverSmResp);
              sock.sendPacket(smppEncoder1.getBytes());
              sock.sendPacket(smppEncoder2.getBytes());
              //System.out.println(smppEncoder2.getBytes().length);
              //System.out.println(smppEncoder1.getBytes().length);
              messageid++; //消息序列号递增
              //j_no++;//消息头中序列号递增
            }
            catch (encoderException ex) {
              ex.printStackTrace();
            }
            break;
          case 0X80000004: //ESME_SUB_SM_RESP

            SubmitResp submitResp = smppDecoder.submitResp();
            context.append("\n" + "成功发送一条短信:");
            SmObject smobject=(SmObject)vector_sm.get(String.valueOf(smppHeader.sequence_no));
            DataUpdate.getInstance().smAddRomove(smobject); //将发送成功的短信存入另外一个表,并删除原始表中的记录
            //SmObject smobject = DataUpdate.getSmObject();
            context.append("\n" + "目的号是:" + smobject.desti_addr +
                           "内容是:" +
                           new String(smobject.message.getBytes("GB2312"),
                                      "GB2312"));
            vector_sm.remove(String.valueOf(smppHeader.sequence_no));
            //j_no++;
            break;
          case 0X80000006: //ESME_UBD_RESP
            j_no++;
            context.append("\n" + "连接已断开!");
            break;
          case 0X80000015: //ESME_QRYLINK_RESP
            j_no++;
            context.append("\n" + "连接正常!");
            break;
          case 0X800000A0: //ESME_ADD_SUB_RESP
            j_no++;
            context.append("\n"+"增加用户成功!");
            break;
          case 0X800000A1: //ESME_DEL_SUB_RESP
            j_no++;
            context.append("\n"+"删除用户成功!");
            break;
          case 0X800000A3: //ESME_QRY_SUB_RESP
            context.append("\n"+"查询用户成功!");
            j_no++;
            break;
          case 0X800000A2: //ESME_MOD_SUB_RESP
            j_no++;
            context.append("\n"+"修改用户成功!");
            break;
          case 0X80000003: // ESME_QUERY_SM_RESP
            context.append("\n"+"查询短信成功!");
            j_no++;
            break;
          case 0X80000008: //ESME_CANCEL_SM_RESP
            j_no++;
            context.append("\n"+"删除短信成功!");
            break;
          case 0X80000000: //ESME_NACK
            System.out.println("system.gc()");
            System.gc();
        }

      }
      catch (IOException ee) {
        ee.printStackTrace();
      }
      catch (decoderException de) {}

      //context.setText("有消息返回了:"+"bind.command_length:"+smppHeader.command_length);
      //context.append("我执行到了,他呢?");
    } //while
  }

//---------------------------------------------------------------------
//向短消息中心发送bind_transi连接
//---------------------------------------------------------------------
  void jButtonConnect_actionPerformed(ActionEvent e) {
    sock = Sock.getSock(); //建立连接
    bind = new Bind(null, "10000", null, 1, 0, 0, null);
    SmppHeader smppHeader = new SmppHeader(28, ESME_BNDTRN, 0, j_no);

    try {
      //sock.out.writeObject(bind);\
      SmppEncoder smppEncoder = new SmppEncoder();

⌨️ 快捷键说明

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