Golang rpc调用解决了意外的EOF



在客户端代码中执行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{}
}

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

最新更新