繁体   English   中英

C处理多种类型的UDP数据包

[英]C Handling multiple types of UDP packets

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

套餐A: 整数| 字符b | int c |

套餐B:| 短整数d | 诠释| 字符f |

等等。

我的问题是,考虑到我正在接收多种类型的消息,如何协调正在发送的内容和正在阅读的内容?

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

另外,如果选择后者,则每次都保证包的长度是预期的吗?

编辑:

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

使用包含魔术字和定义该类型的代码的标头。 这样,您可以确保它是针对您的应用程序的,并确定要使用的正确解析器。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM