GO语言实现一个JSON格式的rpc
结构
服务端代码
package main import ( "fmt" "net" "net/rpc" "net/rpc/jsonrpc" ) type HelloServer struct { } func (p *HelloServer) Hello(request string, reply *string) error { *reply = fmt.Sprintf("Hello %s", request) return nil } func main() { listen, _ := net.Listen("tcp", ":1234") _ = rpc.RegisterName("HelloServer", &HelloServer{}) for { conn, _ := listen.Accept() go rpc.ServeCodec(jsonrpc.NewServerCodec(conn)) } }
客户端代码
package main import ( "fmt" "net" "net/rpc" "net/rpc/jsonrpc" ) func main() { conn, err := net.Dial("tcp", "localhost:1234") if err != nil { fmt.Println("连接失败", err) return } var reply string client := rpc.NewClientWithCodec(jsonrpc.NewClientCodec(conn)) err = client.Call("HelloServer.Hello", "张三", &reply) if err != nil { fmt.Println("调用失败", err) return } fmt.Println(reply) }
发表评论