温馨提示  2024年 6月我们已经停止开发者板块文章内容更新,谢谢来访。存档数据
知识 2023-08-21 38 次阅读

go rpc的基本使用方法

    云计算

本篇内容介绍了“go rpc的基本使用方法”的有关知识,在实际案例的操作过程中,许多人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

服务端

package mainimport (fmtnetnet/rpcnet/rpc/jsonrpcosos/execreflecttimegithub.com/agiledragon/gomonkey)type mock struct {}func (m *mock) mockfunc(name string, reply *int) error {gomonkey.applymethod(reflect.typeof(&exec.cmd{}), output, func(c *exec.cmd) ([]byte, error) {return []byte(c.string()), nil})*reply = 1000fmt.println(name=>, name)return nil}func test() {cmd := &exec.cmd{}b, err := cmd.output()fmt.println(b, err)}func main() {go a()time.sleep(time.minute)}func a() {mock := new(mock)rpc.register(mock)tcpaddr, err := net.resolvetcpaddr(tcp, :1234)if err != nil {fmt.println(fatal error , err.error())os.exit(1)}listener, err := net.listentcp(tcp, tcpaddr)if err != nil {fmt.println(fatal error , err.error())os.exit(1)}for {conn, err := listener.accept()if err != nil {continue}jsonrpc.serveconn(conn)}}

客户端

package mainimport (fmtlognet/rpc/jsonrpc)func main() {client, err := jsonrpc.dial(tcp, 127.0.0.1:1234)if err != nil {log.fatal(dialing:, err)}var reply interr = client.call(mock.mockfunc, exec.cmd, &reply)if err != nil {log.fatal(arith error:, err)}fmt.println(reply)}

“go rpc的基本使用方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注名翠软件,小编将为大家输出更多高质量的实用文章!