`
收藏列表
标题 标签 来源
sgip 用JAVA编写其于SGIP协议的短信开发
package com;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.math.BigInteger;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Date;

import spApi.Bind;
import spApi.BindResp;
import spApi.Deliver;
import spApi.DeliverResp;
import spApi.Report;
import spApi.ReportResp;
import spApi.SGIP_Command;
import spApi.SGIP_Exception;
import spApi.Submit;
import spApi.SubmitResp;
import spApi.Unbind;
import spApi.UnbindResp;
import spApi.Userrpt;
import spApi.UserrptResp;

public class SMSHelper {
	//发送短消息
	 public static void sendLetter() {
         Socket so=null;
         OutputStream out=null;
         InputStream input=null;
         Bind command=null;
         Bind com=null;
         SGIP_Command sgip=null;
         SGIP_Command tmp=null;
         int i=0;
       
         try {
             sgip=new SGIP_Command();
             command=new Bind(xxxxxxxxxx);//节点号
             command.SetLoginType(1);
             command.SetLoginName("xxxxxxx");
             command.SetLoginPassword("xxxx");
             int err;
             byte [] byte_content = new byte[140];
   
             Submit submit = null;
             SubmitResp submitresp=null;
  
             Unbind term=null;
             BindResp resp=null;
             UnbindResp Unresp=null;
             so=new Socket("xxx.xxx.xxx.xxx",8801);
             out=new DataOutputStream(so.getOutputStream());
             input = new DataInputStream(so.getInputStream());
             err=command.write(out);//发送bind
             if(err!=0)
             {
                System.out.println("err"+err);
             }
             tmp=sgip.read(input);//接收sgip消息
	         if(sgip.getCommandID()==SGIP_Command.ID_SGIP_BIND_RESP)
		     {
	        	 System.out.println("登录");
		          resp=(BindResp)tmp;//强制转换为bindresp
	              resp.readbody();//对消息进行解包
	              System.out.println(tmp.getSeqno_1());
	
	              System.out.println(tmp.getSeqno_2());
	              System.out.println(tmp.getSeqno_3());
	              System.out.println(resp.GetResult());
             }
	         
	         
	         for(i=0;i<140;i++)
             {
                   byte_content[i] = 51;
                   i++;
                   byte_content[i] = 51;
                   i++;
                   byte_content[i] = 52;
                   i++;

                   byte_content[i] = 53;
                   i++;
                   byte_content[i] = 54;
                   i++;

                   byte_content[i] = 55;
                   i++;
                   byte_content[i] = 56;
                   i++;
                   byte_content[i] = 57;
                   i++;

                   byte_content[i] = 58;
                   i++;
                   byte_content[i] = 59;
             }
	         
             submit = new Submit(xxxxxxxx);//节点号
             String content = "短信测试内容";
             byte[] MessageContent = content.getBytes("GB2312");
             
             Date nowtime = new Date();
     		SimpleDateFormat dateFormat = new SimpleDateFormat("MMddHHmmss");
     		String tmpTime = dateFormat.format(nowtime);
             
             submit.setReportFlag(1);
             submit.setSPNumber("xxxxxxx");//接入号
             submit.setChargeNumber("000000000000000000000");
             submit.setUserNumber("86xxxxxxxx");//手机号不过一定要加86
             submit.setServiceType("xxxxxx");//服务号
             submit.setCorpId("xxxxx");//企业号
             submit.setFeeType(3);
             submit.setFeeValue("0");
             submit.setGivenValue("0");
             submit.setAgentFlag(0);
             submit.setMOrelatetoMTFlag(0);
             submit.setExpireTime(tmpTime);
             submit.setScheduleTime(tmpTime);//不同的短信接口对时间的要求也不一样子。这里一定要
             submit.setPriority(6);
             submit.setReportFlag(1);
             submit.setTP_pid(0);
             submit.setTP_udhi(0);
             submit.setMessageType(0);
             submit.setBinContent(10, byte_content);
           
             submit.setContent(15, "大家快跑");

              
             int len = submit.write(out);//发送submit
             System.out.println("len:"+len);
             tmp=sgip.read(input);
             if(tmp.getCommandID()==SGIP_Command.ID_SGIP_SUBMIT_RESP)
             {
            	 System.out.println("发送短消息");
                 submitresp=(SubmitResp)tmp;//强制转换
                 submitresp.readbody();//解包
                 System.out.println(tmp.getSeqno_1());
                 System.out.println(tmp.getSeqno_2());
                 System.out.println(tmp.getSeqno_3());
                 System.out.println(submitresp.getResult());
             }

              term=new Unbind(3000099050l);
              term.write(out);//发送unbind
              tmp=sgip.read(input);
              if(sgip.getCommandID()==SGIP_Command.ID_SGIP_UNBIND_RESP)
              {
            	  System.out.println("解除锁定");
	              Unresp=(UnbindResp)tmp;
	              System.out.println(tmp.getSeqno_1());
	              System.out.println(tmp.getSeqno_2());
	              System.out.println(tmp.getSeqno_3());
              }
             out.close();
            so.close();
         }catch (SGIP_Exception e){
        	 e.printStackTrace();
            }
         catch (Exception e) {
        	 e.printStackTrace();
         } finally {

         }

  }
	 //接收短信
	 public static void  recvLetter() {
         Socket so=null;
         OutputStream output=null;
         InputStream input=null;
         SGIP_Command sgip = null;
         Bind bind = null;

         try {
        	 sgip =new SGIP_Command();
        	 SGIP_Command tmp=null;
        	 Deliver deliver=null;
             DeliverResp deliverresp = null;

        	 so=new Socket("xxx.xxx.xxx.xxx",8801);
             input=so.getInputStream();
             output=so.getOutputStream();
             bind = new Bind(xxxxxx);
             bind.SetLoginType(1);
             bind.SetLoginName("xxxxxxx");
             bind.SetLoginPassword("xxxxxxx");
             System.out.println("正在登录中......");
             int err=bind.write(output);//发送bind
             if(err!=0)
             {
                System.out.println("err"+err);
             }
             
             tmp = sgip.read(input);
             if(tmp.getCommandID() == SGIP_Command.ID_SGIP_BIND_RESP)
             {
            	 BindResp  resp = (BindResp) tmp;
            	 resp.readbody();
            	 if(resp.GetResult()  == 0)
            	 {
            		 System.out.println("登录成功!!");
            	 }
            	 else
            	 {
            		 System.out.println("登录失败");
            	 }
            	 
             }
             System.out.println("正在接收中....");
             while(true)
             {
	             tmp = sgip.read(input);
	             if(tmp.getCommandID() == SGIP_Command.ID_SGIP_DELIVER)
	             {
	            	 System.out.println("接收到信息");
	                 deliver=(Deliver)tmp;//强制转换
	                 deliver.readbody();//解包
	                 System.out.println(deliver.getTotalLength());
	                 System.out.println(deliver.getCommandID());
	                 System.out.println(deliver.getSeqno_1());
	                 System.out.println(deliver.getSeqno_2());
	                 System.out.println(deliver.getSeqno_3());
	                 System.out.println(deliver.getUserNumber());
	                 System.out.println(deliver.getSPNumber());
	                 System.out.println(deliver.getTP_pid());
	                 System.out.println(deliver.getTP_udhi());
	                 System.out.println(deliver.getMessageCoding());
	                 System.out.println(deliver.getMessageLength());  
	                 System.out.println( new String(deliver.getMessageByte(),"UnicodeBigUnmarked"));
	                  
	                 deliverresp = new DeliverResp(3000099050l,0);
	                 deliverresp.SetResult(0);
	                 deliverresp.write(output);
	                 break;
	             }
             }
             
             Unbind term=new Unbind(xxxxxxx);//节点号
             term.write(output);//发送unbind
             tmp=sgip.read(input);
             if(sgip.getCommandID()==SGIP_Command.ID_SGIP_UNBIND_RESP)
             {
           	  	System.out.println("解除锁定");
             }
             output.close();
             so.close();

         } catch (Exception e) {
                 System.out.println(e.toString());
         } finally {
                   
         }

  }


	 
	 public static void main(String[] args) {
			// TODO Auto-generated method stub
			SMSHelper.recvLetter();
		}
}

Global site tag (gtag.js) - Google Analytics