📄 demo31.java~133~
字号:
import java.io.*;
import java.net.*;
import com.huawei.smproxy.*;
import com.huawei.insa2.comm.cmpp.message.*;
import com.huawei.insa2.comm.cmpp30.message.*;
import com.huawei.insa2.util.*;
import java.util.*;
//import com.huawei.insa2.util.Args;
public class Demo31 {
private static Args args;
private static MySMProxy30 myProxy = null;
public static CMPP30DeliverMessage1 UpMessage1;
public static CMPP30DeliverMessage1 DownMessage1;
// private static SMProxy30 myProxy = null;
static byte[] msg_Id = null;
//static Date Time;
static int query_Type = 0;
static String query_Code = " ";
static String reserve = " ";
static int pk_Total = 1;
static int pk_Number = 1;
static int registered_Delivery = 0;
static int msg_Level = 0;
static String service_Id = "11"; //业务标识
static int fee_UserType = 0;
static String fee_Terminal_Id = " "; //无意义怎么填写
static int fee_Terminal_Type = 0;
static int tp_Pid = 0;
static int tp_Udhi = 0;
static int msg_Fmt = 15;
static String msg_Src = "901234"; //sp_id
static String fee_Type = "01";
static String fee_Code = "150";
static Date valid_Time;
static Date at_Time;
static String src_Terminal_Id = "011234"; //sp的服务代码
static String[] dest_Terminal_Id = {"13666666688"};
static int dest_Terminal_Type = 0;
static byte[] msg_Content = {'1', '2'};
static String LinkID = "12"; //一定要写,否则会报错
public Demo31()
{
}
public static void main(String[] args) {
SendThread sendThread = new SendThread();
sendThread.start();
dest_Terminal_Id[0]=DownMessage1.strnumber;
System.out.println(DownMessage1.strcontent);
CMPP30SubmitMessage submitMsg = new CMPP30SubmitMessage(
pk_Total,
pk_Number, registered_Delivery, msg_Level, service_Id,
fee_UserType, fee_Terminal_Id, fee_Terminal_Type,
tp_Pid,
tp_Udhi, msg_Fmt, msg_Src, fee_Type, fee_Code,
valid_Time,
at_Time, src_Terminal_Id,dest_Terminal_Id,
dest_Terminal_Type,msg_Content, LinkID);
myProxy.send(submitMsg);
// RecvThread recvThread=new RecvThread();//如何对接受的消息传递参数呢????
//recvThread.start();
while (true) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
//SendThread_1*******************************************************************************************
public static class SendThread extends Thread {
private boolean shutdown;
ServerSocket socketConnection;
Socket pipe;
// private SMProxy proxy = null;
public SendThread() {
try {
args=new Cfg("app.xml", false).getArgs("CMPPConnect");
System.out.println("SendThread 启动");
myProxy = new MySMProxy30(args);
//*******************************************************************************
} catch (java.io.IOException e) {
e.printStackTrace();
System.out.println(e.toString() );
throw new IllegalStateException("初始化发送线程出错");
}
}
public void run() {//本函数什么作用,用来发送短信的?
// System.out.println("run函数启动。。。。。。。。。。。。");
try
{
System.out.println("run函数启动。。。。。。。。。。。。");
socketConnection = new ServerSocket(11112);
pipe = socketConnection.accept();
System.out.println("Server1 Waiting");
ObjectOutputStream serverOutputStream = new ObjectOutputStream(pipe.getOutputStream());
UpMessage1=myProxy.UpMessage;
serverOutputStream.writeObject(UpMessage1);
UpMessage1=new CMPP30DeliverMessage1();
serverOutputStream.writeObject(UpMessage1);
/* for(int i=0;i<10;i++)
{
UpMessage1=myProxy.UpMessage[i];
serverOutputStream.writeObject(UpMessage1);
if(myProxy.UpMessage[i].mark==0)
break;
}
*/
ObjectInputStream serverInputStream = new ObjectInputStream(pipe.getInputStream());
DownMessage1= (CMPP30DeliverMessage1)serverInputStream.readObject();
// myProxy.upMessage=null;
serverInputStream.close();
serverOutputStream.close();
}
//*****************************************************************************************
/* while (!shutdown && !isInterrupted())
{
if(pipe.isBound()&&myProxy.upMessage!=null)
{
ObjectInputStream serverInputStream = new ObjectInputStream(pipe.getInputStream());
ObjectOutputStream serverOutputStream = new ObjectOutputStream(pipe.getOutputStream());
serverOutputStream.writeObject(myProxy.upMessage);
myProxy.upMessage=null;
serverInputStream.close();
serverOutputStream.close();
}
CMPP30SubmitMessage submitMsg = new CMPP30SubmitMessage(
pk_Total,
pk_Number, registered_Delivery, msg_Level, service_Id,
fee_UserType, fee_Terminal_Id, fee_Terminal_Type,
tp_Pid,
tp_Udhi, msg_Fmt, msg_Src, fee_Type, fee_Code,
valid_Time,
at_Time, src_Terminal_Id, dest_Terminal_Id,
dest_Terminal_Type, msg_Content, LinkID);
myProxy.send(submitMsg);
Thread.sleep(4000);
}
//
}catch(java.io.IOException e) {
e.printStackTrace();
System.out.println(e.toString() );
throw new IllegalStateException("发送失败,发送线程终止");
} catch(InterruptedException e) {
Thread.currentThread().interrupt();
e.printStackTrace();
}
*/
//*****************************************************************************************
catch(Exception e) {
System.out.println(e);
}
// myProxy.close();
}
}
//SendThread_2*******************************************************************************************
}
class MySMProxy30 extends SMProxy30//在完成接受短信网关下发消息的功能时,需要自己实现抽象类SMProxy30
{
// CMPP30DeliverMessage1 UpMessage[];
CMPP30DeliverMessage1 UpMessage;
// UpMessage.Msg=null;
public boolean connected1 = false;
ServerSocket socketConnection;
public MySMProxy30(Args args) {
//调用父类的构造函数,完成初始化和登录ISMG的功能,不能省略
//登陆之后产生两个线程?
super(args);
/* UpMessage = new CMPP30DeliverMessage1[10];
for(int i=0;i<10;i++)
{
UpMessage[i]=new CMPP30DeliverMessage1("hello","13277080176",4);
}
*/
}
public CMPPMessage onDeliver(CMPP30DeliverMessage msg) {
//添加收到短消息中心下发消息的处理代码
String strcon;
String strnum;
int num;
System.out.println("onDeliver函数启动。。。。。。。。。。。。");
System.out.println("发送号码:" + msg.getSrcterminalId());
System.out.println("是否为状态报告:" + msg.getRegisteredDeliver());
if (msg.getMsgContent() != null) {
try {
System.out.println("短信内容:" +new String(msg.getMsgContent(), "GB2312"));
/* strcon=new String(msg.getMsgContent(), "GB2312");
for (int j = 0; j < 10; j++) {
if ((UpMessage[j].mark == 0)) {
UpMessage[j].strnumber = msg.getSrcterminalId();
System.out.println("手机号码:" +new String(msg.getMsgContent(),"GB2312"));
UpMessage[j].strcontent = msg.getMsgContent();
UpMessage[j].mark = 1;
break;
}
}
*/ UpMessage=new CMPP30DeliverMessage1(msg.getMsgContent(),msg.getSrcterminalId(),msg.getMsgLength());
// this.UpMessage=new CMPP30DeliverMessage1(strcon,msg.getDestTerminalId(),msg.getMsgLength());
} catch (Exception e) {
e.printStackTrace();
}
}
return super.onDeliver(msg);
//实际上是返回响应消息,一定要有
}
public void OnTerminate() {
//可以添加ISMG和SMProxy30断开连接的处理代码
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -