【问题标题】:Golang rpc call resolve unexpected EOFGolang rpc 调用解决了意外的 EOF
【发布时间】:2020-11-29 03:33:01
【问题描述】:

在客户端代码中执行 Call 函数后出现意外的 EOF 错误。我有一个 tcp 服务器正在侦听端口 8081,并为 RPC 请求和响应类型定义了自定义格式。

客户端代码

    c, err := rpc.Dial("tcp", "127.0.0.1:8081")
    if err != nil {
        fmt.Fprintf(w, "Tcp Connection Error")
        return
    }
    defer c.Close()
    response := new(Result)
    err = c.Call("Profile.Manage", msg, response)
    if err != nil {
        fmt.Println(err)
    } 

服务器代码

    handleobj := login_change.NewProfile()
    rpc.Register(handleobj)
    PORT := "127.0.0.1:8081"
    l, err := net.Listen("tcp", PORT)
    if err != nil {
            fmt.Println(err)
            return
    }
    defer l.Close()
    rpc.Accept(l)

通用包

type Profile struct{}

func (h *Profile) Manage(b Msgobject, res *Result) (err error) {
    res.Message = "Control reached"
    return nil
}

func NewProfile() *Profile {
    return &Profile{}
}

【问题讨论】:

    标签: go tcp rpc tcpclient


    【解决方案1】:

    现在已经解决了,我实际上是在尝试对一个由不同进程初始化的变量执行操作,从而导致了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-18
      • 2014-11-09
      • 2013-04-25
      相关资源
      最近更新 更多