中国联通短信网关sgip 第三方 api(java)
- 格式:doc
- 大小:427.50 KB
- 文档页数:42
java实现基于SGIP协议开发联通短信的⽅法本⽂实例讲述了java实现基于SGIP协议开发联通短信的⽅法。
分享给⼤家供⼤家参考。
具体如下:近段时间,由于公司的业务需要,开发出了联通短信.此⽂章的编写也是根据⽹上的⼀些⽰例来完成的.闲话少说,下⾯来看代码:(运⾏此程序的时候需要导⼊华为的开发包,此包可以到⽹上下载)下⾏:public class Mt {private static String SPNumber = "**********";//接⼊号码private static String ChargeNumber = "000000000000000000000";// 计费号码,⽩名单private static String ServiceType = "";//服务类型private static String host = "***.***.***.***";// 主机名,⽹关IPprivate static int port = ****;// 端⼝号private static String CorpId = "*****";// 企业代码private static String login_Name = "**";// 登陆名private static String login_PassWord = "***";// 登陆密码public static void main(String[] args) throws UnsupportedEncodingException {int srcnode = new BigInteger("*******").intValue();//源节点编号(nodeid),这⼀步⾮常重要,华为包中,该字段类型为int,⽽接⼊协议中要求在企业代码前加上30000,这样就超过了int的取值范围,所以需要⽤BigInteger转⼀下就可以了 Args argstr = new Args();//设定连接参数argstr.set("host", host);argstr.set("port", port);argstr.set("transaction-timeout", 10);// 操作超时时间(单位:秒)argstr.set("read-timeout", 15);// 物理连接读操作超时时间(单位:秒)argstr.set("source-addr", srcnode);// SP…ID(最⼤为六位字符)argstr.set("login-name", login_Name);argstr.set("login-pass", login_PassWord);argstr.set("debug", "false");// 连接登陆SGIPSMProxy sgipsmp = new SGIPSMProxy(argstr);// 这⾥连接到短信息⽹关try {//connect表⽰向SMG登陆,登录名与密码分别是SMG向SP分配的⽤户名与密码,调⽤这个接⼝⽅法,向SMG发送Bind命令消息。
关于SGIP和CMCC两种短消息协议的比较(1.中国移动通信集团内蒙古有限公司;2.中国人寿保险股份公司内蒙古分公司,内蒙古呼和浩特 010010)2.2.2.3 Submit操作。
在SP和SMG的通信中,SP用Submit指令向SMG 提交MT短消息,发送到用户的手机中。
SMG接收到Submit指令,会返回Submit_Resp应答。
SMG依据Submit指令中的付费号码,推断出该指令是否应从本地SMSC发送,假如属于本地发送,则直接发送到相应的SMSC,否则路由至相应的SMG。
2.2.2.4 Deliver操作。
在SP和SMG的通信中,SMG用Deliver指令向SP发送一条MO短消息。
SP接收到Deliver 指令,会返回Deliver[CD)this.width=740" border=undefined>①SP发出数据请求〔可能是短信通知或手机铃声等〕,被源ISMG接收;②源ISMG对接收到的信息返回响应;③源ISMG在本地数据库中找不到要目的手机号段所对应网关代码,向GNS 〔汇接网关〕发路由请求信息;④汇接网关将路由信息返回;⑤源ISMG依据路由信息将请求前转给目的ISMG;⑥目的ISMG对接收到的信息返回响应;⑦目的ISMG将请求信息发送至SMC;⑧SMC向目的ISMG返回响应。
在上述操作中,步骤1到步骤6均使用CMPP协议;在随后的操作中,SMC将通过NO.7信令网向移动用户发送信息,移动用户收到后将返回状态报告〔Delivery-Receipt〕给短信中心,短信中心将根据MO操作的流程将状态报告返回给SP〔假如SP要求返回状态报告〕。
3.2 通信方式CMPP协议以TCP/IP作为底层通信承载。
SP与ISMG之间、ISMG之间进行信息交互时,可以接受长连接方式,也可以接受短连接方式。
所谓长连接,指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,假如没有数据包发送,需要双方发链路检测包以维持此连接。
SP接入API使用指南版本:1.2深圳市傲天信息技术有限公司深圳市高新科技园南区科技南十路深圳国际技术创新研究院二楼A座邮政编码:518057电话:86-755- 26727239第一章概述 (3)1.1 系统简介 (3)1.2 系统设计原则 (3)1.3 术语说明 (4)第二章系统结构 (4)2.1 结构说明 (4)2.2 系统结构图 (4)2.3 系统应用环境 (5)2.4 系统开发环境 (5)第三章接口函数说明 (6)3.1 函数说明格式 (6)3.2 数据结构定义 (6)3.2.1 Deliver包结构 (6)3.2.2 Report包结构 (6)3.2.3 MT Response结构 (7)3.2.4 Submit错误结构 (7)3.3 函数功能介绍 (8)3.3.1 Startup(系统初始化函数) (8)3.3.2 Submit(下发消息函数) (9)3.3.3 Deliver(Deliver包处理函数) (11)3.3.4 Report(Report包处理函数) (11)3.3.5 MT Response(MT Response包处理函数) (12)3.3.6取包函数 (12)第一章概述本章首先简要介绍了傲天公司的短信网关平台(MUSE SMG),然后描述了API的设计目标及原则。
1.1 系统简介MUSE SMG(短信网关)为SP提供了一个具有全网互连功能的短消息接入平台,为电信运营商、SP开展全国性的短消息业务提供了承载功能,借助这个通道,SP可以向手机用户提供短消息增值服务。
随着短消息增值业务的不断发展,越来越多有着丰富特色的SP希望尽快接入到该平台上,为广大的手机用户提供各种应用,同时也使自己获得可观的利益。
由于SP与网关平台之间相连是采用SGIP协议来实现的,SP必须在熟悉SGIP协议的前提下才能进行开发,这样就增加了开发难度,也延长了SP接入的时间。
基于这种情况,傲天公司凭借自己在网关开发及协议理解方面的优势,开发了这套API。
技术部分1、信息推送的技术方案信息流是继物流和资金流而后的更为重要的企业命脉所在,如何协调和理顺企业的信息流转通道和速度,就成为行业竞争成败的关键所在。
随着计算机和网络技术的广泛应用,信息化的浪潮席卷了整个中华大地,各企业、行业、政府纷纷建立电子办公、电子商务、电子政务等等信息化系统。
随着人们、企业、行业之间的联系越来越密切,合作以及商务关系日趋频繁,这种仅仅依赖于计算机系统的信息化已经不能满足信息不断腾飞的趋势。
移动通信技术的不断进步和发展给信息传递提供了新的方式,人们也逐渐意识到只有做到了移动信息化才能真正满足当前信息时代的要求。
一、短消息接入方式企业短消息应用架构将短消息应用到企业领域,其应用架构可分为三个层面:接入平台、应用支撑平台、应用系统。
●接入平台通过无线网络或者有线网络完成短消息的协议适配和接收发送。
无线接入方式采用GSM/CDMA空中接口,通过移动网络将短消息发送到短消息中心或网关;有线接入方式利用互联网或专用网络直接接入短消息中心或网关。
●应用支撑平台介于应用系统和接入平台之间,向应用系统提供基本的通用短消息服务。
这些服务包括短消息单发,短消息群发,短消息定时发送,短消息用户的鉴权和用户管理,短消息负载平衡和流量控制等。
这些服务和具体应用需求独立,但却是所有应用系统必不可少的功能。
在实际应用中,该层往往和应用系统紧密集成在一起。
●应用系统包括各种面向应用的系统。
这些系统有企业办公系统(OA)、邮件系统、C财务系统、ERP等等;另外还包括和行业应用密切相关的应用系统。
这些系统利用应用服务层提供的短消息服务接口,专注于各自的应用逻辑。
诸如企业QQ等就是属于这个层次的短信应用系统。
企业短消息应用思路企业在开展短消息应用的时候,一般会有三种思路:第一种是采用运营商面向企业应用的短消息平台,申请开通企业短消息业务;第二种是采用短消息服务提供商(如ISP/ICP)的企业短消息平台;第三种是自建企业短消息中心。
融合移动与联通短信网关的通用管理平台范嵩;李明霞;于智;路莹【摘要】中国移动和联通公司短消息服务运营商在软硬件接口上的不一致,造成广大企事业用户同时运行管理两个平台,这给实际应用造成困难.在分析了移动和联通两大短消息运营商为企业用户提供的短消息接口及其特征的基础上,提出了综合这两种不同接口的实用方法,构建了基于C/S网络结构扩展的企业级短信网关通用管理平台.实现了企业短消息业务的统一需求和有效的管理.实际运行结果证实,在接收千余个客户端连接后,整体平台稳定地进行短消息业务的数据交互及客户端服务的交互管理.【期刊名称】《大连工业大学学报》【年(卷),期】2008(027)004【总页数】5页(P341-345)【关键词】短信网关;短信网关接口协议;移动信息机;信息融合;管理平台【作者】范嵩;李明霞;于智;路莹【作者单位】大连工业大学信息科学与工程学院,辽宁大连,116034;大连工业大学艺术与信息工程学院,辽宁大连,116100;大连工业大学艺术与信息工程学院,辽宁大连,116100;大连工业大学信息科学与工程学院,辽宁大连,116034【正文语种】中文【中图分类】TP393.070 引言近年来,手机短消息已经打破了传统的宣传、通信形式,凭借其灵活而廉价的传播优势渗透到了通信业务的方方面面,引起了广大企事业用户的关注。
国内两大短消息服务运营商中国移动和中国联通拥有数以亿计的客户群,但是两家运营商却以完全不同的规范独立提供着短消息处理业务。
中国移动的短信收发以比较完备的硬件设备实现,而联通的短信收发都是通过光纤直接接入,利用SP(Service Provider)服务提供商的软件进行管理。
两家短消息服务运营商在软硬件上的不一致,造成广大企事业用户同时运行管理两个平台,这给实际应用造成困难。
为了弥补这方面的不足,本文根据实际项目的需求开发了一种综合联通光纤接入和移动信息机接入的企业级短信网关通用管理平台。
短信网关SP端应用程序接口使用说明---- ZTE_SGIP_API一、使用说明本接口遵循SGIPv1.2 协议标准,以提供消息发送和接收函数的方式, 向ICP 提供同联通网关进行信息交换的实现途径.客户可以依据具体需要,利用所提供的函数实现不同的连接方式(长连接和短连接)以及何时自动建立和中断连接, 除此之外, API 作为应用的接口,对SGIP 描述的其它功能,象流量控制重发机制和并发处理都不预干预,需要应用程序处理二、函数说明:1、设置源节点代码(set_src_node)◆函数功能依照SGIP1.2协议,设置源节点代码◆返回值无◆参数说明:2、与网关建立连接(SGIP_Connect)◆函数功能建立与网关间的连接◆返回值整型>0 连接成功返回值标识一个连接,在以下的函数中使用<0 连接失败◆参数说明:3、向网关提交信息(SGIP_Submit)◆函数功能向网关提交短信◆返回值=0 标识成功<0 标识发送失败◆参数说明:1、如果建立好连接后一段时间没有发送消息,网关可能会关闭连接,2、SGIP_Submit返回ERROR_SOCKET_CLOSE ,这时,必须重新建立连接并发送消息3、p_seq1,p_seq2,p_seq3是函数返回的序列号,可与状态报告中的序列号对应4、主动与网关断开连接(SGIP_Disconnect)◆函数功能主动和网关断开链接◆返回值=0 标识成功<0 标识失败◆参数说明:5、等待并接收MO 消息(SGIP_Get_MO)◆函数功能等待并接收MO 消息◆返回值>0 标识成功收到MO消息,返回值是消息类型可能为MO_MSG或MO_REPORT<0 标识发生错误:◆参数说明:◆注意:1、应用程序必须自己建立监听socket,并将accept返回的socket标识传给SGIP_Get_MO(参见test_mo例子)2、如果没有MO消息将阻塞,直至MO消息到达或连接被网关关闭3、返回ERROR_SOCKET_CLOSE并不是错误,只是网关关闭了连接4、对收到的MO,应用程序要根据SGIP_Get_MO返回的类型。
基于短信网关WAP推送的实现摘要 WAP PUSH既有信息发送主动、及时的特点,又有可随时随地接收信息的优势,因而具有良好的应用前景。
该文简单介绍了WAP PUSH系统框架、推送协议和推送方式,重点介绍了通过短信网关实现WAP推送的实现方法。
1WAP推送技术简介1.1 什么是WAP推送WAP推送(PUSH)技术是一种建立在客户服务器上的机制,就是由服务器主动将信息发往客户端的技术。
同传统的拉(PULL)技术相比,最主要的区别在于推送(PUSH)技术是由服务器主动向客户机发送信息,而拉(PULL)技术则是由客户机主动请求信息。
PUSH技术的优势在于信息的主动性和及时性。
PUSH技术在Internet中没能取得大的成功,原因是多方面的。
主要原因在于固定网中计算机等固定设备为用户提供了足够的资源和能力去查找信息所以用户通常将它作为一个浏览信息的窗口,而不是被动的信息接收者。
同时固定网用户对于信息准确性的要求远甚于对其及时性的要求,因此PUSH技术未能得到广泛的应用。
而在移动网中,由于存在着网络带宽、移动终端能力以及自费标准高昂等诸多限制,使得用户查找信息受到了一定的限制,如果将重要的信息主动及时地推送到用户的移动设备上无疑会大大方便用户。
移动通信的优点是移动设备能够随时随地接收信息因此PUSH技术在移动网中可以大展拳脚,WAP PUSH正是PUSH 技术和移动通信两者扬长避短相结合的产物。
WAP PUSH是在移动网络中应用的PUSH技术,它结合了一般PUSH技术和移动网络的特点。
它的系统框架、使用协议和服务方式与固定网上的PUSH技术有很大不同。
1.2 WAP PUSH系统框架WAP PUSH框架主要包括推送发起者(PI:PUSH Initiator)、推送代理网关(PPG:PUSH ProxyGateway)和推送客户(PC:PUSH Client) 三个功能部分。
PI位于Internet中,而PC在WAP领域,PI和WAP客户端所使用的协议是不同的,需要在中间建立一个协议转换网关即PPG。
基于SGIP协议的联通在信网关系统开发的开题报告一、选题背景及研究意义随着互联网技术的不断发展,运营商的竞争也越来越激烈。
这就要求运营商要不断提高自己的服务水平,提高用户的体验,增加用户的粘性。
而短信是一种常用的通信方式,在用户间广泛应用。
短信网关作为一种承载短信的关键系统,其稳定性、安全性和扩展性都是至关重要的。
当前,中国联通采用基于SGIP协议的短信网关系统,利用与短信终端相连接的短信网关,实现与用户的互动。
因此,研发一款基于SGIP协议的短信网关系统,对中国联通的服务质量、运营效率以及用户体验的提升都具有非常重要的作用。
二、研究内容及方法本课题基于SGIP协议,着眼于联通的通信网关技术,研究联通在信网关系统的开发。
主要包括以下内容:1. SGIP协议的介绍:介绍SGIP协议的相关概念、通信机制以及运行原理。
2. 联通短信网关系统的架构设计:分析联通短信网关系统的功能需求,提出具体的架构设计,完成系统结构设计和功能模块定义。
3. 系统实现:使用Java语言开发,采用分层结构和模块化设计方法,完成各个功能模块的开发,包括短信发送和接收、消息路由、数据转换等。
4. 系统测试:对系统进行全面的测试,包括功能测试、压力测试、安全测试等,保证系统的稳定性和安全性。
三、拟解决的问题及预期成果本课题将研发一款基于SGIP协议的短信网关系统,预期解决以下问题:1. 提高联通短信网关系统的稳定性和可靠性,保证短信的即时性和可达性。
2. 提高联通短信网关系统的安全性,防止潜在的钓鱼、扫描等安全问题。
3. 提高联通短信网关系统的扩展性,方便后续的功能扩展和升级。
预期成果包括:1. 设计一款基于SGIP协议的短信网关系统的架构和功能模块。
2. 完成系统的开发,并实现系统的各项功能。
3. 对系统进行全面的测试,保证系统的稳定性、安全性和可靠性。
4. 提出优化方案,进一步改善系统的性能。
四、研究进度及计划本课题的研究进度和计划如下:1. 阶段一:SGIP协议的研究和分析,完成联通短信网关系统的架构设计。
中国联通SGIP1.2短消息网关开发接口库使用手册WritenBy:PrinceToadEmail:******************Version:1.0 2003/9/9DownLoad1. 接口说明该接口库是用VC6.0开发的基于Windows平台上的SGIP1.2协议的实现,接口对中国联通SGIP协议进行了高度封装,目的是方便SP接入中国联通短消息网关。
2.功能特点1) 严格按照SGIP1.2协议实现,支持Bind, BindResp,Submit, SubmitResp, Deliver,DeliverResp, Report, ReportResp, Unbind, UnbindResp消息。
2) 采用多线程并发处理的方式获取强大的性能,针对SGIP协议的特点,内建线程池进行消息的收发及处理操作,充分发挥系统和网络性能,再大的业务量也能够得到及时处理,丢包率小于0.01/%。
3) 发送消息采用短连接的方式;接收消息采用半长连接的方式,可以设置超时时间,在没有消息的情况下,主动断开网关连接。
4) 接口库经过高度封装,模块化强,使用简单,屏蔽了网关通信,消息收发和处理的复杂性操作,SP用户只需要关注具体的业务处理过程,大大简化了短消息开发的难度!3.接口函数该接口库以动态库的形式提供,包含以下三个文件:sgip.h, sgip.lib, SGIP.DLL.在动态库中导出了CSgip类,包含以下接口函数:2.1 Startint Start(char* sLocalIP, int nLocalPort, char* sPeerIP, int nPeerPort, char* sLoginName, char* sLoginPwd, int nConnType, char* sSrcNum, void (*PDeliver)(DeliverStr deliver), void (*PReport)(ReportStr report), void (*PResponse)(MTRespStr response), void (*PMTError)(MTErrorStr mterror))用于启动消息收发和处理线程池,连接监听线程,并且用提供的用户名和口令尝试登录网关。
标题/Title: SGIP API(JA V A) For SP 一. 目录二. 概述本文提供的API支持多个SP通过英斯克短信网关iDAP接入短信中心,向终端用户发送短消息。
SP 的应用程序需要遵循联通的SGIP1.1协议,调用iDAP的API实现短信发送和点播功能。
作为ISMG厂商,英斯克提供接入的Java API,本文解释了API中JA V A API的用法。
三. API文件说明提供给SP使用的API包名称为spApi.jar,它共包括以下类:SGIP_Command.class,Seq.class,MsgHead.class,Bind.class BindResp.class,Unbind.class,UnbindResp.class Submit.class,SubmitResp.class,Deliver.class,DeliverResp.class,Report.class,ReportResp.class,在使用此API 前,请正确地将包设置到CLASSPA TH环境变量中。
1.类SGIP_Command说明1.1.1构造函数1)public SGIP_Command()作用:构造函数,创建一个空的SGIP_Command对象1.1.2方法2)public SGIP_Command read(InputStream in)作用:接收任何来自网关的命令。
参数:InputStream in 输入流异常: IOException3)public int getCommandID()作用:获得读取的命令的代码返回值:命令代码4)示例:(具体示例见后面的完整程序)//接收sgip的消息…Socket so=null;OutputStream out=null;InputStream input=null;so=new Socket("192.168.0.30",8801);out=new DataOutputStream(so.getOutputStream());input = new DataInputStream(so.getInputStream());SGIP_Command sgip=new SGIP_Command();//创建一个空的SGIP_Command对象SGIP_Command tmp=null;…tmp=sgip.read(input);// 接收sgip的消息…if(sgip.getCommandID()==SGIP_Command.ID_SGIP_BIND_RESP){resp=(BindResp)tmp;//强制转换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());}…2.类Bind (该类由SGIP_Command类扩展而来)1.1.3构造函数1) public Bind(int NodeID)作用:构造函数参数:NodeID节点编号,300000+CP_ID2) public Bind(int NodeID,int LoginType,String LoginName,String LoginPassword)作用:构造函数参数:NodeID, 节点编号LoginType,登录类型。
1:SP向SMG建立的连接,用于发送命令2:SMG向SP建立的连接,用于发送命令3:SMG之间建立的连接,用于转发命令4:SMG向GNS建立的连接,用于路由表的检索和维护5:GNS向SMG建立的连接,用于路由表的更新6:主备GNS之间建立的连接,用于主备路由表的一致性11:SP与SMG以及SMG之间建立的测试连接,用于跟踪测试其它:保留LoginName,服务器端给客户端分配的登录名LoginPassword,服务器端和Login Name对应的密码1.1.4方法3) public void SetLoginType(int LoginType)作用:设置LoginType参数:int LoginType4) public void SetLoginName(String LoginName)作用:设置LoginName参数:String LoginName5)public void SetLoginPassword(String Password)作用:设置Password参数:String Password6)public int write(OutputStream out)作用:发送命令参数:OutputStream out,输出流7)public int readbody()作用:读取从SMG发送过来的BIND命令内容8) public int GetLoginType()作用:获取SMG的登录类型返回值:Int LoginType9) public String GetLoginName()作用:获取SMG的登录名返回值:String LoginName10) public String GetLoginPassword()作用:获取LoginPassword返回值:String LoginPassword11)public int getTotalLength()作用:返回Bind命令的总长度12)public int getCommandID()作用:返回Bind名令的总长度13) public int getSeqno_1()作用:返回Bind命令的序列号中前四个字节的整数,第一部分源节点编号,NodeID14) public int getSeqno_2()作用:返回Bind命令的序列号中间四个字节的整数,第二部分时间(月日时分秒)15) public int getSeqno_3()作用:返回Bind命令的序列号后四个字节的整数,第三部分序号16)示例:(具体例子见后面的完整程序)1. 发送bind…Socket so=null;OutputStream out=null;InputStream input=null;so=new Socket("192.168.0.30",8801);out=new DataOutputStream(so.getOutputStream());input = new DataInputStream(so.getInputStream());Bind command=new Bind(399000,//nodeID 3+CP_ID1, //login type"zhao",//login name"zhao");//login password;…err=command.write(out);// 发送bindif(err!=0){System.out.println("err"+err);}…2. 发送bind…Socket so=null;OutputStream out=null;InputStream input=null;so=new Socket("192.168.0.30",8801);out=new DataOutputStream(so.getOutputStream());input = new DataInputStream(so.getInputStream());Bind command=new Bind(399000//nodeID 3+CP_ID);command.SetLoginType(1);command.SetLoginName("zhao");command.SetLoginPassword("zhao");…err=command.write(out);// 发送bindif(err!=0){System.out.println("err"+err);}…3. 接收bind…Socket so=null;OutputStream out=null;InputStream input=null;so=new Socket("192.168.0.30",8801);out=new DataOutputStream(so.getOutputStream());input = new DataInputStream(so.getInputStream());SGIP_Command sgip=new SGIP_Command();//创建一个空的SGIP_Command对象SGIP_Command tmp=null;Bind bind=null;…tmp=sgip.read(input);// 接收sgip的消息…if(sgip.getCommandID()==SGIP_Command.ID_SGIP_BIND){bind =(Bind)tmp;//强制转换bind.readbody();//解包System.out.println(tmp.getSeqno_1());System.out.println(tmp.getSeqno_2());System.out.println(tmp.getSeqno_3());System.out.println(bind.GetResult());}…3.类Bind Resp(该类由SGIP_Command类扩展而来)1.1.5构造函数1) public BindResp(int NodeID)作用:构造函数参数:NodeID节点标志,300000+CP_ID2) public BindResp(int NodeID,int Result)作用:构造函数参数:NodeID, 节点标志Result, Bind执行命令是否成功。
0:执行成功其它:错误码1.1.6方法3) public void SetResult(int Result)作用:设置Result参数:int Result4)public int write(OutputStream out)作用:发送命令参数:OutputStream out,输出流5)public int readbody()作用:读取从SMG发送过来的BindResp命令内容6)public int GetResult()作用:获取SMG的登录Result结果返回值:Int Result7) public int getTotalLength()作用:返回BindResp命令的总长度8)public int getCommandID()作用:返回BindResp名令的总长度9) public int getSeqno_1()作用:返回BindResp命令的序列号中前四个字节的整数,第一部分源节点编号,NodeID10) public int getSeqno_2()作用:返回BindResp命令的序列号中间四个字节的整数,第二部分时间(月日时分秒)11) public int getSeqno_3()作用:返回BindResp命令的序列号后四个字节的整数,第三部分序号12)示例:(具体例子见后面的完整程序)1. 发送bindresp…Socket so=null;OutputStream out=null;InputStream input=null;so=new Socket("192.168.0.30",8801);out=new DataOutputStream(so.getOutputStream());input = new DataInputStream(so.getInputStream());BindResp bindresp=new BindResp(399000,//node id 3+CP_id0);//result…err= bindresp.write(out);// 发送bindrespif(err!=0){System.out.println("err"+err);}…2. 发送bindresp…Socket so=null;OutputStream out=null;InputStream input=null;so=new Socket("192.168.0.30",8801);out=new DataOutputStream(so.getOutputStream());input = new DataInputStream(so.getInputStream());BindResp bindresp=new BindResp(399000//node id 3+CP_id);…bindresp.SetResult(1);err= bindresp.write(out);// 发送bindrespif(err!=0){System.out.println("err"+err);}…3. 接收bindresp…Socket so=null;OutputStream out=null;InputStream input=null;so=new Socket("192.168.0.30",8801);out=new DataOutputStream(so.getOutputStream());input = new DataInputStream(so.getInputStream());SGIP_Command sgip=new SGIP_Command();//创建一个空的SGIP_Command对象SGIP_Command tmp=null;BindResp resp=null;…tmp=sgip.read(input);// 接收sgip的消息…if(sgip.getCommandID()==SGIP_Command.ID_SGIP_BIND_RESP) {resp=(BindResp)tmp;//强制转换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());}…4. 类Unbind (该类由SGIP_Command类扩展而来)Unbind操作由Unbind命令和Unbind_Resp应答组成。