Shi*_*shi 1 go protocol-buffers grpc
我正在使用此示例来构建go lang grpc服务器。
但似乎我缺少了一些东西-在该示例中,有一个将服务注册到grpc-server的阶段,但是我的协议输出没有导出注册方法:
s := grpc.NewServer()
pb.RegisterGreeterServer(s, &server{})
Run Code Online (Sandbox Code Playgroud)
protobuf3文件的编译是否发生了变化?
我是用错误的方式编译吗?
protoc --go_output=. *.proto
以及如何使该服务适用于服务器,目前还不是:
func main() {
lis, err := net.Listen("tcp", port)
if err != nil {
log.Fatalf("failed to listen: %v", err)
}
s := grpc.NewServer()
//register should go here?!
reflection.Register(s)
if err := s.Serve(lis); err != nil {
log.Fatalf("failed to server: %v", err)
}
}
Run Code Online (Sandbox Code Playgroud)
我是用错误的方式编译吗?
protoc --go_output=. *.proto
是。正如指出的评论由温迪阿迪,命令行选项protoc应该是--go_out不--go_output和plugins=grpc选项同样也需要(根据codegen.sh脚本)。您应该可以在helloworld示例中使用它protoc来重新生成.pb.go文件:
cd $GOPATH/src/google.golang.org/grpc/examples/helloworld
mv helloworld.pb.go helloworld.pb.go.orig
protoc --go_out=plugins=grpc:. helloworld.proto
Run Code Online (Sandbox Code Playgroud)
本greeter_server应正确编译算账:
cd ../greeter_server
go build .
Run Code Online (Sandbox Code Playgroud)