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

📄 demo31.java~140~

📁 移动CMPP3.0协议短信网关连接程序
💻 JAVA~140~
字号:
import java.io.*;
import java.net.*;
import java.util.*;
import com.huawei.smproxy.*;
import com.huawei.insa2.comm.cmpp.message.*;
import com.huawei.insa2.comm.cmpp30.message.*;
import com.huawei.insa2.util.*;

//import com.huawei.insa2.util.Args;

public class  Demo31 {
    private static  Args args;
//    Cfg cfg;
    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();

     // 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();
                 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);

//                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 + -