zoukankan      html  css  js  c++  java
  • 7.11 json rpc

    package main
    
    import (
    	"log"
    	"net"
    	"net/rpc"
    	"net/rpc/jsonrpc"
    )
    
    type Args struct {
    	A, B int
    }
    
    type Result int
    
    type RpcServer struct{}
    
    func (t RpcServer) Add(args *Args, result *Result) error {
    	log.Printf("Adding %d to %d
    ", args.A, args.B)
    	*result = Result(args.A + args.B)
    	return nil
    }
    
    const addr = ":7070"
    
    func main() {
    	go createServer(addr)
    	client, err := jsonrpc.Dial("tcp", addr)
    	if err != nil {
    		panic(err)
    	}
    	defer client.Close()
    	args := &Args{
    		A: 2,
    		B: 3,
    	}
    	var result Result
    	err = client.Call("RpcServer.Add", args, &result)
    	if err != nil {
    		log.Fatalf("error in RpcServer", err)
    	}
    	log.Printf("%d+%d=%d
    ", args.A, args.B, result)
    }
    
    func createServer(addr string) {
    	server := rpc.NewServer()
    	err := server.Register(RpcServer{})
    	if err != nil {
    		panic(err)
    	}
    	l, e := net.Listen("tcp", addr)
    	if e != nil {
    		log.Fatalf("Couldn't start listening on %s errors: %s", addr, e)
    	}
    	for {
    		conn, err := l.Accept()
    		if err != nil {
    			log.Fatal(err)
    		}
    		go server.ServeCodec(jsonrpc.NewServerCodec(conn))
    	}
    }
    
    /*
    
    2018/03/24 00:03:27 Adding 2 to 3
    2018/03/24 00:03:27 2+3=5
    
     */
    
    
    
  • 相关阅读:
    SQL server 笔记8
    SQL server 笔记7
    SQL server 笔记6
    SQL server的一些函数即笔记5
    SQL server 练习查询45题(18-45)及笔记4
    SQL server 练习查询45题(1-17)及笔记 3
    SQL server 学习笔记2
    SQL server 学习笔记
    C#复习笔记
    学习递归笔记
  • 原文地址:https://www.cnblogs.com/zrdpy/p/8635887.html
Copyright © 2011-2022 走看看