当前位置 : 主页 > 大数据 > 区块链 >

grpc-go使用教程之helloworld

来源:互联网 收集:自由互联 发布时间:2021-06-22
protobuf的安装 github上下载一个cpp包:http s: //github. com /google/protobuf/releases make make install安装即可 google的grpc-go使用教程 github地址:https://github.com/grpc/grpc-go 使用之前请配置好go环境和gop

protobuf的安装

github上下载一个cpp包:https://github.com/google/protobuf/releases make make install安装即可

google的grpc-go使用教程

github地址:https://github.com/grpc/grpc-go

使用之前请配置好go环境和gopath路劲

helloworld教程:

1、首先安装proto文件生成go文件的插件(Install the protoc Go plugin)

go get -u github.com/golang/protobuf/protoc-gen-go 

helloworld.proto文件

syntax = "proto3"; //package helloworld; // The greeting service definition. service Greeter { // Sends a greeting rpc SayHello (HelloRequest) returns (HelloReply) {} } // The request message containing the user's name. message HelloRequest { string name = 1; } // The response message containing the greetings message HelloReply { string message = 1; } 

2、利用命令生成pb.go文件.

protoc -I . helloworld.proto --go_out=plugins=grpc:.

[root@localhost chenxun]# ll total 12 -rw-r--r--. 1 root root 5111 Apr 20 09:28 helloworld.pb.go -rw-r--r--. 1 root root  515 Apr 20 09:24 helloworld.proto [root@localhost chenxun]#  

3 、server.go

 package main /* * * Copyright 2015 gRPC authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ //go:generate protoc -I ../helloworld --go_out=plugins=grpc:../helloworld ../helloworld/helloworld.proto import ( "log" "net" "golang.org/x/net/context" "google.golang.org/grpc" "google.golang.org/grpc/reflection" pb "google.golang.org/grpc/examples/helloworld/helloworld" ) const ( port = ":50051" ) // server is used to implement helloworld.GreeterServer. type server struct{} // SayHello implements helloworld.GreeterServer func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) { 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) } s := grpc.NewServer() pb.RegisterGreeterServer(s, &server{}) // Register reflection service on gRPC server. reflection.Register(s) if err := s.Serve(lis); err != nil { log.Fatalf("failed to serve: %v", err) } } 

4.client.go

/* * * Copyright 2015 gRPC authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package main import ( "log" "os" "time" "golang.org/x/net/context" "google.golang.org/grpc" pb "google.golang.org/grpc/examples/helloworld/helloworld" ) const ( address = "192.168.200.8:50051" defaultName = "world" ) func main() { // Set up a connection to the server. conn, err := grpc.Dial(address, grpc.WithInsecure()) if err != nil { log.Fatalf("did not connect: %v", err) } defer conn.Close() c := pb.NewGreeterClient(conn) // Contact the server and print out its response. name := defaultName if len(os.Args) > 1 { name = os.Args[1] } ctx, cancel := context.WithTimeout(context.Background(), time.Second) defer cancel() r, err := c.SayHello(ctx, &pb.HelloRequest{Name: name}) if err != nil { log.Fatalf("could not greet: %v", err) } log.Printf("Greeting: %s", r.Message) } 

5.执行

2018/04/20 10:31:12 Greeting: Hello world

网友评论