咨询下rpc.Dial("tcp", "127.0.0.1:1899")

hellsam · 2020-12-17 15:15:55 · 765 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2020-12-17 15:15:55 的主题,其中的信息可能已经有所发展或是发生改变。

咨询下rpc.Dial("tcp", "127.0.0.1:1899") conn.Call() 这个如何弄超时呢, Call调有时候对方不存在或则无法连接 要等好久才返回错误。想自己控制时间返回


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

765 次点击  
加入收藏 微博
1 回复  |  直到 2020-12-18 09:17:12
zzustu
zzustu · #1 · 4年之前
// Dial connects to an RPC server at the specified network address.
func Dial(network, address string) (*Client, error) {
    conn, err := net.Dial(network, address)
    if err != nil {
        return nil, err
    }
    return NewClient(conn), nil
}

这是go标准库提供的Dial源码,确实没有办法传超时时间,但是实现非常简单,所以稍微改造一下就能控制超时, 自己写一个Dial的方法如下:

func DialWithTimeout(network, address string, timeout time.Duration) (*rpc.Client, error) {
    conn, err := net.DialTimeout(network, address, timeout)
    if err != nil {
        return nil, err
    }
    return rpc.NewClient(conn), nil
}
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传