首页 > 解决方案 > goLang 中的 UDP 数据包创建

问题描述

我正在尝试创建一个原始 UDP 数据包。UDP数据包由3部分组成:

  1. 消息 ID
  2. 有效载荷
  3. 校验和

Message-ID定义为:前4个字节是客户端IP,后2个字节是端口号,后2个字节是随机生成的,后8个字节是请求产生的时间(例如,以纳秒为单位) . 或者,可以使用 UUID。我的问题是:Golang 中是否有类似将 IP 地址转换为字节数组的库?如果是这样,我假设要在我的情况下创建 MessageID,我需要有 4 个字节的数组对应于 IP 地址、2 个字节的端口号、2 个字节的随机生成数和 8 个字节的长时间戳。此后,我会将它们全部合并到一个数组中,形成 16 字节长的 Message-ID。请帮助我知道我的理解是否正确?

我非常感谢您的支持。

标签: go

解决方案


Golang 中是否有类似将 IP 地址转换为字节数组的库?

IP 地址的 Go 类型是net.IP。net.IP 是一个字节片。

使用内置复制函数从字节切片初始化字节数组

 var myArray [4]byte
 copy(myArray[:], myIPAddress)

推荐阅读