在C中格式化和解析自定义协议标头的位操作

问题描述

我正在实现一个自定义网络协议,该协议位于应用程序和传输层(UDP)之间。该协议将应用程序层数据拆分为较小的块(数据包),并使用一些标头字段封装它们。 协议的标题如下所示(让我们暂时忽略每个字段的含义):

 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |Ver|  Opt Len  |O|C|    Rsvd.  |          Protocol Type        |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Ver是2位,Opt Len是6位,OC都是1位,Rsvd是6位,{{1} }是16位。假设我有每个字段所需的值。

我将如何在C中构建此标头字符串? 我正在考虑使用位移运算符,但不确定如何操作。

此外,如果我接收到该协议的数据包(带有这些标头字段)作为字符串。如何解封装该数据包并获取标头字段的所有值?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...