精华内容
下载资源
问答
  • sgip模拟器
    2014-04-17 21:49:11
    从网上下载的一个联通短信网关模拟程序,但测试时发现了一个bug,输出的reserve的值被连接到messagecontent后面了
    更多相关内容
  • 中国联通短信网关SGIP协议模拟器,运行在windows平台,在开发以直连方式通过联通短信网关发送短信时模拟联通短信网关。
  • SGIP 1.2 联通短信网关模拟器 适用于联通 SGIP1.2协议短信开发 有图形界面,报文解析
  • 中国联通SGIP1.2模拟网关 Feb.27.04 升级到1.22,符合最新的sgip1.2(0120修订版标准),支持LinkId! 功能介绍: 1.运用线程池原理,支持大量并发连接,命令处理速度快。 2.可以主动批量下发Deliver消息,可以自定义...
  • sgip1模拟器测试

    2008-12-05 14:43:48
    sgip模拟器sgip模拟器sgip模拟器sgip模拟器sgip模拟器
  • sgip协议网关模拟器

    2008-09-24 17:01:09
    基于联通sgip协议的短信模拟网关 功能介绍 1. 运用线程池原理,支持大量并发连接,命令处理速度快。 2. 可以主动批量下发Deliver 消息,可以自定义Deliver 消息的任何字段内容, 以及MO 消息发送的循环次数,相邻两...
  • 包括中国联通SGIP客户端程序(不是源码)、中国联通SGIP服务端模拟器、网络调试抓包工具、中国联通SGIP协议文档,等等完成联通协议开发调试的必备工具。
  • Netty-2 联通网关短信对接(SGIP)

    千次阅读 2019-06-16 08:13:51
    模拟器参考:http://www.simpleteam.com/doku.php?id=message:sgip_simulator 客户端作者参考:https://blog.csdn.net/bareheadzzq/article/details/12977841 客户端源码:https://pan.baidu.com/s/13krmf 因使用...

    一、概述

    二、代码

    1、结构

         

    2、ClientSms

    package com.cfl.netty.sms;
    
    import java.nio.ByteBuffer;
    import java.util.HashMap;
    import com.core.sgip.SGIPMsg;
    import com.core.sgip.constant.SGIPConstant;
    import com.core.sgip.factory.SGIPFactory;
    import io.netty.bootstrap.Bootstrap;
    import io.netty.buffer.Unpooled;
    import io.netty.channel.ChannelFuture;
    import io.netty.channel.ChannelInitializer;
    import io.netty.channel.EventLoopGroup;
    import io.netty.channel.nio.NioEventLoopGroup;
    import io.netty.channel.socket.SocketChannel;
    import io.netty.channel.socket.nio.NioSocketChannel;
    import io.netty.handler.logging.LogLevel;
    import io.netty.handler.logging.LoggingHandler;
    import io.netty.handler.timeout.ReadTimeoutHandler;
    
    /**
     * Client端
     * @author chenfenli
     *
     */
    public abstract class ClientSms {
    
        private final static String ip = "192.168.1.102";
        private final static Integer port = 8001;
        private EventLoopGroup group;
        private Bootstrap bootstrap;
        private ChannelFuture channelFuture;
        private HashMap<String, String> msgMap = new HashMap<>();
    	
        public abstract void sendStatusBlag(boolean isSuccess,HashMap<String, String> msgMap);
    		
        public ClientSms() {
    	group = new NioEventLoopGroup();
    	bootstrap = new Bootstrap();
    	bootstrap.group(group);
    	bootstrap.channel(NioSocketChannel.class);
    	bootstrap.handler(new LoggingHandler(LogLevel.INFO));
    	bootstrap.handler(new ChannelInitializer<SocketChannel>() {
    	    @Override
    	    protected void initChannel(SocketChannel socketChannel) throws Exception {
    		socketChannel.pipeline().addLast(new ReadTimeoutHandler(10));
    		socketChannel.pipeline().addLast(new ClientSmsHandler(msgMap) {
    		    @Override
    		    public void sendStatus(boolean isSuccess, HashMap<String, String> msgMap) {
    		        sendStatusBlag(isSuccess, msgMap);
    		    }
    	        });
    	    }
            });
        } 
    	
        /**
         * 连接
         */
        public ChannelFuture getChannelFuture() {
    	if(null == channelFuture) {
    	    connect();
    	}
    	if(!channelFuture.channel().isActive()) {
    	    connect();
    	}
    	return channelFuture;
        }
        public void connect() {
    	try {
    	    channelFuture = bootstrap.connect(ip, port).sync();
    	    System.out.println("ClientSms -> ----------------------------------");
    	    System.out.println("ClientSms -> 远程服务已经连接,可以进行数据交换了...");
    	} catch (InterruptedException e) {
    	    e.printStackTrace();
    	}			
        }
    
        /**
         * 发送短信
         * @param phone
         * @param content
         */
        public void send(String phone, String content) {
    	try {
    	    HashMap<String, String> map = new HashMap<String, String>();
    	    map.put("phone", phone);
    	    map.put("content", content);
    	    msgMap = map;
    			
    	    SGIPMsg sgipMsg = SGIPFactory.getSGIPMsg(SGIPConstant.SGIP_BIND);
    	    ByteBuffer block = ByteBuffer.wrap(sgipMsg.getByteData());
    	    getChannelFuture();
    	    channelFuture.channel().writeAndFlush(Unpooled.copiedBuffer(block));
    		    
    	    channelFuture.channel().closeFuture().sync();
    	    group.shutdownGracefully();
    	} catch (Exception e) {
    	    e.printStackTrace();
    	}
        }
    }
    

    2、ClientSmsHandler

    package com.cfl.netty.sms;
    
    import java.nio.ByteBuffer;
    import java.util.Arrays;
    import java.util.HashMap;
    import com.core.sgip.SGIPMsg;
    import com.core.sgip.body.command.BindResp;
    import com.core.sgip.body.command.SubmitResp;
    import com.core.sgip.body.command.UnBindResp;
    import com.core.sgip.constant.SGIPConstant;
    import com.core.sgip.factory.SGIPFactory;
    import io.netty.buffer.ByteBuf;
    import io.netty.buffer.Unpooled;
    import io.netty.channel.ChannelHandlerContext;
    import io.netty.channel.ChannelInboundHandlerAdapter;
    import io.netty.util.ReferenceCountUtil;
    
    @SuppressWarnings("deprecation")
    public abstract class ClientSmsHandler extends ChannelInboundHandlerAdapter {
    
        private HashMap<String, String> msgMap;
    	
        public ClientSmsHandler(HashMap<String, String> msgMap) {
    	this.msgMap = msgMap;
        }
    	
        public abstract void sendStatus(boolean isSuccess, HashMap<String, String> msgMap);
    	
        @Override
        public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
    	try {
    	    ByteBuf buf = (ByteBuf)msg;
    	    byte[] bytes = new byte[buf.readableBytes()];
    	    buf.getBytes(0,bytes); 
    			
    	    SGIPMsg returnMsg = SGIPFactory.constructSGIPMsg(bytes);
                if(BindResp.class.isAssignableFrom(returnMsg.getCommand().getClass())) {
    	        if (null != returnMsg.getCommand() && ((BindResp) returnMsg.getCommand()).getResult() == 0) {
    		    String phone = this.msgMap.get("phone");
    		    String content = this.msgMap.get("content");	
    		    System.out.println("ClientSms -> 绑定成功 -> 发送短信 phone:"+phone+" content:"+content+"");
    		    SGIPMsg sgipMsg = SGIPFactory.getSGIPMsg(SGIPConstant.SGIP_SUBMIT);
    		    sgipMsg.setUserNumbers(Arrays.asList(phone), content);
    		    ByteBuffer block = ByteBuffer.wrap(sgipMsg.getByteData());
    		    ctx.writeAndFlush(Unpooled.copiedBuffer(block));
    		}
    	    }
    	    if(SubmitResp.class.isAssignableFrom(returnMsg.getCommand().getClass())) {
    	        if (null != returnMsg.getCommand() && ((SubmitResp) returnMsg.getCommand()).getResult() == 0) {
    		    System.out.println("ClientSms -> 短信发送成功 -> 取消绑定");
    		    sendStatus(true,this.msgMap);
    		    SGIPMsg sgipMsg = SGIPFactory.getSGIPMsg(SGIPConstant.SGIP_UNBIND);
    		    ByteBuffer block = ByteBuffer.wrap(sgipMsg.getByteData());
    		    ctx.writeAndFlush(Unpooled.copiedBuffer(block));
    		}
    	    }
    	    if(UnBindResp.class.isAssignableFrom(returnMsg.getCommand().getClass())) {
    		if (null != returnMsg.getCommand() && ((SubmitResp) returnMsg.getCommand()).getResult() == 0) {
    		    System.out.println("ClientSms -> 取消绑定成功 : " + this.msgMap.get("phone"));
    		    ctx.close();
    		}
    	    }
    	} finally {
    	    // 释放msg资源,当有调用writeAndFlush的时候会自动释放,可不写这行代码
    	    ReferenceCountUtil.release(msg);
    	}
        }
    	
        @Override
        public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
    //	System.out.println("ClientSmsHandler -> 关闭ctx");
    	ctx.close();
        }
    	
        @Override
        public void channelActive(ChannelHandlerContext ctx) throws Exception {
    //	System.out.println("ClientSmsHandler -> 激活...");
        }
    	
        @Override
        public void channelReadComplete(ChannelHandlerContext ctx) throws Exception {
    //	System.out.println("ClientSmsHandler -> 读完一条消息....");
        }
    }

    3、Test(测试类)

    package com.cfl.netty.sms;
    
    import java.util.HashMap;
    
    public class Test {
    
        public static void main(String[] args) {
    	for(int i = 0; i < 1000; i++) {
    	    ClientSms sms = new ClientSms() {
                    @Override
    		public void sendStatusBlag(boolean isSuccess, HashMap<String, String> msgMap) {
    		    System.out.println("是否成功:" + isSuccess + " map:" + msgMap);
    		}
    	    };
    	    sms.send("18670070001", "123123");
    	}
        }
    }
    

    展开全文
  • 实现SGIP1.2协议,只需修改短信网关地址,登录名即可,另外还有模拟短信网关测试程序,实时查看发送的内容。公司上线版本,无bug。强烈推荐!
  • cmpp3.0网关模拟器 sgip1.2网关模拟器

    热门讨论 2013-01-05 14:29:51
    cmpp3.0 、sgip1.2 网关模拟器,非常好用的模拟器,可以测试你的短信收发程序是否封装正确。
  • 联通sgip网关模拟器

    热门讨论 2009-10-09 16:27:04
    可以发送下行信息,接收上行并显示上行信息,测试非常方便
  • SGIP网关模拟,有所华为的jar包,服务以及参数配置过程。
  • 中国联通SGIP1.2短信网关模拟器

    热门讨论 2007-09-18 08:53:24
    完全模拟中国联通SGIP短信网关通信,是用于短信平台调测的便捷工具
  • 短信中心模拟器,基于cmpp sgip开发的辅助工具
  • cmpp2网关模拟器

    2013-06-06 15:34:37
    中国移动短信开发 cmpp2网关模拟器可配置端口等
  • 短信模拟器

    2015-01-29 15:12:16
    三大运营商短信模拟器SGIP1.2网关模拟器、smgp3.x短信网关模拟器、cmpp2.x短信网关模拟器、cmpp1/3 、smgp1/2、及其它协议网关模拟器
  • 短信网关模拟器

    2013-10-17 11:10:26
    一个支持多家移动运营商种的短信协议的模拟器,一个端口同时支持CMPP2.0 CMPP3.0 SMGP3.0 SGIP1.2 短信协议和MM7彩信协议,支持大容量测试,速度可达5万/秒
  • 短信cmpp2.0模拟器

    2022-02-28 16:15:23
    短信cmpp2.0模拟器
  • CMPP 2.0网关模拟器

    2014-04-11 15:26:45
    CMPP 2.0 网关 模拟器 适用于CMPP2.0短信开发
  • 包括Cmpp 短信模拟网关、移动Cmpp2.0 短信模拟网关、SGIP12网关模拟器sgip客户端、Java版三网短信网关模拟器、SIM1.3短信服务端全能模拟器
  • 多网短信网关模拟器

    2016-04-01 18:03:50
    本人亲测可用,支持CMPP、SGIP、SMGP,总共有4个工具,希望能够帮助开发短信网关的小伙伴。其中电信支持发送、上行回复、状态报告,联通支持发送和上行回复、移动的只支持发送。
  • 中国联通SGIP模拟器 概述:基于SGIP v1.2协议开发的,具有方便易用图形化的界面,专业级协议分析工具,是中国联通SP的开发利器,大大减少了开发成本,配合专用的手机模拟终端可以直接模拟手机用户收发短信,还可...
  • 短信网关模拟器 支持移动联通电信 支持CMPP 2.0 CMPP 3.0 SGIP 1.2 SGMP 3.1协议开发 协议解析
  • 本工具包包含中国移动、中国联通、中国电信、中国网通及短信中心短信网关模拟器及用于测试用途的手机终端模拟器.
  • 此程序为中国联通Sgip协议程序接口,适合在中国联通申请了短信发送端口的公司使用。 短信群发已经成为现在软件系统、网络营销等必不可少的应用工具。可应用在短信验证、信息群发、游戏虚拟商品购买、事件提醒、送...

    此程序为中国联通Sgip协议程序接口,适合在中国联通申请了短信发送端口的公司使用。

    短信群发已经成为现在软件系统、网络营销等必不可少的应用工具。可应用在短信验证、信息群发、游戏虚拟商品购买、事件提醒、送祝福等方面。

    本程序功能包括:

    1、支持中国联通Sgip1.2协议;

    2、支持一般的短信发送、上行短信接收、状态报告;

    3、支持长短信;

    4、支持普通手机号和物联网卡;

    5、全套C#.Net源码

    程序适用于Sgip 1.2协议,可用.Net任何版本编译。

    DLL版:短信接口程序DLL源码,调用此DLL在自己的程序中实现短信收发功能。

    Windows服务版:短信Win服务程序+MsSql/MySql数据库源码,直接配置好win服务并启动,自己只需往数据库里面写入数据就可以发送短信,接收的短信保存在另一张表中,读取即可收到上行短信。

     

    部分短信源码截图:

     

    调试小程序截图1:

    调试小程序截图2

    模拟网关截图:

     

    另赠送:

    提供网关模拟器,抓包工具,长短信实现方法,以及参数如何填写的实例文档,使用该代码的测试小程序源码。承诺帮忙调试通过。并提供后续技术支持。

     

     有偿提供与联通联调服务,承诺帮忙调试通过,并免费赠送源码。如有需要请联系 小y QQ:271963990  请注明来意。

    转载于:https://www.cnblogs.com/tuyile006/p/7203990.html

    展开全文
  • 网络计算的大作业 根据联通的SGIP协议 写一个短信网关模拟程序,能够模拟短信的发送过程,有界面,用C#写的,类似于QQ。但功能较为简单,仅仅是实现了简单的通信,尚未实现注册,登录等功能。
  • 计算机专业毕业设计方案参考题目.pdf计算机专业毕业设计方案参考题目.pdf计算机专业毕业设计方案参考题目.pdf计算机专业毕业设计方案参考题目.pdf计算机专业毕业设计方案参考题目.pdf计算机专业毕业设计方案参考题目...
  • 莎莎短信网关模拟器

    2011-05-18 17:54:22
    原来是他从网上随便找了个SGIP模拟器,那个模拟器非常的简单,只有一个bind测试和一个deliver的测试,程序也有问题,劣质模拟器害人不浅呀,结果把那位网友折磨了好几天。最近在学习vc,就写了一个,希望对做短信...

     

         前段时间有个网友在我的博客上下载了短信接入程序,有一天加我QQ,说:“大哥,我下载了你的短信接入程序,可是我在调试群发短信的时候,发第一条正常,但是后面的短信发的时候程序就出现错误了,我弄了两天还没有弄好,老板在催我了,麻烦你帮我看看吧”,实在推脱不开就用远程协助登到他的机器上,远程debug。说来也奇怪还真出错了,我就很纳闷呀,短信接入程序已经在生产环境上用过,我问其它网友他们都说正常呀,我以为是jdk版本的问题,一条语句一条语句的排查,找了一下午也没有找出问题,我问他,你是怎么做测试的?他说我就是用你的发短信的那个TestSendSMS类向模拟器发的短信。原来是他从网上随便找了个SGIP的模拟器,那个模拟器非常的简单,只有一个bind测试和一个deliver的测试,程序也有问题,劣质模拟器害人不浅呀,结果把那位网友折磨了好几天。最近在学习vc,就写了一个,希望对做短信开发的朋友有帮助,源代码我整理后也会贴上来。如有错误改正后请也发我一份,谢谢。

     

    主界面:

     

     

     

    下发Report界面

     

    短信上行界面:

     

     

    短信接入程序界面:

     

    展开全文

空空如也

空空如也

1 2 3 4
收藏数 62
精华内容 24
关键字:

sgip模拟器