使用golang提取TCP负载中的自定义数据格式

使用golang提取TCP负载中的自定义数据格式,go,tcp,telnet,Go,Tcp,Telnet,我有一个工业传感器,它连接到通过telnet向最终用户提供信息的 Telnet配置 港口:10001 数据格式:Little Endian 数据 这应该在TCP头(如果我理解正确)之后可用,即有效负载 我正在尝试用更多的实际例子来学习golang,我的思考方向如下: 创建一个TCP服务器,用于侦听传感器的接口模块IP和端口号 提取有效负载并将其作为单独的参数打印出来,如序言,文章编号等,这是初学者的任务 我已经看过一些关于TCP服务器/客户端创建的博客文章,但它们只在有效负载中处理string。

我有一个工业传感器,它连接到通过
telnet
向最终用户提供信息的

Telnet配置 港口:10001

数据格式:Little Endian

数据 这应该在TCP头(如果我理解正确)之后可用,即有效负载

我正在尝试用更多的实际例子来学习golang,我的思考方向如下:

  • 创建一个TCP服务器,用于侦听传感器的接口模块IP和端口号
  • 提取有效负载并将其作为单独的参数打印出来,如
    序言
    文章编号
    等,这是初学者的任务
  • 我已经看过一些关于TCP服务器/客户端创建的博客文章,但它们只在有效负载中处理
    string
    。如何提取如上所述的面向字节的定制负载

    附笔。
    我可以理解,在python中,这可能是通过
    struct.pack
    struct.unpack
    实现的,因此,我们希望您能够理解一些相关关系

    在上面链接的pdf文档的第6.2节中,有一个表列出了您似乎在问题中列出的数据

    我将把这个表转换成一个结构,然后用编码/二进制模块读入它。有关相关示例,请参见

    “根据所连接的传感器,所有测量值均以Int32、Uint32或Float的形式传输”,可能最容易将其转换为Uint32,然后再进行转换

    Preamble - 32 bit
    Article number - 32 bit
    Serial number - 32 bit
    Channels - 64 bit
    Status - 32 bit
    Frame number M / - 16 bit/ 16 bit
    bytes per frame
    Measuring value counter - 32 bit
    Measuring value frame 1 - N * 32 bit
    ..
    ..