中国电信 smgp java_smgp.java~1~ 源代码在线查看 - 中国电信小灵通短信平台SP端程序 资源下载 虫虫电子下载站...
return this.dataPack; }catch(Exception e){ e.printStackTrace(); System.out.println("[SMGP] makeActiveMsgPack.pack() error : "+e.getMessage()); return null; } } /**取得5.3.1active_test的消息包 * 5.3.7active_test **/ private byte[] makeActiveMsgPack(){ ByteArrayOutputStream byteArrayOutStream = new ByteArrayOutputStream(); DataOutputStream dataOutStream = new DataOutputStream(byteArrayOutStream); try{ //MT消息长度 this.PacketLength = 12; //打包MT消息报头 packHead(dataOutStream); //返回消息的字节流 dataPack = byteArrayOutStream.toByteArray(); return this.dataPack; }catch(Exception e){ e.printStackTrace(); System.out.println("[SMGP] makeActiveMsgPack.pack() error : "+e.getMessage()); return null; } } /**取得5.3.1exit的消息包 * 5.3.11exit **/ private byte[] makeExitMsgPack(){ ByteArrayOutputStream byteArrayOutStream = new ByteArrayOutputStream(); DataOutputStream dataOutStream = new DataOutputStream(byteArrayOutStream); try{ //MT消息长度 this.PacketLength = 12; //打包MT消息报头 packHead(dataOutStream); //返回消息的字节流 dataPack = byteArrayOutStream.toByteArray(); return this.dataPack; }catch(Exception e){ e.printStackTrace(); System.out.println("[SMGP] makeExitMsgPack.pack() error : "+e.getMessage()); return null; } } /** * 解吸接受到的数据包,转换成SMGP MSG * @param recvPack * @return */ public void parsePack(byte[] recvPack) throws Exception{ ByteArrayInputStream byteStream = new ByteArrayInputStream(recvPack); DataInputStream dataInStream = new DataInputStream(byteStream); //读取消息头 try { this.RequestID = dataInStream.readInt(); //消息类型 this.SequenceID = dataInStream.readInt(); //消息流水号(可以用来完成消息的确认) } catch(IOException e) { System.out.println("[SMGP] SMGP.parseHead() error : "+e); throw e; } //读取消息体 try{ switch(RequestID){ case SMGP.SMGP_LOGIN: break; case SMGP.SMGP_LOGIN_RESP: this.parseLoginRespPack(dataInStream); break; case SMGP.SMGP_DELIVER: break; case SMGP.SMGP_DELIVER_RESP: break; case SMGP.SMGP_SUBMIT: break; case SMGP.SMGP_SUBMIT_RESP: break; case SMGP.SMGP_ACTIVE_TEST: break; case SMGP.SMGP_ACTIVE_TEST_RESP: break; case SMGP.SMGP_QUERY: break; case SMGP.SMGP_QUERY_RESP: break; } } catch(Exception e){ throw e; } } /** * 解析login_resp信息包 * 5.3.2login_resp * @param dataInputStream */ private void parseLoginRespPack( DataInputStream dataInputStream ) throws Exception { try{ this.Status = dataInputStream.readInt(); this.AuthenticatorServer = this.readString(dataInputStream,16); this.Version = dataInputStream.readByte(); }catch(Exception e){ System.out.println("[SMGP]SMGP.parseConnectRespPack error " + e); throw e; } } /** * 解析submit_resp信息包 * 5.3.4submit_resp * @param dataInputStream */ private void parseSubmitRespPack( DataInputStream dataInputStream ) throws Exception { try{ this.MsgID = this.readString(dataInputStream,10); this.Status = dataInputStream.readInt(); }catch(Exception e){ System.out.println("[SMGP]SMGP.parseSubmitRespPack error " + e); throw e; } } /** * 解析deliver信息包 * 5.3.5deliver * @param dataInputStream */ private void parseDeliverPack( DataInputStream dataInputStream ) throws Exception { try{ this.MsgID = this.readString(dataInputStream,10); this.IsReport = dataInputStream.readByte(); this.MsgFormat = dataInputStream.readByte(); this.RecvTime = this.readString(dataInputStream,14); this.SrcTermID = this.readString(dataInputStream,21); this.DestTermID = this.readString(dataInputStream,21); this.MsgLength = dataInputStream.readByte(); //当为状态报告时候 if(IsReport == 1){// this.Report_ID = this.readString(dataInputStream,10);// this.Report_Submit_date = this.readString(dataInputStream,14);// this.Report_Done_date = this.readString(dataInputStream,14);// this.Report_Stat = this.readString(dataInputStream,7);// this.Report_Error = this.readString(dataInputStream,3); this.MsgContent = readDeliverString(dataInputStream,this.MsgLength,this.MsgFormat); } else{ //非状态报告,当字节数大于128时候 this.MsgContent = readDeliverString(dataInputStream,this.MsgLength,this.MsgFormat); } }catch(Exception e){ System.out.println("[SMGP]SMGP.parseDeliverPack error " + e); throw e; } } /** 生成序列号 **/ private static int fmo_number = 1; private synchronized static int getSequenceID() { int temp_SeqNo = fmo_number++; if (fmo_number >= 100000000) fmo_number = 1; return temp_SeqNo; } /** * 向数据输出流写入指定长度字符串,不足右补“\0” * @param dataOutStream 由调用者传送来的数据输出流 * @param str 写入的字符 * @param StrLen 指定长度 * @throws Exception */ private void writeString_old(DataOutputStream dataOutStream,String str,int StrLen) throws Exception { int i; try{ if(str!=null) { dataOutStream.writeBytes(str) ; System.out.println("str len = "+str.length()); for (i=1;i { dataOutStream.writeByte('\0'); } }else{ for (i=1;i { dataOutStream.writeByte('\0'); } } }catch(IOException e){ throw e; } } /** * 向数据输出流写入指定长度字符串,不足右补“\0” * @param dataOutStream 由调用者传送来的数据输出流 * @param str 写入的字符 * @param StrLen 指定长度 * @throws Exce **/ private void writeString(DataOutputStream dataOutStream,String str,int StrLen) throws Exception { if(str==null || str.length()==0){ for(int i=0;i dataOutStream.writeByte('\0'); } return; }// byte[] bytes = str.getBytes();// int theLength = Math.min(bytes.length,StrLen);// dataOutStream.write(bytes,0,theLength); int theLength = str.length() < StrLen ? str.length() : StrLen; dataOutStream.writeBytes(str.substring(0,theLength)); //不足部分补'\0' for(int i=0;i dataOutStream.writeByte('\0'); } } /** * 按长度,编码格式从字节流中读取指定长度的字符 * @param inStream :字节流 * @param StrLen :长度 * @param fmt :编码格式 * @return */ private static String readDeliverString(DataInputStream inStream, int StrLen, int fmt) { String result = ""; byte[] readByte = new byte[1000]; int i = 0; //判断字符串是否长于128位 if (StrLen < 0) { StrLen = 256 + StrLen; } try { while (true) { readByte[i] = inStream.readByte(); i++; if (i >= 1000) return ""; if (i > StrLen - 1) break; } } catch (IOException e) { return "readStringError->IOException"; } //按编码格式进行转码 try { if (fmt == 8) { result = new String(readByte, "UnicodeBigUnmarked"); } if (fmt == 0) { result = new String(readByte, 0, i); } if (fmt == 15) { result = new String(readByte, "gb2312"); } } catch (Exception e) { return "readStringError->FormatException"; } return result.trim(); } /** * 从流中读取一个字符串,返回的String 不包含'\0' */ private static String readString(DataInputStream inStream,int StrLen) { byte[] readByte = new byte[1000]; int i = 0; //当消息长度为大于(128时候) if(StrLen StrLen = 256 + StrLen; try{ while(true){ readByte[i] = inStream.readByte() ; i++; if (i>=1000) return ""; if(i > StrLen-1) break; } } catch(IOException e){ return "erro"; } String result = new String(readByte,0,i); return result.trim (); }}
中国电信 smgp java_smgp.java~1~ 源代码在线查看 - 中国电信小灵通短信平台SP端程序 资源下载 虫虫电子下载站...相关推荐
- 编写frame.java_returnordersubmitframe.java~83~ 源代码在线查看 - 用java编写的进销存系统 资源下载 虫虫电子下载站...
//设置窗口类的字体和为按钮加入动作接收器的方法 public void setupFontAndListener(){ Component[] components = contentPane.ge ...
- 在线matlab怎么看图像,matlab.txt 源代码在线查看 - 关于matlab的图形图像识别的使用命令 资源下载 虫虫电子下载站...
sparse 常规矩阵转换为稀疏矩阵 full 稀疏矩阵转换为常规矩阵 spconvert 由外部格式引入稀疏矩阵 >>>12.3处理非零元素issparse 判断元素是否为稀疏矩阵 ...
- Android 源代码在线查看 目录结构 不完全指南
Android 源代码在线查看网站 在 Android sudio 中,想要查看一个 Android 系统的源代码,仅仅需要 Ctrl+鼠标左键 点击该目标类和方法名,即可在开发软件Android s ...
- android 源代码在线查看和索引
android 源代码在线查看和索引 原文转载:http://androidsource.top/ 点击打开链接 近期发现该网址已经无法找到 可切换这个地址:http://grepcode.com/ ...
- 十分好用的Android源代码在线查看网站
十分好用的Android源代码在线查看网站 http://androidxref.com/9.0.0_r3/
- JAVA怎么对接第三方短信平台?短信验证码完整API文档
验证码短信平台的应用场景,一般包括用户注册.登陆账号.忘记密码.登录异常.支付确认等. 一.用户注册 通常我们会在注册时会用到短信验证码,即用户在网站或软件上注册账号时,企业需要通过验证码确认用户身份 ...
- java毕业设计融呗智慧金融微资讯移动平台服务端源码+lw文档+mybatis+系统+mysql数据库+调试
java毕业设计融呗智慧金融微资讯移动平台服务端源码+lw文档+mybatis+系统+mysql数据库+调试 java毕业设计融呗智慧金融微资讯移动平台服务端源码+lw文档+mybatis+系统+my ...
- Java实现发送短信的例子 - 使用【SMS短信平台】
转自: https://blog.csdn.net/qq_26641781/article/details/78134241 我这里用到的是中国网建提供的SMS短信平台,在实现发送短信之前,需要在SM ...
- java语言阅信短信平台,阅信短信平台关于酒店管理的解决方案
酒店行业具备客户密集,竞争激烈,服务要求高的特点,服务质量是客户主要关注的因素.阅信短信平台为酒店的管理者提供了信息化平台,使酒店管理者可以更加简洁高效地为客户服务,在低成本地投入下完成了现有客户服务 ...
- java at 短信_让老手机变成短信平台-AT指令的应用
以NOKIA8250为例.通过8250的红外与PC连接之后,会产生一个虚拟串口,这个串口的序号可能在每台电脑上都不一样.利用这个串口,就可以对手机进行一系列操作,包括发送.接收短信.通过程序操作串口, ...
最新文章
- python常用命令大全-Python pip 常用命令汇总
- join orcl的left_Oracle关联查询关于left/right join的那点事
- srs代码学习(2)- 线程模型
- mysql读写分离 同步_MySQL数据库的同步配置+MySql读写分离
- Python多种方法实现句子中单词倒置(好未来2017笔试题)
- Tcl/tk glob nocomplain source
- 使用nohup让程序在远程主机后台运行
- python基础刻意练习--Task 7 文件与文件系统
- gps高斯utm_UTM坐标系统与高斯
- utc时间 单位换算_国际时间换算
- 我国计算机网络事业发展,我国计算机网络事业发展很快。据中国互联网络中心的一项统计显示【逻辑判断】...
- 京东AI:用于视觉识别的上下文Transformer网络-Contextual Transformer Networks for Visual Recognition
- java contains 大小写_用.contains方法忽略大小写的选项?
- 某大型软件公司售前软件工程师面试题附答案
- 给深度学习入门者的Python快速教程 - 番外篇之Python-OpenCV
- (学习笔记)PCL点云库的基本使用
- 收单外包机构备案业务类型汇总分析
- vue-seamless-scroll公告组件的使用
- 真的是神坑啊,Eureka服务无法注册的问题
- SpringBoot2核心技术最好的一篇文章——2. 核心技术
热门文章
- android自定义rx库,Android下载库(OkHttp3+Retrofit2+RxJava2)
- mariadb BSL协议期限
- 一本笔记,看懂《未来简史》!
- 计算机毕业论文房地产营销,万科集团四季花城房地产营销策略研究(毕业论文)...
- Activity初窥门径
- 交换机常用功能配置案例总结
- 电脑装windows和安卓双系统引导_Remix mini安卓电脑,玩的不只是Windows那张皮
- [Other]规范的邮件签名格式及HTML代码
- Webpack Chunk 分包规则
- 豆瓣电影喜剧榜数据爬取