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

时间:2018-11-22 10:18:29

标签: go tcp telnet

我有一个工业传感器,该传感器连接到Interface Module,可通过--The following coding is used to assign a name to object "person" person = people.name("Peter") printAreeter 向最终用户提供信息。

Telnet配置

端口:10001

数据格式:小尾数

数据payload

telnet

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

我正在尝试通过更多实际示例来学习golang,并且我朝着以下方向思考:

  1. 创建一个TCP服务器以侦听传感器的接口模块IP和端口号
  2. 提取有效载荷并将其作为单独的参数(例如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 .. .. preamble等)打印出来作为初学者的任务

我浏览了一些有关TCP服务器/客户端创建的博客文章,但是它们仅处理其有效负载中的article number。我如何提取如上所述的面向 byte 的自定义有效载荷?

P.S。

我可以理解,这可以通过python中的stringstruct.pack来实现,因此可以理解一些相关性

1 个答案:

答案 0 :(得分:1)

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

我会将该表转换为一个结构,然后使用编码/二进制模块将其读入。有关示例,请参见https://golang.org/pkg/encoding/binary/#example_Read

“根据连接的传感器,所有测量值都以Int32,Uint32或Float的形式传输”,可能最容易将它们获取为uint32,然后稍后将其转换