packagemainimport("context""flag""fmt""log""net""google.golang.org/grpc""google.golang.org/grpc/reflection"ecpb"google.golang.org/grpc/examples/features/proto/echo"hwpb"google.golang.org/grpc/examples/helloworld/helloworld")varport=flag.Int("port",50051,"the port to serve on")// hwServer is used to implement helloworld.GreeterServer.
typehwServerstruct{hwpb.UnimplementedGreeterServer}// SayHello implements helloworld.GreeterServer
func(s*hwServer)SayHello(ctxcontext.Context,in*hwpb.HelloRequest)(*hwpb.HelloReply,error){return&hwpb.HelloReply{Message:"Hello "+in.Name},nil}typeecServerstruct{ecpb.UnimplementedEchoServer}func(s*ecServer)UnaryEcho(ctxcontext.Context,req*ecpb.EchoRequest)(*ecpb.EchoResponse,error){return&ecpb.EchoResponse{Message:req.Message},nil}funcmain(){flag.Parse()lis,err:=net.Listen("tcp",fmt.Sprintf(":%d",*port))iferr!=nil{log.Fatalf("failed to listen: %v",err)}fmt.Printf("server listening at %v\n",lis.Addr())s:=grpc.NewServer()// Register Greeter on the server.
hwpb.RegisterGreeterServer(s,&hwServer{})// Register RouteGuide on the same server.
ecpb.RegisterEchoServer(s,&ecServer{})// Register reflection service on gRPC server.
reflection.Register(s)iferr:=s.Serve(lis);err!=nil{log.Fatalf("failed to serve: %v",err)}}