协议
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) }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。