摘要:云计算 本篇内容介绍了“go rpc的基本使用方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习
云计算
本篇内容介绍了“go rpc的基本使用方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
服务端
package mainimport ("fmt""net""net/rpc""net/rpc/jsonrpc""os""os/exec""reflect""time""github.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 ("fmt""log""net/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的基本使用方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注新网,小编将为大家输出更多高质量的实用文章!
相关文章推荐
虚拟主机的专业参数,分别都是什么意思?2022-09-09
中非域名注册规则是怎样的?注册域名有什么用处? 2022-01-10
HostEase新年活动促销 美国/香港主机全场低至五折2021-12-28
HostGator下载完整备份教程分享2021-12-28
Flink中有界数据与无界数据的示例分析2021-12-28