📄 smppframe.java
字号:
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 + -