Tcp 如何";“好的”;消息看起来像什么?
我有一个向服务器发送数据的设备Tcp 如何";“好的”;消息看起来像什么?,tcp,modbus,Tcp,Modbus,我有一个向服务器发送数据的设备 Data [ Client ] == > [ Server ] 在服务器上进行验证后,我想返回一条消息: OK [ Client ] < == [ Server ] OK [客户端]服务器中的“数据”定义也需要一些协议,以便接收方能够知道哪些字节构成了数据(何时停止读取) 两种常见的协议类型是 长度分隔的块。每条消息都以16或32位长度的前缀开头。接下来就是这么多字节。长度需要按照定义的字节顺序
Data
[ Client ] == > [ Server ]
在服务器上进行验证后,我想返回一条消息:
OK
[ Client ] < == [ Server ]
OK
[客户端]<==[服务器]
是否有标准的“确定”消息要返回?还有“错误”信息?看起来怎么样?(例如“:0011”,“:110F”)您必须设计一个应用程序级协议。TCP是一个字节流,因此,即使是客户端->服务器中的“数据”定义也需要一些协议,以便接收方能够知道哪些字节构成了数据(何时停止读取) 两种常见的协议类型是
- 长度分隔的块。每条消息都以16或32位长度的前缀开头。接下来就是这么多字节。长度需要按照定义的字节顺序(请参阅)。使用此协议的每个人都知道先读取长度前缀,然后再读取那么多字节。在网络上定义了“块”之后,您可以在块的内容上放置一个标题。可能是消息类型(ACK、NAK、Data等),后跟一些内容
- ASCII换行符分隔。每条消息都是一行ASCII(或UTF8等)文本。它以换行结束。行的换行符结尾与上面的块的长度前缀的作用相同。然后定义每行中的内容(如空格或逗号分隔的ASCII/UTF8/任何字段)。在其中的某个地方,您可以定义数据的外观、确认等
我相信您可以想出其他想法,但这是基本的工作:在TCP的字节流之上定义应用程序级协议。因此,如果我知道没有默认的“ACK”消息,我必须创建一条消息,并在数据字段中创建我自己的“ACK”。TCP协议中内置了一些低级ACK。但这仅限于两台主机上的操作系统级TCP实现之间。这对于应用程序级确认交换的好坏是没有用的。TCP是一个字节流——仅此而已。甚至没有“消息”这样的东西,更不用说“默认确认消息”。您必须在TCP字节流之上构建任何更高级别的协议。