是什么原因导致客户端。调用rpc在Go(golang)中返回错误?

Ped*_*ori 5 rpc go

什么时候c.Call(...)返回非nil值?

c.Call(...)发生网络故障(数据包丢失或超时或类似情况)时,唯一可以返回错误吗?

如果服务器srv崩溃,会c.Call(...)返回错误吗?

具体来说,能否c.Call(...)在请求成功到达之后srvrpcname处理程序函数返回之前返回错误?

import (
    "net/rpc"
    "fmt"
)

func call(srv string, rpcname string, args interface{}, reply interface{}) bool {
    c, errx := rpc.Dial("unix", srv)
    if errx != nil {
        return false
    }
    defer c.Close()

    err := c.Call(rpcname, args, reply)
    if err == nil {
        return true
    }

    fmt.Println(err)
    return false
}
Run Code Online (Sandbox Code Playgroud)