`
小篮子java的家
  • 浏览: 32070 次
  • 性别: 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-RTU通信协议是工业自动化领域中的一种通用工业标准协议,旨在实现控制器、RTU、SCADA系统、DCS等设备之间的信息和数据交换与传送。该协议定义了一个控制器能认识使用的消息结构...

    台达PLC通信协议

    台达PLC(Programmable Logic Controller,可编程逻辑控制器)通信协议是工业自动化领域中PLC与外部设备或系统进行数据交换的重要标准。本文将详细介绍台达PLC的通信协议,特别是它如何支持RS232通信,以及相关的...

    基于FPGA的Picoblaze核实现Modbus通信协议.pdf

    在现代工业自动化控制领域,Modbus通信协议是一种广泛使用的标准,其设计是为了实现各种设备之间的通信,尤其是自动化设备和工业控制器。随着FPGA(现场可编程门阵列)技术的发展,FPGA在工业控制领域中的应用越来越...

    通信协议入门一

    ### 通信协议基础知识详解 #### 一、引言 在当今高度互联的世界中,设备间的通信变得至关重要。本文档旨在为初学者提供关于通信...希望本文能够帮助初学者建立起对通信协议的基本认识,并为进一步深入学习打下基础。

    计算机网络5层通信协议模拟.zip

    总的来说,这个“计算机网络5层通信协议模拟”项目可能是为了让学习者通过编程实践理解网络通信的各个环节,从而提高对网络协议的深入认识。`project_1v1.0.jar`作为核心的模拟程序,结合图片、文本文件,提供了一个...

    usb 网卡的CDC通信协议

    标题与描述中的“USB网卡的CDC通信协议”是指一种在USB接口设备上实现网络功能的通信标准。CDC,即Communication Device Class,是USB设备类的一种,主要用于数据传输和通信控制。在USB网卡中,CDC被用于实现网络...

    Visual C++网络通信协议分析.rar

    总的来说,这份“Visual C++网络通信协议分析”教程将帮助开发者建立起从C++编程基础到网络通信协议实现的全面认识,涵盖了从理论到实践的各个层面,对于想要深入学习C++网络编程的人来说是一份宝贵的资源。...

    JT/T1078 部标视频通信协议

    JT/T1078 部标视频通信协议是针对道路运输车辆卫星定位系统专门制定的视频通信标准。JT/T是交通行业标准的简称,其中“JT”代表交通行业标准(Jiaotong Biaozhun),“T”是推荐性标准的标志,而“1078”是该标准的...

    一种基于分布式入侵检测系统的安全通信协议的研究.pdf

    分布式入侵检测系统安全通信协议研究的知识点: ...通过对以上知识点的深入了解,可以更好地认识分布式入侵检测系统中安全通信协议的设计和验证的重要性,以及如何通过各种技术和方法来增强系统的安全性。

    工控培训-基于C语言Modbus通信协议源代码.pdf

    在工控领域中,Modbus协议是一种广泛使用的串行通信协议,它定义了一个控制器能够认识使用的消息结构,不管它们是经过何种网络进行通信的。Modbus协议常用于电子设备之间的数据交互,例如传感器、控制器等,并且它已...

    RS-485串行数据通信协议及其应用

    ### RS-485串行数据通信协议及其应用 #### 一、引言 随着信息技术的发展,各种通信协议被广泛应用于不同的应用场景中。在众多通信协议中,RS-485因其良好的性能和广泛的适用性而备受关注。本文将详细介绍RS-485的...

    通信协议标准flexray总线的功能安全性详解文档.pdf

    "通信协议标准FlexRay总线的功能安全性详解" 通信协议标准FlexRay总线的功能安全性详解是汽车电子系统的核心组件之一,随着汽车电子系统的日益复杂,功能安全性变得越来越重要。FlexRay是一种下一代通信协议标准,...

    Modbus通信协议.rar

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

    2.4G无线通信协议程序及说明

    2.4G无线通信协议是现代无线通信技术中的一种,主要应用于短距离、高速的数据传输。这个主题涉及的是一款基于nRF24L01芯片的无线通信解决方案,该芯片被广泛用于各种低功耗、低成本的无线通信系统中。这款自组网套件...

    基于深度学习的SPI 通信协议设计,适合FPGA的初学者,也适合首次进行SPI设计的FPGA开发人员

    通过对SPI协议的理解和实践,不仅可以加深对通信协议的认识,还能够提升FPGA设计的能力。此外,合理的模块化设计策略能够确保SPI模块具备良好的通用性和可维护性,从而在多种应用场景中发挥重要作用。 通过上述内容...

    Modbus通信协议

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

    七层体系通信协议结构图.pdf

    - ESP、AH等是IPsec协议组的一部分,提供了在互联网协议(IP)通信中保证安全的方法。 - 802.x 系列标准是由IEEE定义的一系列局域网和城域网的标准,例如802.3以太网标准,802.11无线局域网标准(即WiFi)。 - VLAN...

Global site tag (gtag.js) - Google Analytics