0

我正在编写一个侦听传入 UDP 数据包的应用程序。有可能接收到许多不同类型的数据包。例如,数据包可以这样定义,

套餐一:| 诠释一个 | 字符 b | 诠释 c |

套餐 B:| 短整数 d | 情报 | 字符 f |

等等。

我的问题是,鉴于我收到多种类型的消息,有什么好方法可以协调发送的内容与我正在阅读的内容?

如我所见,可以在每条消息的开头添加一个“标头”,定义其类型,或者如果我知道每个数据包的大小,我可以读取消息长度并将其与我列出的内容进行比较。

另外,如果后者是一个选项,是否每次都保证数据包是预期的长度?

编辑:

我还可以看到仅使用数据包长度可能会出现问题的地方,因为可能有多个相同长度的消息类型。

4

1 回答 1

3

使用包含魔术词和定义类型的代码的标题。这样您就可以确保它是为您的应用程序设计的,并确定要使用的正确解析器。

序列号和时间戳也可用于检测丢失的数据包和乱序到达的数据包。这些是 UDP 遇到的常见问题。

于 2013-05-08T18:33:47.357 回答