proto文件:
syntax ="proto3";
option go_package="./;proto";
// 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;
}
------------------------------server-----------------------------
package main
import (
"context"
"google.golang.org/grpc"
proto "grpcdemo002/grpcl/proto"
"net"
)
type Serverstruct{}
func (s *Server)SayHello(ctxcontext.Context, in *proto.HelloRequest) (*proto.HelloReply, error){
return &proto.HelloReply{Message:in.Name+":Server"},nil
}
func main() {
g :=grpc.NewServer()
proto.RegisterGreeterServer(g,&Server{})
lis, err :=net.Listen("tcp", "0.0.0.0:50051")
if err !=nil {
panic("failed to listen:" + err.Error())
}
err = g.Serve(lis)
if err !=nil {
panic("failed to start grpc:" + err.Error())
}
}
----------------client -------------------
package main
import (
"context"
"fmt"
"google.golang.org/grpc"
"grpcdemo002/grpcl/proto"
)
func main() {
conn, err :=grpc.Dial("localhost:50051",grpc.WithInsecure())
if err !=nil {
panic(err)
}
defer conn.Close()
c :=proto.NewGreeterClient(conn)
r, err := c.SayHello(context.Background(), &proto.HelloRequest{Name:"bobby"})
if err !=nil {
panic(err)
}
fmt.Println(r.Message)
}