今日学习了字节流通信协议,知道了它的基本原理:任何的信息在网线中都是以字节的形式传递的,要解析这些字节,把它们“恢复原貌”展现在用户面前,于是就有了通信协议,而字节流通信协议则是其中的一种形式。
字节流通信协议的形式:
总长度
|
信息类型
|
人名的长度
|
人名内容
|
信息的长度
|
int
|
byte
|
byte
|
int
|
int
|
|
|
|
|
|
总长度
|
信息类型
|
文件名长度
|
文件名
|
文件内容
|
int
|
byte
|
byte
|
int
|
int
|
还可以把这些协议定得很长很长,协议的形式是自己定的,就有点像“中文解释运动”。比如在说明一件事的时候,你要先说那是一件什么事,那件事怎么样,然后再说明有些什么其他的特点,当然这些特点需要一一细说,然后剩下的就只有“总而言之”了。
换成了在网线里面,“中文解释运动”的语言全部换成byte了,而用一连串的byte值,也不知道怎么说明那些信息有什么特点才好,起码一堆的byte值你用肉眼是分辨不出消息有什么特点的,只好从信息的长度下手了(大概在网线里只剩下这么一个特点了吧!= =+),首先用一个int描述人家(指发送的信息)有多长,然后用一个byte值描述人家是什么类型的人物,然后如果消息是要发送的信息的话,就先把发送的人名的长度用一个byte存起来,然后用一堆的byte来把发送的人们存储起来,这里我是这么想的:就感觉是把一个词先存到前面了,后面一堆话来解释前面的词是什么,有什么含义。然后把另一个词存入,然后一大堆的话来解释它……如此往复地进行下去,到最后剩下的东西“总而言之”一下就OK了。协议的最后不是把消息的内容全部都用一个“巨型”byte存储了吗?而在这样巨型存储之前也没有把消息的长度先用一个byte存储,因为总特点-分特点*n=“寥寥无几的特点的总而言之”。就比如说上面的发送信息的那个例子:总长度=4(总长度所占的int的位数)+1(信息类型所占byte的一个位)+1(人名的长度所占的一个byte)+NameLength(人名的长度)+MessageLength(发送的信息长度),就是这样了。
特别注意:发送文件的时候,一定要先把文件读入字节流中(吾辈怎么能忘了这么关键的一步呢!!!),要不然就会出现我这种bug状况,文件发不过去。总长度一定不要搞得乱七八糟,不然很会发生紊乱的,客户端的协议要和服务器的一致。这样才能把文件发送过去。**说:“黑客就是要高精度地解析字节。”好吧!注定我成不了黑客,那是些外星人,大概他们的语言可以表现成为byte。一黑客说:“10 1 1 2 6”,另一黑客答:“12 1 1 1 9”……= =+(老大,二进制存储啊!你别装作不知道计算机只认识0、1啊!= =+)
代码就不共享了,现在还存在bug,能够发送信息过去,但是仅限于我在程序中预定好的。虽然我在生活中比较强势,但是我不希望代码跟我一样强势啊!每次只发送“xyz”我会很郁闷的……继续修改代码去,我要提前适应程序猿的生活。
<!--EndFragment-->
分享到:
相关推荐
在处理网络通信时,数据通常以字节流的形式在网络间传输,因此了解如何在Lua中进行字节流的操作至关重要。本文将深入探讨"lua字节流操作"这一主题,以及它在“网络消息解包压包”和“字节组装”中的应用。 首先,让...
在IT行业中,网络通信是计算机系统之间交换信息的基础。这篇名为“网络通信基础第五式——实现自定义字节流协议的KTM”的...通过阅读博客文章和相关源码,我们可以学习到如何为特定应用设计高效、可靠的网络通信协议。
结构化数据通常指的是有明确格式和规则的数据,如XML或JSON,而字节流协议则是以二进制形式传输数据的协议,如TCP/IP或串行通信协议。 首先,我们来理解结构化数据协议。这种协议允许数据以预定义的结构表示,使得...
在IT行业中,网络通信往往涉及数据的传输,而数据传输的核心就是字节流。Packet字节流解析工具是网络编程中的重要辅助工具,主要用于分析和理解网络数据包的结构和内容。本文将深入探讨JAVA语言中Packet字节流解析...
维博Modbus-RTU通信协议 维博Modbus-RTU通信协议是工业自动化领域中的一种通用工业标准协议,旨在实现控制器、RTU、SCADA系统、DCS等设备之间的信息和数据交换与传送。该协议定义了一个控制器能认识使用的消息结构...
在Java IO中,主要有两种流的概念:字符流(Character Stream)和字节流(Byte Stream)。它们是处理数据的基本方式,适用于不同场景。 字符流主要处理基于字符的数据,如文本文件,它包括Reader和Writer两个抽象...
在串口配置方面,通信协议设定了硬件流控制为RTS/CTS,数据位为8位,无奇偶校验,停止位为1位,波特率为9600bps。这样的设置旨在提供稳定且高效的通信环境。 指令格式是通信协议的核心部分。上位机发送数据包包含...
### 通信协议基础知识详解 #### 一、通信协议概念理解 通信协议是在计算机网络中用于指导数据交换的一套规则或标准。它定义了设备间如何通信的细节,包括数据的格式、顺序以及控制数据流的方法等。理解通信协议的...
在本例中,程序会向MCU发送16进制数据,这可能涉及到将16进制数值转换为字节流的过程。 描述中提到的"16进制的数据"可能是指程序通过串口向MCU发送的指令或数据,这些数据通常以二进制形式传输,但在编程和调试时,...
本文将深入探讨如何使用C#语言操作字节流以及在Socket通信中的应用。 首先,了解Socket的基本概念。Socket是网络通信中的一个端点,它允许应用程序通过网络发送和接收数据。在C#中,我们可以创建Socket实例,指定...
首先,TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在Qt中,我们可以使用`QTcpSocket`类来处理TCP连接。`QTcpSocket`提供了打开、关闭连接、发送和接收数据的方法。例如,`...
在IT行业中,网络协议是设备间通信的基础,而字节流是这些通信中的基本单位。"按网络协议对字节流进行压缩的方法"这一主题涵盖了网络通信、数据压缩技术以及如何将两者结合以提高传输效率的关键知识。下面,我们将...
- **TCP(传输控制协议)**:一种面向连接的、可靠的、基于字节流的传输层通信协议。 - **UDP(用户数据报协议)**:一种无连接的协议,用于网络中的数据传输。 - **PPP(点到点通信协议)**:用于在直接连接的两个...
标题 "34_dubbo都支持哪些通信协议以及序列化协议?" 暗示了我们即将探讨的是关于Dubbo框架在网络通信和数据序列化方面的内容。Dubbo是阿里巴巴开源的一个高性能、轻量级的Java服务治理框架,它为分布式应用提供了...
本文主要探讨了一种用于多处理器仪器设备的内部通信接口(ICI)的解决方案,该方案基于字节流通信,旨在简化开发过程,提高模块标准化程度和开发效率。 文章首先介绍了通信协议的分层结构,采用的是增强型协议三层...
《Kobuki通信协议详解》 Kobuki通信协议是连接Kobuki驱动程序与机器人之间的一种通信规范,它确保了指令的准确传递和反馈数据的可靠接收。该协议基于串口通信,通过将指令和反馈数据转换为字节流(bytestream)的方式...
智能家居通信协议采用的数据格式是KLV(Key Length Value)形式的字节流。所有多字节数据,采取高位在前规则。协议遇到大版本必须强制升级固件。 三、环境变量 智能家居通信协议中,环境变量是非常重要的,它负责...
【BMS大厂通信协议详解】 BMS(Battery Management System),即电池管理系统,是用于监控和管理电池组的重要设备,特别是在新能源汽车、储能系统等领域应用广泛。为了实现BMS与保护板之间的有效通信,需要遵循特定...
3. **TCP编程**:TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在Visual C++中,使用TCP套接字时,需要先建立连接,然后进行数据的双向传输,最后关闭连接。 4. **UDP编程**:UDP...
在设计一个基于通信协议的简单聊天对话系统时,我们需要考虑多个关键知识点,这些知识点涵盖了网络通信、协议解析、数据传输以及用户界面等多个方面。以下是一些核心的技术要点: 1. **网络通信基础**:首先,我们...