在客户端代码中执行Call函数后,出现意外的EOF错误。我有一个监听8081端口的tcp服务器,并为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{}
}