猿问

golang :来自 ioutil.ReadAll() 的网络响应为空,连接由对等方重置

我正在尝试测试从设备仿真器执行单个寄存器的简单 TCP MODBUS 读取。运行代码时,它显示 0 字节的响应,我收到消息“对等方重置连接”。关于为什么它不起作用的任何想法?


更新,我的请求不正确,正确的 MODBUS TCP 轮询代码是:


package main


import (

    "fmt"

    "net"

)


// TCP MODBUS client

func main() {

    conn, err := net.Dial("tcp", "192.168.98.114:502")

    if err != nil {

        fmt.Println(err)

    }

    numRegs := 1

    # make a MODBUS TCP request (be careful, the format is different to MODBUS serial)

    request := []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00, 0x01, 0x00, 0x01}

    n, err := conn.Write(request)

    if err != nil {

        fmt.Println(err)

    }

    expectedResponseLen := 5 + 2 * numRegs

    response := make([]byte, expectedResponseLen)

    n, err = conn.Read(response)

    conn.Close()

    if err != nil {

        fmt.Println(err)

    }

    for i := 0; i < n; i++ {

        fmt.Printf("%02x ", response[i])

    }

    fmt.Println("\n")

}


慕标琳琳
浏览 441回答 1
1回答
随时随地看视频慕课网APP

相关分类

Go
我要回答