中国联通短信网关sgip 第三方 apijavaWord格式文档下载.docx
《中国联通短信网关sgip 第三方 apijavaWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《中国联通短信网关sgip 第三方 apijavaWord格式文档下载.docx(48页珍藏版)》请在冰豆网上搜索。
IOException
3)publicintgetCommandID()
作用:
获得读取的命令的代码
返回值:
命令代码
4)示例:
(具体示例见后面的完整程序)
//接收sgip的消息
…
Socketso=null;
OutputStreamout=null;
InputStreaminput=null;
so=newSocket("
192.168.0.30"
8801);
out=newDataOutputStream(so.getOutputStream());
input=newDataInputStream(so.getInputStream());
SGIP_Commandsgip=newSGIP_Command();
//创建一个空的SGIP_Command对象
SGIP_Commandtmp=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)publicBind(intNodeID)
构造函数
参数:
NodeID节点编号,300000+CP_ID
2)publicBind(intNodeID,intLoginType,StringLoginName,StringLoginPassword)
参数:
NodeID,节点编号
LoginType,登录类型。
1:
SP向SMG建立的连接,用于发送命令
2:
SMG向SP建立的连接,用于发送命令
3:
SMG之间建立的连接,用于转发命令
4:
SMG向GNS建立的连接,用于路由表的检索和维护
5:
GNS向SMG建立的连接,用于路由表的更新
6:
主备GNS之间建立的连接,用于主备路由表的一致性
11:
SP与SMG以及SMG之间建立的测试连接,用于跟踪测试
其它:
保留
LoginName,服务器端给客户端分配的登录名
LoginPassword,服务器端和LoginName对应的密码
1.1.4方法
3)publicvoidSetLoginType(intLoginType)
设置LoginType
intLoginType
4)publicvoidSetLoginName(StringLoginName)
设置LoginName
StringLoginName
5)publicvoidSetLoginPassword(StringPassword)
设置Password
StringPassword
6)publicintwrite(OutputStreamout)
发送命令
OutputStreamout,输出流
7)publicintreadbody()
读取从SMG发送过来的BIND命令内容
8)publicintGetLoginType()
获取SMG的登录类型
IntLoginType
9)publicStringGetLoginName()
获取SMG的登录名
StringLoginName
10)publicStringGetLoginPassword()
获取LoginPassword
StringLoginPassword
11)publicintgetTotalLength()
返回Bind命令的总长度
12)publicintgetCommandID()
返回Bind名令的总长度
13)publicintgetSeqno_1()
返回Bind命令的序列号中前四个字节的整数,第一部分源节点编号,NodeID
14)publicintgetSeqno_2()
返回Bind命令的序列号中间四个字节的整数,第二部分时间(月日时分秒)
15)publicintgetSeqno_3()
返回Bind命令的序列号后四个字节的整数, 第三部分序号
16)示例:
(具体例子见后面的完整程序)
1.发送bind
Bindcommand=newBind(399000,//nodeID3+CP_ID
1,//logintype
"
zhao"
//loginname
);
//loginpassword;
err=command.write(out);
//发送bind
if(err!
=0)
System.out.println("
err"
+err);
}
2.发送bind
Bindcommand=newBind(399000//nodeID3+CP_ID
command.SetLoginType
(1);
command.SetLoginName("
command.SetLoginPassword("
3.接收bind
Bindbind=null;
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.类BindResp(该类由SGIP_Command类扩展而来)
1.1.5构造函数
1)publicBindResp(intNodeID)
NodeID节点标志,300000+CP_ID
2)publicBindResp(intNodeID,intResult)
NodeID,节点标志
Result,Bind执行命令是否成功。
0:
执行成功
错误码
1.1.6方法
3)publicvoidSetResult(intResult)
设置Result
intResult
4)publicintwrite(OutputStreamout)
5)publicintreadbody()
读取从SMG发送过来的BindResp命令内容
6)publicintGetResult()
获取SMG的登录Result结果
IntResult
7)publicintgetTotalLength()
返回BindResp命令的总长度
8)publicintgetCommandID()
返回BindResp名令的总长度
9)publicintgetSeqno_1()
返回BindResp命令的序列号中前四个字节的整数,第一部分源节点编号,NodeID
10)publicintgetSeqno_2()
返回BindResp命令的序列号中间四个字节的整数,第二部分时间(月日时分秒)
11)publicintgetSeqno_3()
返回BindResp命令的序列号后四个字节的整数, 第三部分序号
12)示例:
1.发送bindresp
BindRespbindresp=newBindResp(399000,//nodeid3+CP_id
0);
//result
err=bindresp.write(out);
//发送bindresp
2.发送bindresp
BindRespbindresp=newBindResp(399000//nodeid3+CP_id
);
bindresp.SetResult
(1);
3.接收bindresp
BindRespresp=null;
4.类Unbind(该类由SGIP_Command类扩展而来)
Unbind操作由Unbind命令和Unbind_Resp应答组成。
通信连接建立以后,客户端如果要停止通信,需要发送Unbind命令;
服务器端收到Unbind命令后,向客户端发送Unbind_Resp相应,然后双方断开连接。
1.1.7构造函数
Unbind命令没有消息体。
1)publicUnbind(intNodeID)
1.1.8方法
2)publicintwrite(OutputStreamout)
3)publicintgetTotalLength()
返回Unbind命令的总长度
4)publicintgetCommandID()
返回Unbind名令的总长度
5)publicintgetSeqno_1()
返回Unbind命令的序列号中前四个字节的整数,第一部分源节点编号,NodeID
6)publicintgetSeqno_2()
返回Unbind命令的序列号中间四个字节的整数,第二部分时间(月日时分秒)
7)publicintgetSeqno_3()
返回Unbind命令的序列号后四个字节的整数, 第三部分序号
8)示例:
1.发送unbind
Unbindunbind=newUnbind(399000//nodeid3+CP_id
err=unbind.write(out);
//发送unbind
2.接收unbind
Unbindunbind=null;
if(sgip.getCommandID()==SGIP_Command.ID_SGIP_UNBIND)
unbind=(Unbind)tmp;
System.out.println(unbind.GetResult());
5.类UnbindResp(该类由SGIP_Command类扩展而来)
UnbindResp应答没有消息体。
1.1.9构造函数
1)publicUnbindResp(intNodeID)
1.1.10方法
返回UnbindResp命令的总长度
返回UnbindResp名令的总长度
返回UnbindResp命令的序列号中前四个字节的整数,第一部分源节点编号,NodeID
返回UnbindResp命令的序列号中间四个字节的整数,第二部分时间(月日时分秒)
返回UnbindResp命令的序列号后四个字节的整数, 第三部分序号
1.发送unbindresp
UnbindRespUnresp=newUnbindResp(399000);
//nodeid3+CP_id
Unresp.write(output);
…
2.接收unbindresp
UnbindRespunbindresp=null;
if(sgip.getCommandID()==SGIP_Command.ID_SGIP_UNBIND_RESP)
unbindresp=(UnbindResp)tmp;
System.out.println(unbindres