2010-12-14 60 views
0

我有一个设备发送数据到服务器。“确定”消息的外观如何?

  Data 
[ Client ] == > [ Server ] 

我要回一个邮件的服务器上验证后:

  OK 
[ Client ] < == [ Server ] 

有没有一个标准的“OK”的消息返回?还有一个“错误”消息?它看起来像什么? (例如“:0011”,“:110F”)

回答

1

你必须设计一个应用级协议。 TCP是一个字节流,所以即使你的客户端 - >服务器部分中的“数据”定义也需要一些协议,以便接收者能够知道什么字节组成数据(什么时候停止阅读)。

几个常见类型的协议是......

  • 长度分隔块。每条消息都以16或32位长度前缀开始。接下来有很多字节。长度需要按照定义的字节顺序(请参见htons, ntohs, etc)。每个使用此协议的人都知道读取长度前缀,然后读取许多字节。在网络上定义了“块”之后,您可能会在块的内容上添加一个标题。也许消息类型(ACK,NAK,数据等)后跟一些内容。
  • ASCII换行符分隔。每条消息都是一行ASCII(或UTF8等)文本。它以换行符结束。换行的换行结束符与上面的块的长度前缀具有相同的作用。然后定义每行中的内容(如空格或逗号分隔的ASCII/UTF8 /任何字段)。在某处,你可以定义数据看起来像ACK,等等。

我敢肯定,你可以想出其他的想法,但这是基本的工作:在TCP的顶部定义你的应用层协议字节流。

+0

因此,如果我了解“ACK”没有默认消息,则必须创建消息并在数据字段中创建我自己的“ACK”。 – BrunoLM 2010-12-15 16:01:22

+0

TCP协议中内置了一些低级ACK。但这只是在两台主机上的操作系统级别的TCP实现之间。这对于应用程序级别确认交换的优劣是没有用的。 TCP是一个字节流 - 仅此而已。甚至没有“消息”这样的东西,更不用说“默认的ACK消息”。您必须在TCP字节流之上构建任何更高级别的协议。 – 2010-12-15 16:29:52