`
小篮子java的家
  • 浏览: 31172 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

认识通信协议

阅读更多
之前的通信基础已经让我们基本了解了是怎样实现通信这个过程的,但是知道这个过程远远是不够的,若要实现一个真正的好的聊天系统,必须具备一套比较好的通信协议,
什么是通信协议:

通信协议包括通信过程的交互流程和交互消息的格式

流程从简单来说:
我们进入聊天室必须要注册,要登录,然后才能聊天。所以:
A 客户机的第一步是发送注册或登录
B 服务器的第一步就是接收登录或注册的消息 然后返回一条成功或失败的消息
C 客户机必须接收到成功的消息才能进入下一步
就是这样一步步定义好的你发送,我接收我们商量好这个程序要怎么一步一步往下走。

而通信的交互消息的格式:
则是你规定什么样的消息表示是登陆,什么样的消息是注册,是聊天。简单来说就是你给每条消息的都要标记一下。而且这种标记是唯一的,通信双方共用的。
例如:在最简单的cmd模拟客户机的聊天中,我们就是用\r\n来结束一条消息,用bye来表示通信结束。

XMPP是以XM格式定义的C/S间传送的消息的协议,优点是便于扩展
XML全称是可扩展标记语言,是标准通用标记语言,也是通信中用的最多的。
例如:
<msg>msg</msg>将内容放在两个<>之间<>里面是位标记内容的字符,后面的字符前加一斜杠表示内容的结束。
我们在通信中是自定义的简单的XMPP来实现通信的。

在这个过程主要注意几点:
1.基本的流程图要先画出来,不要盲目开写,要画出主要的步骤,进而写出那几条XML语句备用。
2.你标记的标签自己要定义好,要有唯一性,有代表性,有通用性(即在服务器用Msg表示一条XML语句的时候,在所有的地方都得用这个来标记一条XML,以免混淆)。
3.要注意从一条XML消息中提取消息的格式,是提取<标记>内容</标记>里面的东西,那么所有的标签的提取方式都是一样,所有可以定义一个统一的提取模式。
4.任何字符串数字在底层都是以字节的形式发过去的,所以从客户机或服务器上读到的不是整条整条的XML语句,所以定义一个方法完整的一条条的读取XML也很必要。


下面将注意的第三点和第四点的程序奉上:
/**
 * 读取一条完整的XML的消息
 * @return:
 * @throws IOException
 */
	public String readString() throws IOException {
		String msg = "";
		int i = ins.read();// 读取一个字节
		StringBuffer stb = new StringBuffer();
		while (true) {
			char c = (char) i;// 转化为字符
			stb.append(c);
			msg = stb.toString().trim();
			if (msg.endsWith("</msg>")) {
				break;
			}
			i = ins.read();// 继续读取
		}
		// 默认转为字符串是将每个字节转为一个字符串
		// 在此处,转换时必须用GMK编码,将读到的消息编码为中文编码格式,否则会乱码
		msg = new String(msg.getBytes("ISO-8859-1"), "GBK").trim();
		return msg;
	}



/**
 * 发送一条聊天类型的XML消息
 * @param sender:发送者
 * @param reciver:接收者
 * @param msg:内容
 */
	public void senTextChat(String sender, String reciver, String msg) {
		try{
			String textChatXml="<msg><type>chat</type>"+"<sender>"+sender+"</sender><reciver>"+reciver+"</reciver><content>"+msg
			+"</content></msg>";//拼接聊天消息XMl消息
			System.out.println("发送的聊天内容"+textChatXml);
			ous.write(textChatXml.getBytes());
		}catch(Exception ef){}
	}

分享到:
评论

相关推荐

    认识网络标准及通信协议PPT学习教案.pptx

    认识网络标准及通信协议PPT学习教案.pptx

    Modbus-RTU通信协议

    Modbus-RTU通信协议 一、Modbus 协议简介 ModBus协议定义了一个控制器能认识使用的消息结构,而不管它们是通过何种网络进行通信的,它制定了消息域的格局和内容的公共格式,描述了一个控制器请求访问其它设备的过程,...

    Modbus 通信协议详解

    此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的...

    Modbus通信协议.rar

    此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的...

    Modbus通信协议.doc

    此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的...

    MODBUS通信协议详解_irexplc.com

    此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的...

    Modbus通讯协议学习 - 认识篇

    Modbus通讯协议学习 - 认识篇,Modbus通信协议介绍,以及开发代码例程

    Modbus通信协议

     此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的...

    modbus通信协议

    Modbus通信协议 摘 要:工业控制已从单机控制走向集中监控、集散控制,如今已进入网络时代,工业控制器连网也为网络管理提供了方便。Modbus就是工业控制器的网络协议中的一种。关键词:Modbus协议;串行通信;LRC...

    C++网络编程实例文件之第二章 认识Windows编程模型

    第二章 认识Windows编程模型 第三章 网络基本应用在VC++中的实现 第四章 串口通信及其实例 第五章 应用层协议及编程实例 第六章 传输层协议及编程实例 第七章 网络层协议和数据链路层 第八章 Internet通信原理以及...

    认识局域网

    局域网的概念、局域网的结构,局域网的通信协议,以太网技术及组网技术

    3G通信知识概述

    介绍了3G的通信协议,对刚进入这行业的人对3G的一个初步认识.

    停止等待协议的编程模拟

    《计算机网络与通信》课程讲述计算机网络的原理,尤其是TCP/IP协议栈的原理和应用,是一门理论性、应用性、实践性都比较强的课程。《计算机网络与通信实习》是学习完《计算机网络与通信》课程后进行的一次全面的综合...

    通信与网络中的无线网络协议标准IEEE802.11b详解

    例如,网络中一个微机用户和一个大型主机的操作员进行通信,由于这两个数据终端所用字符集不同,因此操作员所输入的命令彼此不认识。为了能进行通信,规定每个终端都要将各自字符集中的字符先变换为标准字符集的字符...

    计算机网络技术-认识因特网.pptx

    5.1.1 什么是广域网 广域网(WAN),就是将远距离的的网络和资源,通过互联技术连接起来的大型计算机通信网络。 广域网是由节点交换机和连接这些交换机的链路组成,交换机负责分组交换存储转发的功能,节点之间实现...

    modbus协议中文版

    Modbus 协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容...

    通信与网络中的Web程序员开发基础:透彻认识Http协议

    Http协议也是我们*的程序员所必须掌握的。闲话少说,简单介绍下Http协议。  Http 为超文件传输协议(HTTP,HyperText Transfer Protocol),是互联网上的一种网络协议。  HTTP是一个客户端和服务器端请求(request)...

    MODBUS通讯协议中文版

    Modbus 协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容...

    认识计算机网络单元整体教学设计表单.docx

    指向学科核心内容、学科思想方法、学科核心素养的落实,设计单元学习目标,明确重点和难点) 计算机网络是多台地理上分散的独立计算机系统遵循约定的通信协议,通过传输介质和网络设备互相连接起来,实现数据通信、...

Global site tag (gtag.js) - Google Analytics