zoukankan      html  css  js  c++  java
  • golang学习之rpc实例

    rpc(远程过程调用),可以像调用本地程序一样调用远端服务,rpc分为http方式和tcp连接方式,使用http的rpc调用如下:

    首先是server端:

    // rpc_server project main.go
    package main
    
    import (
        "fmt"
        "net"
        "net/http"
        "net/rpc"
    )
    
    type Watcher int
    
    func (watcher *Watcher) GetInfo(arg int, result *int) error {
        *result = 1 + arg
        return nil
    }
    
    func main() {
        watcher := new(Watcher)
        rpc.Register(watcher)
        rpc.HandleHTTP()
        listener, err := net.Listen("tcp", ":8888")
        if err != nil {
            fmt.Println("监听失败,端口可能被占用")
        }
        fmt.Println("正在监听8888端口")
        go http.Serve(listener, nil)
    }

    然后是client端:

    // rpc_client project main.go
    package main
    
    import (
        "fmt"
        "net/rpc"
    )
    
    func main() {
        fmt.Println("正在链接中...")
        client, err := rpc.DialHTTP("tcp", "127.0.0.1:8888")
        if err != nil {
            fmt.Println("链接服务器失败:", err)
        }
        var reply int
        err = client.Call("Watcher.GetInfo", 1, &reply)
        if err != nil {
            fmt.Println("调用远程服务失败", err)
        }
        fmt.Println("远程服务返回结果:", reply)
    }

    调用结果:

  • 相关阅读:
    跨域请求页面跳转
    media query学习笔记
    JSONP跨域数据调用
    【转】轮询、长轮询、iframe长连接、web socket
    [转]node.js学习笔记(二)
    【转】require.js学习笔记(二)
    【转】require.js学习笔记(一)
    计算星期
    确定母亲节
    计算时钟的夹角
  • 原文地址:https://www.cnblogs.com/vipzhou/p/5661568.html
Copyright © 2011-2022 走看看