美文网首页
go实现rpc

go实现rpc

作者: 耍帅oldboy | 来源:发表于2022-10-12 11:09 被阅读0次

1、服务端

package main

import (
    "fmt"
    "net"
    "net/http"
    "net/rpc"
)

type Server struct {
}

type Req struct {
    NumOne int
    NumTow int
}

type Res struct {
    Num int
}

func (s *Server) Add(req Req, res *Res) error {
    res.Num = req.NumOne + req.NumTow
    return nil
}

func main() {
    rpc.Register(new(Server))
    rpc.HandleHTTP()
    l, err := net.Listen("tcp", ":8888")
    if err != nil {
        fmt.Println(err)
        return
    }
    http.Serve(l, nil)
}

2、客户端

package main

import (
    "fmt"
    "net/rpc"
)

type Req struct {
    NumOne int
    NumTow int
}

type Res struct {
    Num int
}

func main() {
    req := Req{
        NumOne: 1,
        NumTow: 2,
    }
    var res Res
    client, err := rpc.DialHTTP("tcp", "127.0.0.1:8888")
    if err != nil {
        fmt.Println(err)
        return
    }
    // 同步调用
    //client.Call("Server.Add", req, &res)
    //fmt.Println(res)
    //异步调用
    ca := client.Go("Server.Add", req, &res, nil)
    for {
        select {
        case <-ca.Done:
            fmt.Println(res)
            return
        default:
            fmt.Println("处理别的任务")
        }
    }

}


相关文章

  • go实现rpc

    1、服务端 2、客户端

  • Micro (3)

    go-micro RPC框架源码分析 最近由于辞职,心想着要好好研究下RPC的实现,于是乎,就拿go-micro开...

  • go实现rpc服务

    Server端 client端 改造成json协议通信server client

  • Go RPC

    Go RPC Go 原生的网络RPC需要关联Go的net框架和库内容(net,tpc,http等等) 理论 总体来...

  • golang jsonrpc

    Go语言的rpc框架有两个比较有特色的设计: RPC打包时可以通过插件实现自定义编码和解码; RPC建立在抽象的i...

  • Go语言实现RPC

    RPC定义,来源于百度百科 RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从...

  • grpc

    Go的RPC标准库 简单使用 Go语言标准库(net/rpc)的RPC规则:方法只能有两个可序列化的参数,其中第二...

  • golang中的net/rpc包

    本文先介绍RPC,然后go原生对RPC的使用,之后是介绍go语言中有哪些RPC框架以及一些其他常见的框架,最后是探...

  • go-zero开发-rpc

    通过修改go-zero rpc的模板 下方指令用于生成rpc服务

  • 【golang微服务】RPC原理与Go RPC

    本文介绍了RPC的概念以及Go语言中标准库rpc的基本使用。 什么是RPC RPC(Remote Procedur...

网友评论

      本文标题:go实现rpc

      本文链接:https://www.haomeiwen.com/subject/pgyzartx.html