4、XMPP协议或字节格式的通信协议制定原理和应用示例说明?
XMPP是基于可扩展标记语言(XML)的协议,它用于即时消息及在线现场探测。借助于XML易于解析和阅读的特性,能够制定一个抽象定义的具有功能完整、完善等先进性的即时通讯协议。XMPP通过TCP在网络上分片段发送XML的流协议,传输与即时通讯相关的指令。
服务器端协议的定义
if(type.equals("login")){//登陆请求
username=getXMLValue("name",msg);//解析用户名
String pwd=getXMLValue("pwd",msg);//解析密码
int state=-1;
if(daoTools.hasUser(username, pwd)){
//验证是否登陆成功
state=0;
}
//给客户机发送登陆应答消息
String resp="<msg><type>loginResp</type><state>"+state+"</state></msg>";
sendMsg(resp);
System.out.println("发送了登陆应答=="+resp);
if(state==-1){ //如果登陆失败
this.client.close();
}else{
return true;
}
}
客户端协议
//登陆服务器是否登陆成功
public boolean loginServer(String name,String pwd){
try {
String login="<msg><type>login</type><name>"//1.拼接登陆消息xml串
+name+"</name><pwd>"+pwd+"</pwd></msg>";
ous.write(login.getBytes());//2.发送登陆请求xml消息
String resXML=readString();//3.读取登陆应答
String state=getXMLValue("state",resXML);
return state.equals("0");
}catch(Exception ef){return false;}
}
XMPP是基于可扩展标记语言(XML)的协议,它用于即时消息及在线现场探测。借助于XML易于解析和阅读的特性,能够制定一个抽象定义的具有功能完整、完善等先进性的即时通讯协议。XMPP通过TCP在网络上分片段发送XML的流协议,传输与即时通讯相关的指令。
服务器端协议的定义
if(type.equals("login")){//登陆请求
username=getXMLValue("name",msg);//解析用户名
String pwd=getXMLValue("pwd",msg);//解析密码
int state=-1;
if(daoTools.hasUser(username, pwd)){
//验证是否登陆成功
state=0;
}
//给客户机发送登陆应答消息
String resp="<msg><type>loginResp</type><state>"+state+"</state></msg>";
sendMsg(resp);
System.out.println("发送了登陆应答=="+resp);
if(state==-1){ //如果登陆失败
this.client.close();
}else{
return true;
}
}
客户端协议
//登陆服务器是否登陆成功
public boolean loginServer(String name,String pwd){
try {
String login="<msg><type>login</type><name>"//1.拼接登陆消息xml串
+name+"</name><pwd>"+pwd+"</pwd></msg>";
ous.write(login.getBytes());//2.发送登陆请求xml消息
String resXML=readString();//3.读取登陆应答
String state=getXMLValue("state",resXML);
return state.equals("0");
}catch(Exception ef){return false;}
}