2017-02-04 2 views
0

go lang grpc 서버를 구축하기 위해이 example과 협력하고 있습니다.golang + grpc : GrpcServer 서비스를 등록하십시오.

그러나 내가 모르는 뭔가가있어 보인다 - grpc 서버에 서비스를 등록의 위상이 예에서하지만 내 protoc 출력이 수출에는 등록 방법이 없습니다 :

s := grpc.NewServer() 
pb.RegisterGreeterServer(s, &server{}) 

가되었다 거기 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) 
    } 
} 
+3

AFAIK는 grpc 당신은 플러그인 로 컴파일해야합니다'protoc --go_out = plugins = grpc :. * .proto' https://github.com/golang/protobuf#grpc-support –

답변

2

내가 잘못된 방법으로 그것을 컴파일하고있어 있습니까?

protoc --go_output=. *.proto

예. comment에서 Wendy Adi으로 지적한대로 protoc의 명령 줄 옵션은 --go_out이 아니고 --go_output이 아니어야하며 plugins=grpc 옵션도 필요합니다 (codegen.sh script에 따라).

cd $GOPATH/src/google.golang.org/grpc/examples/helloworld 
mv helloworld.pb.go helloworld.pb.go.orig 
protoc --go_out=plugins=grpc:. helloworld.proto 

greeter_server가 제대로 후 컴파일한다 : 당신은 HelloWorld 예제에서 .pb.go 파일을 다시 생성 protoc을 사용할 수 있어야 이동에 대한

cd ../greeter_server 
go build .