加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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)
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读