11位字节协议如何实现字节传输的可靠性

作者&投稿:巴夏 (若有异议请与网页底部的电邮联系)
ip没有可靠性tcp有较高的可靠性,tcp、ip协议时怎样实现可靠性的呢~

tcp提供了面向连接的可靠交付的功能。面向连接表示各数据包不是相互独立的,一个连接中传输的包按字节编号实现有序,通过超时重传实现可靠性,还实现了一些如流量控制及拥塞控制来提高网络性能,增加传输可靠性,当然也不能保证绝对的可靠(比如网络故障时),准确的说应该是可靠交付或无法可靠交付时得到通知

.采用面向连接的三次握手实现可靠对象传输。
2.使用数据窗口机制协商队列大小实现数据队列传输。
3.通过序列化应答和必要时重发数据包,TCP 为应用程序提供了可靠的传输流和虚拟连接服务。
下面是找到的长篇大论中比较好的文章:
一、TCP协议
1、TCP 通过以下方式提供可靠性:
◆ 应用程序分割为TCP认为最合适发送的数据块。由TCP传递给IP的信息单位叫做报文段。
◆ 当TCP发出一个报文段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能记时收到一个确认,它 就重发这个报文段。
◆ 当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常延迟几分之一秒。
◆ TCP将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化如果收到报文段的检验和有差错,TCP将丢弃这个报文段和不确认收到这个报文段。
◆ 既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能失序,因此TCP报文段的到达也可能失序。如果必要,TCP将对收到的数据进行排序,将收到的数据以正确的顺序交给应用层。
◆ 既然IP数据报会发生重复,TCP连接端必须丢弃重复的数据。
◆ TCP还能提供流量控制,TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。
另外,TCP对字节流的内容不作任何解释。
2、TCP首部:
TCP数据被封装在一个IP数据报中,格式如下:
IP首部20 TCP首部20 TCP首部
TCP首部格式如下:
16位源端口号 16位目的端口号
32位序号
32位确认序号
4位首部长度 保留6位 U
R
G A
C
K P
S
H R
S
T S
Y
N F
I
N 16位窗口大小
16位检验和 16位紧急指针
选项
数据
说明:
(1)每个TCP段都包括源端和目的端的端口号,用于寻找发送端和接收端的应用进程。这两个值加上IP首部的源端IP地址和目的端IP地址唯一确定一个TCP连接。
(2)序号用来标识从TCP发送端向接收端发送的数据字节流,它表示在这个报文段中的第一个数据字节。如果将字节流看作在两个应用程序间的单向流动,则TCP用序号对每个字节进行计数。
(3)当建立一个新连接时,SYN标志变1。序号字段包含由这个主机选择的该连接的初始序号ISN,该主机要发送数据的第一个字节的序号为这个ISN加1,因为SYN标志使用了一个序号。
(4)既然每个被传输的字节都被计数,确认序号包含发送确认的一端所期望收到的下一个序号。因此,确认序号应当时上次已成功收到数据字节序号加1。只有ACK标志为1时确认序号字段才有效。
(5)发送ACK无需任何代价,因为32位的确认序号字段和ACK标志一样,总是TCP首部的一部分。因此一旦一个连接建立起来,这个字段总是被设置,ACK标志也总是被设置为1。
(6)TCP为应用层提供全双工的服务。因此,连接的每一端必须保持每个方向上的传输数据序号。
(7)TCP可以表述为一个没有选择确认或否认的华东窗口协议。因此TCP首部中的确认序号表示发送方已成功收到字节,但还不包含确认序号所指的字节。当前还无法对数据流中选定的部分进行确认。
(8)首部长度需要设置,因为任选字段的长度是可变的。TCP首部最多60个字节。
(9)6个标志位中的多个可同时设置为1
◆ URG-紧急指针有效
◆ ACK-确认序号有效
◆ PSH-接收方应尽快将这个报文段交给应用层
◆ RST-重建连接
◆ SYN-同步序号用来发起一个连接
◆ FIN-发送端完成发送任务
(10)TCP的流量控制由连接的每一端通过声明的窗口大小来提供。窗口大小为字节数,起始于确认序号字段指明的值,这个值是接收端期望接收的字节数。窗口大小是一个16为的字段,因而窗口大小最大为65535字节。
(11)检验和覆盖整个TCP报文端:TCP首部和TCP数据。这是一个强制性的字段,一定是由发送端计算和存储,并由接收端进行验证。TCP检验和的计算和UDP首部检验和的计算一样,也使用伪首部。
(12)紧急指针是一个正的偏移量,黄蓉序号字段中的值相加表示紧急数据最后一个字节的序号。TCP的紧急方式是发送端向另一端发送紧急数据的一种方式。
(13)最常见的可选字段是最长报文大小MMS,每个连接方通常都在通信的第一个报文段中指明这个选项。它指明本端所能接收的最大长度的报文段。
二、TCP连接的建立和终止
1、建立连接协议
(1) 请求端发送一个SYN段指明客户打算连接的服务器的端口,隐疾初始序号(ISN),这个SYN报文段为报文段1。
(2) 服务器端发回包含服务器的初始序号的SYN报文段(报文段2)作为应答。同时将确认序号设置为客户的ISN加1以对客户的SYN报文段进行确认。一个SYN将占用一个序号。
(3) 客户必须将确认序号设置为服务器的ISN加1以对服务器的SYN报文段进行确认(报文段3)。
这3个报文段完成连接的建立,称为三次握手。发送第一个SYN的一端将执行主动打开,接收这个SYN并发回下一个SYN的另一端执行被动打开。
2、连接终止协议
由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。
(1) TCP客户端发送一个FIN,用来关闭客户到服务器的数据传送(报文段4)。
(2) 服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1(报文段5)。和SYN一样,一个FIN将占用一个序号。
(3) 服务器关闭客户端的连接,发送一个FIN给客户端(报文段6)。
(4) 客户段发回确认,并将确认序号设置为收到序号加1(报文段7)。
3、连接建立的超时
如果与服务器无法建立连接,客户端就会三次向服务器发送连接请求。在规定的时间内服务器未应答,则连接失败。
4、最大报文段长度MSS
最大报文段长度表示TCP传往另一端的最大块数据的长度。当一个连接建立时,连接的双方都要通告各自的MSS。
一般,如果没有分段发生,MSS还是越大越好。报文段越大允许每个报文段传送的数据越多,相对IP和TCP首部有更高的网络利用率。当TCP发送一个 SYN时,它能将MSS值设置为外出接口的MTU长度减去IP首部和TCP首部长度。对于以太网,MSS值可达1460。
如果目的地址为非本地的,MSS值通常默认为536,是否本地主要通过网络号区分。MSS让主机限制另一端发送数据报的长度,加上主机也能控制它发送数据报的长度,这将使以较小MTU连接到一个网络上的主机避免分段。
5、 TCP的半关闭
TCP提供了连接的一端在结束它的发送后还能接收来自另一端数据的能力,这就是TCP的半关闭。
客户端发送FIN,另一端发送对这个FIN的ACK报文段。当收到半关闭的一端在完成它的数据传送后,才发送FIN关闭这个方向的连接,客户端再对这个FIN确认,这个连接才彻底关闭。
6、2MSL连接
TIME_WAIT状态也称为2MSL等待状态。每个TCP必须选择一个报文段最大生存时间(MSL)。它是任何报文段被丢弃前在网络的最长时间。
处理原则:当TCP执行一个主动关闭,并发回最后一个ACK,该连接必须在TIME_WAIT状态停留的时间为2MSL。这样可以让TCP再次发送最后的ACK以避免这个ACK丢失(另一端超时并重发最后的FIN)。这种2MSL等待的另一个结果是这个TCP连接在2MSL等待期间,定义这个连接的插口不能被使用。

自定义通讯协议,在应用层定义一些可靠的协议,比如检测包的顺序,重复包等问题,如果没有收到对方的ACK,重新发包

UDP没有DelieveryGaruantee,也没有顺序保证,所以如果你要求你的数据发送与接受既要高效,又要保证有序,收包确认等,你就需要在UDP协议上构建自己的协议。比如RTCP,RTP协议就是在UPD协议之上专门为H.323协议簇上的IP电话设计的一种介于传输层和应用层之间的协议。

UDP构建可靠数据传输

简单来讲,要使用UDP来构建可靠的面向连接的数据传输,就要实现类似于TCP协议的超时重传,有序接受,应答确认,滑动窗口流量控制等机制,等于说要在传输层的上一层(或者直接在应用层)实现TCP协议的可靠数据传输机制,比如使用UDP数据包+序列号,UDP数据包+时间戳等方法,在服务器端进行应答确认机制,这样就会保证不可靠的UDP协议进行可靠的数据传输,不过这好像也是一个难题!

(一)可靠性协议

(可靠性协议这部分协议参考论文《基于UDP的可靠文件传输协议设计与实现》)

首先来设计最为重要的可靠性。在UDP增加报头前,我们先定义8个字节的协议头,为2个字节的数据包标识,2个字节的发送序号,2个字节的文件指针定位和2个字节的数据包中数据大小信息。数据包标志指明该数据包为文件数据包、确认包或者其它控制包,发送序号用来指明数据包的顺序信息,指针定位字节数据用来指明该数据包中数据被填写到文件的哪个位置,最后的大小信息也是用来向文件中读写数据时使用。

协议保证可靠性的大致流程是(先只考虑单对单情况下的单方向发送):

首先发送端发送一个文件信息报文,这个报文就是最简单的UDP报文,但是里面的信息很重要,记录着文件的大小,被分隔成的报文数,文件序号。发完这个信息包,发送端阻塞,等待接收端的回复报文才能继续。文件信息包被接收端接受以后使用确认机制确定是否接受这个文件,并把决定回馈给发送端。此时,发送端如果收到的是“确定接受”的结果,将会把这个文件的整组数据报全部发送过去,这里我们并不像最传统的可靠传输协议TCP协议一样,对于每个每个报文都要确认接受完才会对下一个报文进行处理,太没效率,遵守本协议的接受端在接受这组报文的时候将遵守错序重排机制,来对收到的这组报文进行按序号排序,期间可能序号不联系不过没关系,接受过程只要保证序号从小到大即可。发送端发完所有报文延迟一点时间再发送一个结束报文,延迟时间是为了减少结束报文比数据报文还早被接受的情况,当然即使这种情况出现也不会破坏可靠性,只不过在在结束报文之后的数据报文会被当做丢失的包被要求重发,降低效率。接受端接受到结束报文后按照一开始的文件信息包的信息和序列号做对比,把没有的序列号的报文的信息传回给发送端,要求重新发送这些报文。发送端接到信息以后重发丢失的数据包。直到接收端拿到的报文和信息匹配,接受端就可以发回一个“接受完毕”的报文。这样发送端接受端再进行下一次文件传输。

在这个流程中有几个重要的机制保证流程的可靠性:

确认机制

本系统接收方并非对任意数据包都进行确认,在下面的一些情况下会使用到该确认机制:

1、接收方收到文件信息包时,要对是否接收进行确认。

2、接收方收到结束包时要进行确认,然后检测该分组内数据包是否丢失。

3、接收方收到全部数据包时要进行确认,以便结束文件的传输过程。

重发机制

协议设计了两种重发机制:一种是自动重发机制,另一种是请求重发机制。自动重发机制是消息发送时启动一个定时器,如果在规定的一段时间内未收到接收方的确认消息,则断定这段时间内发送的报文已经丢失并进行重发。请求重发机制则是在接收方收到发送方发来的传输结束消息后,在接收方对收到的所有报文序号进行检测,如果发现某些序号的报文缺失,接收方主动请求重发缺失的序号对应的报文。具体实现设计如下所述:

1、自动重发机制

通信发送方和接收方都维持一个自动重发定时器,在通信开始前会检查自动重发定时器是否启动,如果没有启动,就会启动这个定时器。如果在一个特定时间间隔内发送方没有收到来自接收方的任何确认消息,或者接收方没有到发送方的通道检测报文。这时系统会将这个定时器归零,并将这段时间内发送的消息重发一遍,把记录重发次数变量加1。如果过在规定的时间内依然没有收到对方的任何确认信息,则重新将定时器归0,执行重发操作并将重发次数加1,如此循环,在重发次数未达到指定数据之前,直到收到对方的一个确认消息,然后停止自动重发定时器,将重发次数清0;否则证明传输路径出现问题。

2、请求重发机制

接收方记录着已收到数据包的序列以及未收到的数据包序列。当接收到分组结束包时,接收方就会启动定时器,检索该分组内未收到的数据包,如果数据包已全部接收到,则关闭定时器,进行下一个分组的传输。否则查找丢失数据包的序号并依次发送请求重发数据包,在规定时间内接收发送方重发的数据包,然后定时器归0,重新检索未收到数据包,并按上述情况做出反应,如此循环往复,直到最终完成该分组的传输过程。

协议的错序重排机制

协议头结构中有2个字节的序号字段,当发送端接收到对端发送的确认接收报文后,开始读取文件数据块内容写入协议数据区,为每一个数据块编制一个序号,序号的最大值要求与接收端维护的一个为了实现错序重排机制的动态表长度一致。序号排满后,后面的报文会在下一个分组中进行发送。这时发送端会根据当前分组下读取的数据块大小及起始位置填写协议头中的字段,最后将数据包发送出去。接收端起初会生成一个动态数组用来存储接收到的数据包序号,当接收端准备好接收文件后将数组的每一位置为无效,每收到一个数据包,就会读取其序号字段值并将数组相应位置为有效,然后将数据区的内容写入文件。这样即使由于网络状况导致数据包不能按序到达,接收端也能根据数据包位置字段和大小字段将数据写入文件。序号字段在收到结束包后用于检索动态数组启动请求重传机制。

(二)多用户并发访问和文件下载协议

前面我们说UDP是面向无连接的,这样一来就可以打破一对一连接的状态,使得一台服务器可以向多个客户端传输相同信息。

所以我们如何利用它来实现多用户并发访问和文件下载呢?本协议中,首先发送方会开辟一个空间,这个空间储存着发送端有的各个文件的序号和可能出现的接收方希望得到某个序号文件的ip地址端口号等信息。在发送端开始运作之后,就会有一个进程一直在监听是否有对某个文件的请求,如果有就把请求方的信息储存在这个空间里。假如请求某个文件的ip+端口只有一个,那么这个协议是没有实质性作用。然而一旦短时间内有大量的ip请求这个文件,那么在某次我们上边设计的可靠性协议的传输过程中,就可以好好利用这个时间差,下一段具体说明。除此之外还有一个很人性化的设计可以加入到这里,就是可以在监听到某次请求时向对方返回目前的服务器状况,比如对应文件的等待ip有多少,这样让接受方决定状况比较拥堵时候是否等一下再请求。

具体来说,我们每次发送文件信息报文时,在多个接收方请求的情况下将是一组一组发送的,把目前在等待空间的所有(或者限制一个上限个数10个)接收方都发送文件信息报文。收到的同意接受报文后把这些同意接受的信息记录下来,将文件报文组和发送完毕的报文同时发送给这些接受方,再把各个接收方返回的缺失报文记录下来,再重传。

非常重要的一点是,其实对于接受方来说在文件传输过程中并没有什么多余的动作,它要做的和只有他一个接收方的情况没有任何的不同,可能只是整个过程的流畅性会受影响。需要变动的主要是发送方,它在做好可靠性协议要求的几点之外,还要做好一系列的记录操作,保证整个过程不会乱套。

(三)针对下载的文件大小不应有限制设计的协议

回答问题时候其实就把思路讲完全了,对于一份任意大小的文件,我们都是可以通过切分成固定大小的N个报文然后将他们组成一组发送的。在每次组报文传输过程之前传输的文件信息报文也是这个过程之一,它记录了本次文件的大小,被分成的报文数量,每个报文的大小(通常确定的大小)。这种方法下,不管多大的文件都视作一定数量的报文,只要发送方和接受方在信息报文中确定了信息,文件大小就没有限制

所以,利用上边设计的可靠性协议、多用户并发访问和文件下载协议和针对下载的文件大小不应有限制设计的协议,我们就能实现一个可靠的文件传输协议,并满足以下要求:1)下层使用不可靠的UDP服务(即使用数据报方式的套接字);2)能够支持多用户并发访问和文件下载;3)下载的文件大小不应有限制。


字节、位、bit、byte、KB、B、字符之间有什么关系?
位(b,bit)字节(Byte,B)字的区别位小写b,指bit"位"。二进制数系统中,每个0或1就是一个位(bit),位是内存的最小单位。字节大写B指Byte字节。字节(Byte):通常将可表示常用英文字符8位二进制称为一字节。一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。符号:英文标点符号占一个...

位,字节和地址都是什么意思
地址字节简单来说是指地址是由多少字节组成。在计算机网络中存在多种地址,例如IP地址,MAC地址以及物理地址,一般来说不同地址字节数是不相同的。地址字节与很多因素,一般可以分为以下几类:地址的用途、有关应用协议版本或系统版本、硬件设计水平。字节是二进制数据的单位。一个字节通常8位长。但是,...

1字节等于多少位
1字节等于8位。在计算机科学中,字节和位是两个重要的单位,用于衡量数据的存储和传输量。它们之间的关系是:1. 字节与位的定义:字节是计算机存储的基本单位,它由连续的8个位组成。位是计算机处理的最小数据单元,可以是0或1,这也是计算机二进制系统的基本特征。2. 字节与位的关系:因为计算机采用二...

1字节有多少位?
1个字节是8位。

一字节是多少位
一字节等于8位。字节(Byte)是计算机中的计量单位之一,通常用于表示数据存储或传输容量。一个字节等于8个二进制位(bit),即8个0或1的组合,可以表示256种不同的状态。字节的大小可以根据需要进行扩展,例如千字节(KB),兆字节(MB),吉字节(GB)和太字节(TB)等。字节在计算机中的作用非常...

什么是位、字节、字?他们之间的关系如何?
\\n \\n \\n 位(bit):位是计算机中存储数据的最小单位,指二进制数中的一个数位,其值为“0”或“1”。字节(byte):字节是计算机存储容量的基本单位,一个字节由8位二进制数组成,字节记为B。字:字是指计算机数据处理时一次存取、加工、运算和传送的数据长度。一个字的二进制位数称为...

1字节等于多少位,是多少位?
1字=2字节 1字节=8位 1字=2*8=16位 单位如下:字(word)字节(byte)位(bit)

IP协议及IP数据包详解
(3)数据包的分片和重组。(二)IP数据包详解:(1)0100 = Version : 4(表示使用的 IPv4协议),对等层之间要使用同一种IP协议(IPv4协议);(2)0101 = Header Length : 20Bytes(5) 首部长度占4 bit ,可表示的最大数值为15个单位(1111),一个单位一个字节,最大为60字节;(3)服务...

1个字节是多少位?
1Byte=8bit)。八位二进制数最小为00000000,最大为11111111;通常1个字节可以存入一个ASCII码,2个字节可以存放一个汉字国标码。3、字(word)。 计算机进行数据处理时,一次存取、加工和传送的数据长度称为字(word)。一个字通常由一个或多个(一般是字节的整数位)字节构成。

1ipv4地址与单环冗余网络1ip地址的表示方法网络地址主机部分网络...
IPv4中用四个字节表示一个IP地址,每个字节按照十进制表示为0~255。点分十进制就是用4个从0~255的数字,来表示一个IP地址。如192.168.1.1。2、网络字节序在网络传输中,TCP\/IP协议在保存IP地址这个32位二进制数时,协议规定采用在低位存储地址中包含数据的高位字节的存储顺序(大头),这种顺序格式...

安国市19239289017: modbus rtu通讯协议中每字节有1个起始位,8个数据位, 1个奇偶校验位,1个停止位,这样一字节就有11位, -
卢牵尼莫: 数据是8位没错,11位是串行通讯的协议规定,用11个位的时间传送8位,多出的3位是协议开销.就像你开车拉8吨的货物,但车子本身还是有自重,加起来一车货共有11吨,但只拉了8吨,11位是毛重,8位是净重,呵呵,开玩笑的. 算时间的话,应该按照11位算,但计算数据的通讯量的时候,则按8位算,或者通常都说1个字节.前面讲的协议开销是232协议的开销,另外,MODBUS协议也是有开销的,比如地址域、校验域,都需要额外的时间进行传输.

安国市19239289017: 字节计数法适用于什么传输 -
卢牵尼莫: 1、字节流是通过二进制进行传输,比如0101010001之类的.2、用户数据传输分为两种协议:udp、tcp.3、UDP协议不建立连接直接传输,每次最大数据64k,打包形式.4、TCP协议是经过三次握手协议(先连接),安全,数据大小不限,传输速度慢.

安国市19239289017: PC串口采用异步通信方式,传送一个字节时,须附加起始位及停止位等.若1帧信息共有11位而传送波特率为9600 -
卢牵尼莫: 我印象中PC的UART口的帧长度是不可设的,数据段固定是8位.即使能设也超不过8位(一般是5~8位可设).如果有效比特流总共11位的话,只能分两帧传输加填充.如果采用1起始1停止无奇偶校验的格式,那么需要传递两个10位帧,也就是20/9600 = 2.083ms.这个4.7ms的确是匪夷所思.

安国市19239289017: modbus协议传输方式假如RTU模式传输数据为0x102写成ascii模式怎么写? -
卢牵尼莫: 就是数据转化为ASCII码啊,例如某个16位数据原本要传输0x0102,在RTU模式下发送的是 01 02,在ASCII模式下发送的就是 30 31 30 32.另外你要注意,ASCII模式的帧格式与RTU的帧格式有较大区别,帧头要加 ':',错误校验算法为LRC,帧尾要加 CR LF.

安国市19239289017: tcp的数据收发过程是通过什么方式实现的 -
卢牵尼莫: TCP协议支持数据报传输可靠性的主要方法是确认、超时、重传、校验和以及流量控制.(1)校验和——每个TCP报文段都包括检验和字段,校验和用来检查报文段是否出现传输错误,如果报文段出现传输错误,TCP检查出错就丢弃该报文段.(2)确认——接收端检查报文是否出错,发现出错时就丢弃,不发确认;而发送端TCP就通过检查接收端的确认,判断发送的报文段是否已经正确到达目的地.(3)超时——发送端根据发出的报文段在超时规定的时间内是否收到确认,从而来判断该报文段是否丢失或传输出错.TCP使用了4种计时器:重传计时器、坚持计时器、保持计时器和时间等待计时器来保证了传输的可靠性.

安国市19239289017: Modbus通讯协议的传输方式 -
卢牵尼莫: 在ModBus系统中有2种传输模式可选择.这2种传输模式与从机PC通信的能力是同等的.选择时应视所用ModBus主机而定,每个ModBus系统只能使用一种模式,不允许2种模式混用.一种模式是ASCII(美国信息交换码),另一种模式是RTU...

安国市19239289017: ModBuS协议校验码问题 -
卢牵尼莫: 1,首先说的奇偶校验和CRC校验是两个不同层次校验,奇偶校验是为了确认每个字节传输的正确性,CRC校验是确认modbus数据包传输的正确性 2,数据传输数据位是8bit,但是并不是说互相通信只传输8个字节数据位,或者说并不是以8bit为单位来传输 3,接收端接收后临时存储后由CPU进行解码

安国市19239289017: 如何实现TCP和UDP传输 -
卢牵尼莫: 首先我们来看一下什么是TCP和UDP.什么是TCP?TCP:Transmission Control Protocol 传输控制协议TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议,由IETF的RFC 793说明(specified).在简...

安国市19239289017: Modbus通讯协议中的ASCII传输,每个字节都作为一个ASCII码(两个十六进制)发送的 -
卢牵尼莫: 实际上在ASCII模式下,所有的通讯数据都是ASCII码,包括帧结束用的也是ASCII码里的回车、换行. 每个字节都作为一个ASCII码,这里说的有点歧义.应该说是两个ASCII码.比如要传送一个字节,字节内容是0x23,则实际传送的是两个ASCII码,即字符2(0x32)和字符3(0x33). 这种编码的好处是所有的字符都是可读的,不会出现0x00、0xFF这种不可读的,方便调试.缺点是效率低,把一个字节拆成两个ASCII码,数据量变大了.

安国市19239289017: 求助关于Modbus协议编程问题~~~急急!! -
卢牵尼莫: C#的行吗?可以的话我再给你大概的代码 拿读数据做例子,其他的功能重要改掉03功能码就行 先组成命令的byte数组 byte[] Dp = new byte[8]; byte[] DpC = new byte[6]; Dp[0] = 0x01;//这是表的地址,假定是01 Dp[1] = 0x03;//这是功能码,03是...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网