📄 dbsm.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 + -