使用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,我的思考方向如下:
序言
,文章编号
等,这是初学者的任务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
..
..