golang grpc服务端客户端简单源码实现
发布时间:2020-12-16 18:19:18 所属栏目:大数据 来源:网络整理
导读:协议 hello.proto 文件: syntax = "proto3"; package hello; message HelloRequest { string greeting = 1; } message HelloResponse { string reply = 1; repeated int32 number = 4; } service HelloService { rpc SayHello(HelloRequest) returns (Hello
协议 hello.proto 文件: syntax = "proto3"; package hello; message HelloRequest { string greeting = 1; } message HelloResponse { string reply = 1; repeated int32 number = 4; } service HelloService { rpc SayHello(HelloRequest) returns (HelloResponse) {} } 服务端代码: // test_grpc project test_grpc.go package main import ( "flag" "fmt" "log" "net" pb "proto" context "golang.org/x/net/context" "google.golang.org/grpc" ) type server struct{} func (s *server) SayHello(ctx context.Context,in *pb.HelloRequest) (*pb.HelloResponse,error) { //fmt.Println("hello") if in.Greeting == "helloworld" { return &pb.HelloResponse{in.Greeting,[]int32{1,2}},nil } else { return &pb.HelloResponse{"fjgui",[]int32{666}},nil } //return &pb.HelloResponse{"fjgui",nil } func main() { port := flag.Int("port",8000,"the server") lis,err := net.Listen("tcp",fmt.Sprintf("127.0.0.1:%d",*port)) if err != nil { log.Fatalf("failed to listen: %v",err) } s := grpc.NewServer() pb.RegisterHelloServiceServer(s,&server{}) s.Serve(lis) }客户端代码:// test_grpc_client project test_grpc_client.go package main import ( "flag" "fmt" "log" "os" pb "proto" context "golang.org/x/net/context" "google.golang.org/grpc" ) func main() { address := flag.String("addressfjgui","127.0.0.1:8000","The server address in the format of host:port") conn,err := grpc.Dial(*address,grpc.WithInsecure()) if err != nil { log.Fatalf("did not connect:%v",err) } defer conn.Close() c := pb.NewHelloServiceClient(conn) req_greeting := "helloworld" if len(os.Args) > 1 { req_greeting = os.Args[1] } r,err := c.SayHello(context.Background(),&pb.HelloRequest{req_greeting}) fmt.Println(req_greeting) if err != nil { log.Fatalf("could not greet: %v",err) } log.Printf("Greeting: %v",r.Reply) log.Printf("Greeting: %v",r.Number) } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |