将 https://github.com/Google/go-genproto 放到 $GOPATH/src/Google.golang.org/genproto将 https://github.com/grpc/grpc-go 放到 $GOPATH/src/Google.golang.org/grpc将 https://github.com/golang/text 放到 $GOPATH/src/golang.org/x/text将 https://github.com/golang/net 放到 $GOPATH/src/golang.org/x/net然后cd $GOPATH/src/ go install Google.golang.org/grpc
PS:protobuf的安装不做介绍。
二、grpc的helloworld示例服务端:
package mainimport ( "context" "log" "net" "Google.golang.org/grpc" pb "Google.golang.org/grpc/examples/helloworld/helloworld")const ( port = ":8080")// server用于实现helloworld.GreeterServertype server struct{}// SayHello实现了helloworld.GreeterServerfunc (s *server) SayHello(ctx context.Context,in *pb.HelloRequest) (*pb.HelloReply,error) { log.Printf("Received: %v",in.name) return &pb.HelloReply{Message: "Hello " + in.name},nil}func main() { // 监听 lis,err := net.Listen("tcp",port) if err != nil { log.Fatalf("Failed to Listen: %v",err) } // new服务对象 s := grpc.NewServer() // 注册服务 pb.RegisterGreeterServer(s,&server{}) if err := s.Serve(lis); err != nil { log.Fatalf("Failed to serve: %v",err) }}VIEw Code
客户端:
package mainimport ( "context" "log" "time" "Google.golang.org/grpc" // 引用编译好的protobuf文件 pb "Google.golang.org/grpc/examples/helloworld/helloworld")const ( address = "localhost:8080" name = "World")func main() { // 建立与服务器的连接 conn,err := grpc.Dial(address,grpc.WithInsecure()) if err != nil { log.Fatalf("连接失败: %v",err) } defer conn.Close() // 调用protobuf的函数创建客户端连接句柄 c := pb.NewGreeterClIEnt(conn) ctx,cancel := context.WithTimeout(context.Background(),time.Second) defer cancel() // 调用protobuf的SayHello函数 r,err := c.SayHello(ctx,&pb.HelloRequest{name: name}) if err != nil { log.Fatalf("调用SayHello失败: %v",err) } log.Println(r.Message)}VIEw Code 总结
以上是内存溢出为你收集整理的Go:grpc全部内容,希望文章能够帮你解决Go:grpc所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)