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

📄 dbsm.java

📁 smpp java实现
💻 JAVA
字号:
package projectsmpp;

import java.sql.*;
import java.util.*;
import java.io.*;

public class Dbsm
    implements SmppCommands, Runnable {
  private Thread thread = null;
  private Connection conn = null;
  private PreparedStatement pstmt = null;
  private SmObject smobject = null;
  private Sock sock = Sock.getSock();
  private static int j_no = 0;
  private Submit submit = null;
  public Dbsm() {

    try {
      conn = Dbconnection.getInstance().getConnection();
      pstmt = conn.prepareStatement(
          "select SM_SEQ_ID,SRC_TELE_NUM,DEST_TELE_NUM,MSG from sm ");
    }
    catch (Exception e) {
      SmppFrame.showMessage("取短消息时连接数据库失败!");
    }
    if (thread == null) {
      thread = new Thread(this);
      thread.start();
    }
  }

  public void run() {
    ResultSet rset = null;
    Vector vector = new Vector(); ;
    while (true) {
      try {
        rset = pstmt.executeQuery();
        while (rset.next()) {
          smobject = new SmObject(rset.getInt(1), rset.getString(2),
                                  rset.getString(3),
                                  rset.getString(4));
          vector.add(smobject);
          System.out.println("vector size" + vector.size());
          System.out.println(smobject.message);
        }
        if (vector.size() >= 1) {
          for (int i = 0; i < vector.size(); i++) {
            //---------------------------------------------------------------
            //发送短消息
            //---------------------------------------------------------------
            smobject = (SmObject) vector.get(i);
            //DataUpdate.setSmObject(smobject); //把此实例传到DataUpdate中
            thread.sleep(500);
            sendSm(smobject.source_addr, smobject.desti_addr, smobject.message);
            SmppFrame.setVectorValue(SmppFrame.getSequence_no(),smobject);
            SmppFrame.setSequence_no();
          }
        }
        vector.removeAllElements();
        thread.sleep(500);
      }
      catch (SQLException e) {
        System.out.println("Dbsm中的数据库操作问题");
        SmppFrame.showMessage("Dbsm中的数据库操作问题");
        e.printStackTrace();
      }

      catch (InterruptedException e) {
        System.out.println("Dbsm中的线程问题");
        SmppFrame.showMessage("Dbsm中的线程问题");
        e.printStackTrace();
        thread.stop();
      }
    }

  }


  private void sendSm(String s1, String s2, String s3) {
    String source_addr = s1;
    String desti_addr = s2;
    String message = s3;
    //将中文短消息转化成Ascii编码
    try {
      byte[] abyte = message.getBytes("ISO-8859-1");
      //message = new String(message.getBytes("ISO-8859-1"),"GBK");
      message = new String(abyte);
    }
    catch (UnsupportedEncodingException ee) {}
    try {
      SmppHeader smppHeader = new SmppHeader(16 + 18 +
                                             source_addr.getBytes("ISO-8859-1").
                                             length +
                                             desti_addr.getBytes("ISO-8859-1").
                                             length +
                                             message.getBytes("ISO-8859-1").
                                             length
                                             ,

                                             ESME_SUB_SM, //command_id
                                             0,
                                            SmppFrame.getSequence_no());

      submit = new Submit(
          null, //短消息服务的类别
          0,
          0,
          source_addr, //源地 址
          0,
          0,
          desti_addr, //目的地 址
          0, //短消息类 型
          0,
          0,
          null,
          null,
          0,
          1,
          0,
          0,
          message.getBytes("ISO-8859-1").length,
          message);
      try {
        SmppEncoder smppEncoderHe = new SmppEncoder();
        smppEncoderHe.smppHeader(smppHeader); //对smppHeader进行编码
        SmppEncoder smppEncoderSub = new SmppEncoder();
        smppEncoderSub.submit(submit); //对submit进行编码
        sock.sendPacket(smppEncoderHe.getBytes());
        sock.sendPacket(smppEncoderSub.getBytes());
        System.out.println(smppEncoderHe.getBytes().length);
        System.out.println(smppEncoderSub.getBytes().length);
      }
      catch (encoderException ee) {
        ee.printStackTrace();
      }
    }
    catch (UnsupportedEncodingException ee) {
      ee.printStackTrace();
    }
  }



}

⌨️ 快捷键说明

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