日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

golang grpc demo

發布時間:2024/9/15 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 golang grpc demo 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.grpm 安裝:

git clone https://github.com/grpc/grpc-go.git $GOPATH/src/google.golang.org/grpc

2.proto, protoc-gen-go 安裝:

go get -u github.com/golang/protobuf/{proto,protoc-gen-go}

3.protoc 安裝:

git clone https://github.com/protocolbuffers/protobuf.git cd $GOPATH/src/github.com/protocolbuffers/ ./autogen.sh ./configure make -j12 make install

4.go-genproto 安裝(運行時需要的依賴,下載完移動到相應的目錄里面)

git https://github.com/googleapis/go-genproto.git

5.protoc?查看版本:

[root@wangjq]# protoc --version libprotoc 3.10.0

?6.目錄結構:

[root@wangjq demo]# tree . ├── client │?? └── main.go ├── example │?? └── data.proto └── server└── main.go3 directories, 4 files

7.data.proto 內容如下

syntax = "proto3"; //指定proto版本 package proto;//定義請求結構 message HelloRequest{string name=1; }//定義響應結構 message HelloReply{string message=1; }//定義Hello服務 service Hello{//定義服務中的方法 rpc SayHello(HelloRequest) returns (HelloReply){} }

8.生成 data.pb.go 文件

protoc -I . --go_out=plugins=grpc:. ./data.proto

9.服務端代碼

package mainimport (pb "demo/example""fmt""golang.org/x/net/context""google.golang.org/grpc""net" )const (//gRPC服務地址Address = "127.0.0.1:50052" )//定義一個helloServer并實現約定的接口 type helloService struct{}func (h helloService) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) {resp := new(pb.HelloReply)resp.Message = "hello" + in.Name + "." return resp, nil }var HelloServer = helloService{}func main() {listen, err := net.Listen("tcp", Address)if err != nil {fmt.Printf("failed to listen:%v", err)}//實現gRPC Servers := grpc.NewServer()//注冊helloServer為客戶端提供服務pb.RegisterHelloServer(s, HelloServer) //內部調用了s.RegisterServer()fmt.Println("Listen on" + Address)s.Serve(listen) }

10.客戶端代碼

package mainimport (pb "demo/example""fmt""golang.org/x/net/context""google.golang.org/grpc" )const (Address = "127.0.0.1:50052" )func main() {//連接gRPC服務器conn, err := grpc.Dial(Address, grpc.WithInsecure())if err != nil {fmt.Println(err)} defer conn.Close()//初始化客戶端c := pb.NewHelloClient(conn)//調用方法reqBody := new(pb.HelloRequest)reqBody.Name = "gRPC"r, err := c.SayHello(context.Background(), reqBody)if err != nil {fmt.Println(err)}fmt.Println(r.Message) }

11.運行測試

服務端運行: [root@wangjq demo]# go run server/main.go Listen on127.0.0.1:50052客戶端運行: [root@wangjq demo]# go run client/main.go hellogRPC.

?

轉載于:https://www.cnblogs.com/wangjq19920210/p/11572283.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的golang grpc demo的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。